Fix invalid links

SkillWeb & browsing

invalid-links is a skill for auditing the link elements on a web page so that search engines can crawl them. It flags anchor tags whose href values are empty, JavaScript voids, fragments without matching anchors, or missing entirely, and reports counts per type. It is useful when reviewing JavaScript-heavy SPAs where navigation may not use <a href> tags, or when checking dynamically generated links.

Available today. Use it from your connected AI after setup.

Have a page or rendered DOM whose link elements you want to audit.

Then ask your AI: use the Fix invalid links skill

What your AI can do with it

  • Parse all <a> elements on a page and extract their href attributes
  • Flag empty hrefs, href='#' with no meaningful target, and missing href attributes
  • Detect javascript: hrefs such as javascript:void(0) that crawlers cannot follow
  • Identify mailto: and tel: links, which are valid but not crawlable for page discovery
  • Find fragment-only hrefs that reference anchors not present on the page
  • Suggest fixes: real URLs in hrefs, <button> for action-only elements, meaningful fragment

Getting started

  1. Have a page or rendered DOM whose link elements you want to audit.
  2. Load the invalid-links skill into your agent setup.
  3. Ask the agent to parse all <a> elements and flag invalid href values by type.
  4. Apply the suggested fixes, such as adding real URLs or converting action-only anchors to buttons.
  5. Re-run the check to confirm the counts of invalid links have dropped.

What this skill tells your AI

The instructions your AI receives, as published by thedaviddias/front-end-checklist in skills/invalid-links/SKILL.md and read by ahel’s review.

Google can only follow links declared as valid <a href> elements with crawlable URL values. Invalid links — empty hrefs, JavaScript voids, or non-URL content — prevent PageRank from flowing to linked pages and stop Googlebot from discovering those destinations.

Quick Reference

  • Invalid <a> tags (empty href, JavaScript voids, non-URL values) are not crawlable — Googlebot cannot follow them
  • Links must use crawlable <a href='...'> elements with valid absolute or relative URLs to pass PageRank and be followed
  • JavaScript-only navigation (onClick handlers without href) is invisible to search engine crawlers

Check

Parse all <a> elements on the page. Flag links where href: (1) is empty (href='' or href='#' with no meaningful target). (2) starts with javascript: (e.g., href='javascript:void(0)'). (3) starts with mailto: or tel: — these are valid but not crawlable for page discovery. (4) contains only a fragment identifier that references an anchor not present on the page. (5) is absent entirely (<a> without any href attribute). Report the count per type.

Fix

  1. For links using href='javascript:void(0)' or href='#' as navigation triggers:
    • Add a real URL as the href value
    • Use JavaScript to enhance the navigation, not replace it
    • Before: <a href="javascript:void(0)" onclick="openModal()">View Details</a>
    • After: <a href="/products/details" onclick="openModal(event)">View Details</a>
  2. For <a> elements without href (used as button-like elements):
    • If they trigger navigation: add href
    • If they trigger actions only: change to <button> elements
  3. For empty href='': either add the correct URL or remove the <a> wrapper
  4. For href='#' anchors: use meaningful fragment IDs that reference actual page sections (href='#features' where id='features' exists)

Explain

Google's documentation states that crawlable links must be <a> tags with an href attribute containing a valid URL. Links with javascript: hrefs, empty hrefs, or no href attribute are not followed by crawlers. This means pages only reachable through invalid links are not discovered by Googlebot, and any intended PageRank flow is blocked.

Code Review

Query all <a> elements in the rendered DOM. For each, extract the href attribute. Flag: absent href, empty string, '#' only, values starting with javascript:, values starting with void. Separately flag <div>, <span>, or <button> elements with onclick navigation handlers that lack a corresponding <a href> — these are not crawlable.


For full implementation details, code examples, and framework-specific guidance, see references/rule.md.

Rule page: https://frontendchecklist.io/en/rules/seo/invalid-links

Signals

GitHub stars
74k
Forks
7k
Last commit
Aug 2026

Questions

Why are some links invisible to Googlebot?
Google can only follow links declared as valid <a href> elements with crawlable URL values. Links with javascript: hrefs, empty hrefs, or no href attribute are not followed, so destinations reachable only through them are not discovered.
What counts as an invalid link?
An <a> tag with an empty href, a '#' with no meaningful target, a javascript: value, a fragment referencing an anchor not on the page, or no href attribute at all.
Advanced
Item type
skill
Key
invalid-links
Source
github.com/thedaviddias/front-end-checklist