
TL;DR: An internal link with no anchor text still passes link equity, but it carries no descriptive signal to Google and no readable label to a screen reader. Every internal link needs a name: real visible text, or an alt on a linked image, or an aria-label when the link is icon-only.
What "no anchor text" actually means
This check fires on an internal link whose clickable element contains nothing readable. The href works, the click lands, but the <a> is silent: no visible word, no image alt, no label. Anchor text is the descriptive content inside a hyperlink that tells people and crawlers what sits on the other side. Strip it out and the link becomes a route with no signpost, equity flows through it but meaning does not.
It is easy to miss because the page still looks fine. The clickable region is there, the hover state works, the destination loads. The absence only shows up to a crawler reading the markup or to a screen reader trying to announce the link, both of which come up empty. That is why this issue tends to live for years in a theme before anyone notices it, and why an audit is usually how it first surfaces.
A real failing snippet, and the fix
The most common culprit is an icon-only link, a search magnifier or a cart glyph wrapped in an anchor with no words:
<!-- Fails: icon link with no readable name -->
<a href="/search/">
<svg class="icon-search" aria-hidden="true"><use href="#search"/></svg>
</a>The SVG is correctly hidden from assistive tech with aria-hidden, which leaves the link with literally nothing to announce. Crawlers log it as an outlink with an empty anchor. Give it an accessible name with aria-label:
<!-- Fixed: aria-label supplies the name -->
<a href="/search/" aria-label="Search the site">
<svg class="icon-search" aria-hidden="true"><use href="#search"/></svg>
</a>For a text link the fix is even simpler: put words between the tags. For a linked image, add a descriptive alt, which Google reads as the anchor text.
Three empty-anchor patterns and how to name each
| Pattern | Why the anchor is empty | Correct fix |
|---|---|---|
| Icon-only link (SVG / font icon) | Glyph is aria-hidden, no text | Add aria-label to the <a> |
| Image link with blank alt | Google uses image alt as anchor; it is empty | Write destination-focused alt text |
| Whole-card wrapper link | <a> wraps only empty <span>/<div> | Link the heading text, or add aria-label |
| Duplicate link, text on the sibling | Image and text are two separate links to one place | Merge into one link; alt "" on the image |
How to detect it
- Screaming Frog. After crawling, open the Outlinks tab (or Bulk Export > Links > All Outlinks) and sort by the Anchor Text column. Blank rows are your empty anchors; for image links check that the Alt Text column is also blank, which confirms there is no name from either source.
- axe DevTools. The
link-namerule flags every link with no accessible name and highlights the node, so you can see whether it needs text, alt, or a label. - View Source. Search the rendered source for anchors that open and close with nothing but tags between them, e.g.
<a hreffollowed quickly by</a>with only an<svg>,<i>, or whitespace inside. Those are the silent links.
How to fix it
- Group the flagged links by component. Icon links usually all come from one header or footer template, so one fix clears dozens of URLs.
- For text links, add concise, descriptive words between the tags that name the destination.
- For icon-only links, add an
aria-labelon the anchor and keeparia-hidden="true"on the glyph. - For image links, write
alttext describing where the link goes, not what the picture shows. - For card wrappers, either wrap only the heading in the link or add an
aria-label; avoid two links to the same URL, which bloats the link count and confuses screen-reader users. - Re-crawl and confirm the empty-anchor count and axe
link-nameviolations hit zero.
Frequently asked questions
Does an empty anchor still pass PageRank?
Yes. Link equity flows through any followed link regardless of its text. What you lose is the anchor-text relevance signal, the context that helps Google understand what the destination page is about, plus the accessibility label.
Is aria-label as good as visible text for SEO?
For accessibility, aria-label gives the link a proper accessible name. For search, visible on-page text is the stronger signal; Google leans on rendered text over ARIA. So on icon links use aria-label, but wherever a real word can be shown, show it.
My theme wraps entire cards in a link and it comes up empty. What's the cleanest fix?
Wrap only the card's heading in the anchor and let the rest of the card be non-clickable, or use one link with an aria-label. That keeps a single, well-named link instead of an empty wrapper plus duplicate inner links.
Should I worry about this on external links too?
The audit focuses on internal links because that is where you control both ends and where descriptive anchors compound across your own site. The accessibility fix, giving every link a name, applies to external links as well.
Related checks
An image link with an empty alt is the image-specific version of this problem: see Has Anchored Image with No Alt Text. The accessibility rule that governs all of these is Links Must Have Discernible Text, with a sibling for controls at Buttons Must Have Discernible Text. Once your links have names, make them good ones with Has Non-Descriptive Anchor Text and the deeper strategy in the Internal Linking Complete Guide.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







