brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
invalid-linksUse when auditing a page's link elements for crawlability, reviewing JavaScript-heavy SPAs where navigation may not use `<a href>` tags, or checking that dynamically generated links have valid href values.
Independent GitHub snapshot · Automated classification · Original documentation governs
<a href> tags, or checking that dynamically generated links have valid href values."
metadata:
category: seo
priority: medium
difficulty: intermediate
estimatedTime: "10"
source: frontendchecklist.io
url: https://frontendchecklist.io/rules/seo/invalid-linksGoogle 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.
<a> tags (empty href, JavaScript voids, non-URL values) are not crawlable — Googlebot cannot follow them<a href='...'> elements with valid absolute or relative URLs to pass PageRank and be followedhref) is invisible to search engine crawlersParse 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.
href='javascript:void(0)' or href='#' as navigation triggers:
<a href="javascript:void(0)" onclick="openModal()">View Details</a><a href="/products/details" onclick="openModal(event)">View Details</a><a> elements without href (used as button-like elements):
<button> elementshref='': either add the correct URL or remove the <a> wrapperhref='#' anchors: use meaningful fragment IDs that reference actual page sections (href='#features' where id='features' exists)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.
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/rules/seo/invalid-links