Anchor link SEO: 69 of 967 homepage headings carry an id
Anchor link SEO starts with an id on the heading. Across 27 homepages crawled on 2026-08-22, 69 of 967 headings carry one, 18 sites have none at all, and the site that tags almost every heading uses unguessable hashes.

FIELD TEST · 2026-08-22 · 27 homepages · single crawl · headings parsed
Sample and method: the same 30-site panel in use since 2026-08-15, each homepage fetched once on 2026-08-22 with a browser user agent. Every h1 through h6 was recorded in document order along with its id attribute, if it had one.
Anchor link SEO depends on one thing the page has to give you first: an id on the heading you want to point at. Across 967 headings on 27 homepages, 69 carry one. Eighteen of the 27 sites give an id to no heading at all, so nothing outside those pages can link to anything inside them.
How we measured it
One HTTP request per site, no rendering, no retries. The inclusion rule was fixed before the run: status 200, body at least 10,000 bytes, body containing <body. Three of the 30 failed it — stackoverflow.com and medium.com returned 403, www.reddit.com returned an 8,393-byte shell — leaving 27 homepages and 967 headings in the delivered HTML.
We counted attributes, not behaviour. A heading with an id can be linked to; whether anyone does is a separate question this crawl does not answer.
What anchor link SEO actually needs
A fragment link works because the destination element has an identifier. From the HTML Living Standard, section 3.2.6, read 2026-08-22: "An element's unique identifier can be used for a variety of purposes, most notably as a way to link to specific parts of a document using fragments, as a way to target an element when scripting, and as a way to style a specific element from CSS."
MDN puts the consequence more bluntly in its page on text fragments, read the same day: "The issue with linking to specific document fragments is that the author of the linked page needs to put an anchor in place to actually link to." The author is you. If you skip it, nobody else can add it later.
An id is an address. A heading without one is a room with no number on the door.
Sixty-nine ids across 967 headings
Two sites account for 47 of the 69. The rest of the panel is close to zero, including the sites with the most headings on the page.
| Site | Headings | With id | H2 with id |
|---|---|---|---|
| figma.com | 33 | 32 | 29 / 30 |
| techcrunch.com | 105 | 15 | 13 / 14 |
| stripe.com | 57 | 11 | 1 / 5 |
| github.com | 26 | 6 | 0 / 9 |
| www.bbc.com | 153 | 0 | 0 / 130 |
| www.canva.com | 83 | 0 | 0 / 36 |
| www.cloudflare.com | 51 | 0 | 0 / 4 |
| vercel.com | 30 | 0 | 0 / 17 |
The BBC homepage carries 153 headings, 130 of them h2, and not one is addressable. That is the shape of the whole panel: 455 h2 elements across 27 sites, 47 with an id. Ten percent of the level that usually names a section.
The site that tags almost everything uses hashes
Figma is the outlier, and reading its ids takes the shine off the number. They look like this: fa13aad03260, f63ca98318ef, a7bffbcb4e92 — twelve hex characters, one per section heading, generated by whatever builds the page.
<h2 id="fa13aad03260">What you can do in figma</h2>
<h2 id="f63ca98318ef">Explore all products</h2>
<h2 id="a7bffbcb4e92">Additional product resources</h2>
Those work. You can paste #fa13aad03260 after the URL and land on the section. But nobody guesses that, nobody remembers it, and if the build regenerates the hash the old link dies quietly. Stripe's eleven ids have the opposite problem: they are readable (bento-card-title-payments, bento-card-title-billing) and they sit on h3 card titles, while the h2 that names the section above them has no id at all. One of Stripe's five h2 elements is addressable.
Where the levels jump
Two other things fall out of the same parse. Eleven of 27 homepages open with a heading that is not an h1, and eight sites skip a level somewhere in the document.
| Site | First heading | Level jumps |
|---|---|---|
| vercel.com | h5, six of them | none |
| techcrunch.com | h3 | h3 to h5 |
| www.cloudflare.com | h1 | five, including h2 to h6 |
| www.framer.com | h1 | three, all h3 to h6 |
| news.ycombinator.com | no heading at all | none possible |
Hacker News has 3,623 characters of visible text on its homepage and zero headings of any level. Vercel's document opens with six h5 elements before the first h1 appears, which is what a navigation menu built from styled components looks like once you read the markup instead of the page.
What this crawl cannot tell you
It looked at homepages, and a homepage is the page type least likely to need anchors. Nobody deep-links to the third section of a marketing front page. The same sites almost certainly put ids on their documentation and article headings, and this measurement would not see any of it.
We also do not know whether any of these 69 ids are used. Counting an attribute is not counting a link. We did not crawl inbound links, and we did not test whether search engines or answer engines ever point at a fragment on these pages.
And an id being present says nothing about it being stable. Figma's hashes might survive every deploy for years, or change next Tuesday. From the outside those look identical.
What to do with your own headings
The work is small and it is on the pages nobody surveys: your guides, your docs, your long posts.
- Put a readable, stable
idon everyh2on any page longer than a screen or two. - Write the id from the heading text, not from a counter —
#pricing-for-teamssurvives a reorder,#section-4does not. - Do not let the build generate hashes and call it done. A link nobody can compose is a link nobody sends.
- Do not renumber or rename ids during a redesign without redirect-free equivalents in place. Fragments do not 404, they just land you at the top.
Whether a page can be pointed at, section by section, is part of what the QueryWin checks are being built to report. Two adjacent measurements from the same panel: the missing h1 tag survey counted the top of the heading tree, and the handbook chapter on page structure for AI answers covers what goes under each one.
Common questions
How did you measure this?
One homepage request per site on 2026-08-22, browser user agent, no JavaScript execution. Every heading element in the delivered HTML was recorded in document order with its id. No rendering, no retries.
Do heading ids help SEO?
They make a section linkable, which is a prerequisite for anything else. This crawl measured who has them, not what they earn. Anyone quoting you a ranking benefit for anchor link SEO is going beyond what is published.
How do I link to a specific part of a page?
Append # and the id of the target element to the URL. If the page has no id there, you cannot — that is the whole finding above.
What id should I use on a heading?
A lowercase slug of the heading text, hyphen-separated, unique on the page. It reads correctly when shared, and it stays meaningful after the page is reordered.


