Skip to main content

Crawlable Links.

SEO SEO Fundamentals

Links that search engines can't follow mean pages won't be discovered or indexed

What does this check test?

This check verifies that all internal links are crawlable by search engine bots. Links must use standard `<a href="/path">` elements with valid URLs. Common crawlability failures include links implemented as JavaScript click handlers (`<div onclick="navigate('/page')">`), links with `href="#"` or `href="javascript:void(0)"`, links gated behind JavaScript event listeners without an `href`, links inside `<iframe>` elements, and links loaded dynamically via AJAX that are not present in the initial HTML. Links with `rel="nofollow"` are crawlable but do not pass ranking authority.

Why does it matter?

Googlebot discovers new pages by following links from pages it has already crawled. If your internal links are not standard `<a href>` elements, Googlebot cannot follow them, and those destination pages will not be discovered or indexed. This is one of the most damaging technical SEO issues because it makes entire sections of a site invisible to search engines. Modern JavaScript frameworks often use client-side routing with `<button>` or `<div>` elements that work fine for users with JavaScript enabled, but completely break search engine crawling. Google can execute JavaScript, but it is slower, more expensive, and less reliable than following standard links.

Who is affected?

Front-end developers choosing navigation and link patterns, framework developers building routing systems, React/Next.js/Vue/Nuxt developers using router components, and SEO specialists auditing crawl reports for discovery gaps.

Where does this apply?

All navigation menus, internal links within page content, pagination links, category/tag links, sidebar links, footer links, breadcrumbs, and sitemap links. Pay special attention to SPA (single-page application) navigation, JavaScript-rendered menus, infinite scroll pagination, and dynamically loaded content sections. Mobile hamburger menus that render links only after user interaction are a common issue.

How to fix it

Always use standard anchor elements with valid `href` attributes. Ensure links are present in the server-rendered HTML. For SPAs, implement server-side rendering (SSR) or static site generation (SSG) so links exist in the initial HTML. Crawlable vs non-crawlable links:
html
<!-- Bad: Googlebot can't follow these -->
<div onclick="navigate('/pricing')">Pricing</div>
<a href="javascript:void(0)">About</a>
<button onClick="router.push('/blog')">Blog</button>

<!-- Good: standard anchor tags with href -->
<a href="/pricing">Pricing</a>
Next.js Link component (renders a crawlable `<a>`):
ts
import Link from 'next/link';

// Renders: <a href="/pricing">Pricing</a>
<Link href="/pricing">Pricing</Link>

// Pagination — use links, not buttons
<Link href="/blog?page=2">Next page</Link>
Check with `curl -s https://yoursite.com | grep '<a href'` to see what Googlebot sees. Google Search Console's URL Inspection tool shows you exactly what Googlebot sees when it renders your page.

References

AppVet checks Crawlable Links automatically

Run a free seo scan and get a full report with actionable fixes, including a Fix with AI prompt you can paste into any coding tool.

Run Audit