The link-name rule flags links that have no accessible name, so a screen reader announces "link" – or reads out the web address – and nobody can tell where it goes. Most are icon links and image links whose image has no alt. The fix is text inside the link, an alt on the image, or an aria-label that says where the link leads.
What the rule means
Every link needs a name that tells people where it goes. For an <a href>, the name comes from the text inside it, including the alt of an image in it. The rule passes a link that gets its name from:
- text content, including the
alttext of images inside the link, aria-labeloraria-labelledby,- or a
titleattribute.
It fails a link where all of these are empty – a link wrapped around an SVG marked aria-hidden="true", around an image with no alt or with alt="", or around nothing at all. Content drawn by CSS, such as an icon font or background image, does not count. A link that is removed from both the tab order and the accessibility tree is not checked, and neither is an <a> without href, which is not a link.
The rule checks only that there is a name. "Click here", "More" and "Read more" pass – whether the text says where the link goes is a judgement, which is why the fact box above says "partly".
Who is affected
Blind people using a screen reader, who often move through a page by pulling up a list of its links: an unnamed link appears as "link" or as a long address. Voice-control users, who cannot say "click Instagram" for a link with no name. People using a braille display, where only the role shows. Empty links are among the most common failures on the web: the WebAIM Million 2026 found them on 46.3% of the top one million home pages [5].
Why the check fails
- Social media icons in the footer – an SVG or icon font and nothing else.
- Logo links in the header with an image that has no
altoralt="". - Product and teaser cards where the image is one link with no text and the title is a second link.
- Icon links in the header – cart, account, wishlist – without text.
- Empty anchors such as
<a href="#"></a>that a script fills in later, or never. - Text hidden with
display: noneon small screens, which hides it from screen readers too.
How to fix it
- For an image link, put the destination in the image's
alt– "Example Ltd – home", not "logo". - For an icon link, add visually hidden text inside the link or an
aria-labelon it, and mark the iconaria-hidden="true". - Where an image and a title link to the same place, make them one link, so there is one name and one stop in the tab order.
- Fix it in the header, footer and card components – they appear on every page.
<!-- Before: an icon link and an image link with no name -->
<a class="header-cart" href="/basket/">
<svg aria-hidden="true" width="24" height="24" viewBox="0 0 24 24"><path d="M4 4h2l3 12h10l2-8H7"/></svg>
</a>
<a class="social-link" href="https://www.instagram.com/example/">
<img src="/icons/instagram.svg" width="24" height="24">
</a>
<!-- After: aria-label names the icon link, alt names the image link -->
<a class="header-cart" href="/basket/" aria-label="Basket">
<svg aria-hidden="true" width="24" height="24" viewBox="0 0 24 24"><path d="M4 4h2l3 12h10l2-8H7"/></svg>
</a>
<a class="social-link" href="https://www.instagram.com/example/">
<img src="/icons/instagram.svg" width="24" height="24" alt="Example Ltd on Instagram">
</a>
A "Read more" link passes the rule but tells nobody which article it opens. Add the title as hidden text, so the visible word stays short and the name is unique:
<a class="teaser__more" href="/blog/accessible-forms/">
Read more<span class="visually-hidden"> about accessible forms</span>
</a>
How to test it manually
- Open the list of links with a screen reader – NVDA: Insert + F7; VoiceOver: the rotor with VO + U – and read it without looking at the page. Can you tell where each link goes?
- Look for entries that read "link", a file name or a web address: those are the unnamed links.
- Select icon and image links in your browser's accessibility inspector (Chrome, Edge, Firefox): the "Name" must not be empty.
- Look for several links with the same name, such as "Read more", that go to different places.
Related WCAG criterion
The rule is mapped to two criteria, both Level A: 2.4.4 Link Purpose (In Context), because a link with no text cannot say where it goes, and 4.1.2 Name, Role, Value, because the link, as a control, has no name. Related: 1.1.1 Non-text Content for the image inside an image link, and 2.5.3 Label in Name – an aria-label must contain the link's visible text.
How Reviseberg reports it
Reviseberg runs link-name on every crawled page at 1280px. The issue list shows the rule with its severity, WCAG criteria and level, the number of links and pages affected, and the points you get back by fixing it. The detail view gives the CSS selector, the HTML snippet and every page affected – social icons in the footer appear on every page, and one template fix clears all of them.
You can mark findings as "ignore", "can't fix" or "false positive" with a reason, for example for a third-party embed; every decision is logged. A clean result here never marks 2.4.4 or 4.1.2 as passed: whether each link text says where it goes is a person's check.