---\ntitle: Screen reader links\ncheck: bad-anchor\nnavHidden: true\ncategory: Accessibility\nstandard: WCAG 2.0 A 4.1.2\ncreated: 2026-07-16T02:59:36Z\nupdated: 2026-08-23T19:10:16Z\n---\n\n# Screen reader links\n\nSilktide finds link elements that are malformed in ways that break them for\n - links with no readable text, links with no destination,\nand stray empty link tags left in the page.\n\nFor a link to work with assistive technologies it needs both a destination (an\nhref attribute) and something readable inside it:\n\nhtml\n<!-- Works: destination and readable text -->\n<a href=\"\/about\">About us</a>\n\n<!-- Works: an image link with alternative text -->\n<a href=\"\/apple\"><img src=\"apple.png\" alt=\"Apple\"></a>\n\n\n## Why this matters\n\nA announces each link by its\ntext. A link with a destination but no text is announced as just 'link' — the\nuser can activate it but has no idea where it leads. A link with text but no\ndestination appears clickable yet goes nowhere. Both patterns break the basic\ncontract that lets people using assistive technologies navigate a page using its\nlinks.\n\n## How to fix it\n\n1. For a link with a destination but no readable text: add text inside the\n link, or if it contains only an\n image.\n2. For a link with text but no destination: add the missing href, or if the\n element is really a target for other links to jump to, move its id onto a\n non-link element instead:\n\nhtml\n<!-- Legacy target anchor (discouraged in HTML5) -->\n<a name=\"example\"></a>\n\n<!-- Preferred: an id on a normal element -->\n<div id=\"example\">...</div>\n\n\n3. For empty <a></a> tags with no attributes at all: remove them, they serve\n no purpose. They are often left behind by editors or scripts.\n4. If the element is really a button - it triggers an action rather than\n navigating - use a <button> element, or add role=\"button\" to the\n existing tag.\n\n## How Silktide tests this\n\n1. Find every <a> element on the page and read its text (including image alternative text and text added by CSS), its href, and any id or name attributes.\n2. Flag three problem patterns:\n - A link with an href but no readable text.\n - An element with text and an id or name but no href - a target\n posing as a link, or a link missing its destination.\n - A completely empty anchor with no text, href, id, or name.\n3. Two patterns are deliberately not flagged:\n - <a> with text but no href, id, or name - HTML5 permits this as a\n 'placeholder link', commonly filled in later by\n .\n - Empty anchors with an id or name but no href - these are legacy\n jump targets, not links.\n\n## Learn more\n\n- Understanding Success Criterion 4.1.2: Name, Role, Value (WCAG 2.2)\n- H91: Using HTML form controls and links (WCAG technique)\n- Link purpose\n- Empty link\n