sfw/fix
Uncrawlable link high

Links Are Not Crawlable

Anchors with no real href can't be followed by Googlebot, so the linked pages may never be found.

What you see

Links are not crawlable
Googlebot can follow links only if they have an href attribute. 1 link found:
<a onclick="goTo('/pricing')">Pricing</a>

What’s actually happening

A Lighthouse SEO audit or a crawl flags links as uncrawlable. The culprits look clickable to a person but carry no navigable target: href="#", href="javascript:void(0)", or a bare <a> wired up with onclick. Googlebot extracts URLs from href values and ignores click handlers, so no link equity flows and pages reachable only through those controls can drop out of the index. The nav works fine for mouse users, which is exactly why it slips through review.

Common causes

  • Anchors built as buttons: href="#" or href="javascript:void(0)" with the real navigation in an onclick
  • SPA routers that intercept clicks via JS but render <a> tags without a populated href
  • <span> or <div> styled as a link and given a click listener — no anchor element at all
  • href set after page load by script, so the static HTML Googlebot first parses shows an empty or placeholder target
  • Mega-menu or accordion items where the destination lives in a data- attribute the crawler can't read

How to fix it

  1. Put a real URL in every hrefReplace href="#" and javascript: handlers with href="/pricing". The resolved value must be a normal http(s) URL — that's the only thing Googlebot follows.
  2. Use <a href> for navigation, <button> for actionsIf a click changes the route or loads a page, it's a link and needs an href. Reserve onclick-only <button> elements for in-page actions like opening a modal.
  3. Keep client-side routing on top of real hrefsIn React Router or Next.js, <Link> and <a> already emit href. Let the framework render the URL into the static markup, then enhance the click with JS — never the reverse.
  4. Re-audit after the changeRerun Lighthouse and View Source (not just the rendered DOM) to confirm the href is in the initial HTML. Then check Search Console > Pages to watch the destinations get indexed.

Stop it recurring

Lint for anchors missing a valid href in CI so a placeholder # never ships to production.

Related errors