Sauce · Fundamentals
Google can't click a button. If it isn't a real link, it isn't there.
Quick answer
A crawlable link is a real <a href="..."> tag pointing straight at a URL. Google follows those in raw HTML before it ever runs a page's JavaScript. A <button>, a <div> with an onclick handler, or an href of # or javascript:void(0) is not a link to a crawler, even though it looks and works like one to a visitor. Every page you want found needs a real anchor tag pointing to it from somewhere else on the site.
Is your trade still open in your city?We take one client per trade, per city. The call starts with that check, not a pitch.
Book a free assessmentThe page works. Anyone can click through to it. Google still doesn't know it exists.
This happens more than people expect on service-area sites: a "view all locations" menu, a card grid of guides, a "load more" button. All of it clicks fine for a person. None of it may contain a single real link a crawler can follow.
Google discovers new pages almost entirely by following links from pages it already knows. If a page is never linked to with a real anchor tag, from anywhere, it can go unfound and unindexed no matter how good the content is.
What makes a link "crawlable"
Not everything that looks clickable is a link to a crawler.
Three things to be clear on
An <a> tag with an href attribute that points to a real, fetchable URL. Relative (/plumber-seo) or absolute (https://yoursite.com/plumber-seo) both work.
Google's crawler reads a page's raw HTML first. It can also render JavaScript on a second pass, but that pass is slower, costs more of Google's resources per page, and is not guaranteed to run the same way a browser does.
A <button> with an onclick handler. A <div> or <span> made clickable with JavaScript. An href of # or javascript:void(0). A search box used as the only way to reach a page. None of these are links Google can reliably follow.
The ways it quietly breaks a local site
Each of these looks completely normal to a visitor. Each one can hide pages from Google.
<div>, not an <a>. It works for a mouse. It is invisible to a crawler reading the HTML.?page=2) or a "view all" link solve this without removing the button for visitors.href="#" or href="javascript:void(0)" paired with an onclick handler is common in older nav menus and dropdown code. It renders as a link. It points nowhere a crawler can go.If a page can only be reached by clicking something that isn't a real link, it may as well not exist to Google.
Real link, or a JavaScript problem?
The visitor experience can be identical either way. The markup is what decides which one you have.
- View Source shows a real
<a>tag with anhrefpointing at the destination page, not just a clickable element. - The URL loads directly if you paste it into a new browser tab, with JavaScript off.
- Every page you want found is reachable this way from at least one other page on the site.
- View Source does not show the destination URL anywhere in the raw HTML.
- Turning JavaScript off in the browser breaks the navigation entirely.
- The only way in is a search box, a "load more" button, or a menu built by a script.
Go deeper
Which part is your problem?
Each of these goes deeper on one piece.
Google Search Essentials, in plain words
Crawlable links are one of three things Google needs before anything else matters.
See the check › Piece 02What robots.txt actually does
A link Google can follow still has to reach a page robots.txt allows.
See the file › Piece 03Sitemaps for service businesses
A sitemap is a backup list. It does not replace real links between pages.
See why ›Check yours in five minutes
View source, not inspect element
Right-click the page and choose "View Page Source" (not "Inspect"). Search for a page you'd expect to see linked. If its URL is not in this raw HTML, Google may not see it as a link either.
Turn off JavaScript and reload
Most browsers let you disable JavaScript for a site in developer settings. Reload the page. If the main navigation disappears or stops working, that is the failure mode a crawler's first pass can hit.
Search the source for placeholder hrefs
Search the same page source for href="#" and javascript:void. Each one is a spot to replace with a real destination URL.
Spot-check with the URL Inspection tool
In Search Console, inspect a page reachable only through the pattern you're unsure about. If Google has never crawled it, that confirms the link was never found.
See where you actually show up first.Before you pay us a dollar, we run a free 49-point geo-grid scan of your service area. You keep the results either way.
Get the free scanWhat this does not mean
It does not mean JavaScript is banned. Google does render it. The problem is relying on JavaScript alone for the only path to a page, when a plain <a href> costs nothing extra and works everywhere.
It does not mean every button is wrong. A "submit" button on a booking form is fine. The failure is only when a button substitutes for navigation a real link should handle.
It does not mean this is the only crawlability issue on a site. Blocked paths in robots.txt and a missing sitemap can hide pages too. This is the one that hides pages even when everything else is correct.
Open View Source on your own homepage. Search for one page you know exists. If it isn't a link there, that's why it isn't ranking.
What makes a link crawlable to Google?
A real <a> tag with an href attribute pointing to a fetchable URL. Google's crawler reads this directly from a page's raw HTML, before running any JavaScript.
Does Google follow links added by JavaScript?
Sometimes, on a second, slower rendering pass, and it is not guaranteed to complete the same way a browser does. A plain <a href> in the raw HTML is found reliably on the first pass and does not depend on rendering working correctly.
Why aren't my "load more" or filtered pages getting indexed?
If the only way to reach them is a JavaScript button or a search box, with no matching <a href> anywhere in the site's HTML, Google may never discover the URLs behind them. Paginated links or a "view all" page fix this.
Is a button with an onclick handler the same as a link for SEO?
No. A <button> or a clickable <div> driven by JavaScript is not a link a crawler reliably follows, even when it functions identically to one for a site visitor. Use a real <a href> for anything that should count as navigation.
How do I check if my links are crawlable?
View the page's raw source (not the browser inspector) and confirm the destination URL appears in an <a href> tag. Then try loading the page with JavaScript disabled; if navigation breaks, that page depends entirely on JavaScript for its links.
Sources
- Google Search Central, “Make your links crawlable”, developers.google.com: the
<a href>requirement, and why onclick-only elements are not reliable links. - Google Search Central, “Understand the JavaScript SEO basics”: how Googlebot processes JavaScript in two waves, crawling then rendering.
- Google Search Central, “Fix Search-related JavaScript problems”: common JavaScript patterns that break discovery, including non-anchor "links."
- Google Search Central, “Google Search Essentials”: crawlability as one of the three baseline requirements to appear in Search.
Next step
Find out whether your trade is still open in your city
One client per trade, per city. The call starts with that check, not a pitch.
