SEO Fundamentals

Heading Structure and Internal Links on Long Pages

How to plan heading structure and internal links on a long page so readers, crawlers and AI answer engines can all find the one section they need.

S SparkCliks 0 19 min read
Share
Heading Structure and Internal Links on Long Pages

Heading structure and internal links get treated as two separate chores, one belonging to the writer and one to the SEO. On a page past two thousand words they are the same job: cutting the page into parts a person can scan, a crawler can follow, and a retrieval system can quote without dragging in three unrelated paragraphs.

One thing up front, because plenty of posts on this subject imply otherwise. Heading tags are a weak, indirect signal. Nobody has moved a page from position 14 to position 3 by changing an H3 into an H2. What headings and links buy you is cheaper and more durable: a page that is comprehensible, navigable by keyboard and screen reader, and quotable in pieces. Treat all of this as comprehension work, not as a ranking lever.

One H1, and what it is actually for

One H1 per page. It names the page, the way a book has one title and many chapter titles.

The counterargument you will hear is that the HTML5 outline algorithm allowed multiple H1 elements inside section and article, each scoped to its own section. True on paper, never true in practice. No browser implemented the outline algorithm, no assistive technology built on it, and the WHATWG HTML standard now advises against relying on it. What five H1 tags give you today is a flat list of five equally weighted page titles and a screen reader user who cannot tell which one is the page.

The H1 is not the title tag and they do not have to match word for word. The title tag competes for a click on the results page and gets truncated. The H1 reassures someone who already clicked that they landed in the right place. They should agree on subject and promise, not on wording, and we went through that relationship in matching your title tag to the landing page headline.

Two habits to drop:

  • Using an H1 for the site logo in the header. Every page on the site then shares one H1, your brand name, and the real page title sits a level down.
  • Using an H2 for the page title because the H1 style looked too big. Size is a CSS problem. Never pick a heading level for its font size.
Free trial

Stuck on page two?

Real human clicks that lift your CTR and move you up the rankings.

Nesting H2 and H3 without skipping levels

Descend one level at a time. H1, then H2, then H3 under that H2. Coming back up can skip freely, so an H4 followed by the next H2 is correct, because closing several sections at once is normal. Going down cannot skip.

What breaks when you jump from H2 to H4 is more specific than the usual warning that search engines get confused:

What you didWhat a sighted reader seesWhat actually breaks
H2 then H4Nothing. The text looks fineThe heading list gains a phantom level. Screen reader users navigating by level land in a section whose parent does not exist
Two H1sTwo large titlesThe page has no single name. Automated summaries and sharing tools pick one at random
H3 used because H2 looked too bigA slightly smaller headingEvery following section nests under the previous H2 by accident, so the outline claims a relationship the content does not have
Heading tag on a pull quote or a priceA styled line of textIt appears in the heading list and in the table of contents as though it were a section

Accessibility is where the damage is real rather than theoretical. Screen reader users navigate long pages by pulling up the heading list and moving between levels, which is why the W3C Web Accessibility Initiative page structure guidance treats a correct hierarchy as a primary navigation mechanism, not decoration. For how that overlaps with search behavior, see accessibility as search experience.

To check your own page, open the browser console and run:

document.querySelectorAll("h1,h2,h3,h4,h5,h6").forEach(function (h) {
  console.log(h.tagName, "|", h.textContent.trim().slice(0, 70));
});

Read the tag column top to bottom. Every downward step should be exactly one. Fifteen seconds per page, and it finds most of what a crawler would flag.

Write the heading as the question, not the clever label

The strongest change most long pages can make is also the least glamorous: rewrite each H2 as the question a reader would type, then answer it in the first sentence below it.

Clever labelThe question the reader typedWhy the rewrite wins
Getting StartedHow do I set up a campaign?Matches query phrasing, the table of contents and the retrieval chunk label
The Numbers GameHow much does it cost per month?A scanner looking for price finds it without opening three sections
Under the HoodHow does the tracking actually work?Signals mechanism to a reader who wants depth, not marketing
Final ThoughtsWhat should I do first?Turns a dead section into the one that gets bookmarked

Two guardrails so this does not slide into stuffing. Not every heading needs a question mark: "How the tracking works" is fine, and twelve consecutive questions read like a quiz. And do not repeat the primary keyword in every H2. Once in the H1 plus once or twice across the H2s is plenty; past that you are writing for a parser that stopped rewarding it a decade ago.

The test: read only the headings, in order, and nothing else. If you cannot tell what the page argues from that alone, your headings are labels and not signposts.

Anchor text: descriptive, not "click here", not stuffed

Anchor text is a promise about the destination. Screen readers read it out of context when listing every link on a page, and it is the main thing a crawler has to categorize a URL it has not fetched yet.

Anchor textVerdictReason
click hereBadMeaningless in a links list. Tells nobody, human or machine, what is on the other side
https://www.sparkcliks.com/blog/organic-ctr-benchmark/BadA raw URL read aloud character by character is punishing
organic CTR benchmarks by positionGoodDescribes the destination, reads naturally, carries meaning alone
See the data on organic CTR benchmarksGoodLonger, still specific. Length is not the problem
organic ctr benchmark, ctr benchmarks, average ctrBadStuffed. Three phrases jammed into one link no person would write

Exact-match anchors are where sensible advice turns into superstition. Using the destination page target phrase once or twice is natural writing. Using the identical phrase for all fourteen internal links pointing at that page is not something a human writer produces, and it is the pattern link-spam systems are built to recognize. The backfire is usually not a penalty, it is a flattening: every link says the same thing, so none of them tells anyone which aspect of the page you meant. Vary the anchor to match what the surrounding sentence is about.

One widely repeated claim to be careful with: that when a page links twice to the same URL, only the first anchor counts. Testers have reported that behavior for years, but no search engine has documented it, and it is not something to build an internal linking system around. Put links where the reader needs them and stop building rules on folklore.

Linking down to detail and up to a hub

Every internal link on a long page does one of three jobs, and naming which one keeps the structure from drifting.

  • Down to detail. The page mentions a subtopic in a sentence and the link goes to the page covering it properly. This is how a long page avoids becoming an infinitely long page.
  • Up to a hub. The page belongs to a cluster and the link goes to the category or pillar page listing that cluster. This is the link most often missing, because writers add it once in the template and never in the body.
  • Sideways to a sibling. Two pages cover adjacent decisions and a reader choosing between them benefits from both.

State the hub relationship in two places: in prose, as a body link, and in machine-readable form. A breadcrumb trail is the cheapest way to declare the parent relationship to a crawler and it renders as a real navigation aid at the same time. The markup is straightforward, and we walked through it in breadcrumb and organization schema. If the crawl-and-index layer under all of this is unfamiliar, what technical SEO actually covers is the wider map.

Long pages get this wrong on depth. A page four clicks from the home page with one internal link pointing at it is discoverable in theory and neglected in practice. Aim for anything you care about to sit within three clicks of a hub and to have more than one route in. The second route keeps it alive when you restructure the first.

Orphan pages: in the sitemap, linked from nowhere

An orphan page exists, resolves, appears in sitemap.xml, and has zero internal links pointing at it. It is the purest version of the problem this article is about, and it is common on sites that have published steadily for a couple of years.

It matters because a sitemap is a hint, not an instruction. Google sitemap documentation is explicit that inclusion does not guarantee crawling or indexing. Internal links are the stronger signal, because a link is a statement that the destination is worth reaching, made by a page that already has standing. A URL appearing only in an XML file is a URL nothing on your site vouches for.

Find them by comparing lists that should match and usually do not:

SourceWhat it gives youThe gap it reveals
A full crawl following links onlyEvery URL reachable by clickingAnything here but missing from the sitemap is an unlisted page
`sitemap.xml`Every URL you claim to publishAnything here but missing from the crawl is an orphan
Search Console Pages reportWhat was crawled and what was indexed, with reasonsPages discovered but not indexed, which often overlaps the orphan set
Analytics landing pages, last 12 monthsURLs that received at least one visitZero-entry pages worth cutting rather than relinking

The mechanical version in a crawler such as Screaming Frog: run a standard crawl, enable list mode against your sitemap, then run crawl analysis to produce the orphan URL report. The set difference is your worklist. Sort it by whether the page is worth keeping, then give each survivor two contextual internal links from relevant pages, or remove it from the sitemap and let it go.

Check one adjacent failure at the same time: pages that are linked and crawled but still not indexed, which is a different problem with different causes. We covered that in crawled but not indexed.

Worked example: auditing one long page in thirty minutes

Pick the page with data rather than instinct. Open Google Search Console, go to Performance, then Search results. Set the date range to Last 3 months. Switch to the Pages tab and sort by impressions, then filter to pages with high impressions and average position between 5 and 15, because a search engine already treats those as relevant and readers are not choosing them. Take the longest one.

Switch to the Queries tab with that page still filtered and export the top fifty queries. Read them beside your heading list. The question you are answering: does every query cluster in that export have a heading that matches its phrasing? On most long pages, two or three clusters have no corresponding heading anywhere, and one existing heading matches nothing anyone searches. That is your rewrite list, and it took ten minutes.

The rest of the pass, in order:

  1. Run the heading dump snippet from the nesting section. Fix any skipped level and any heading tag applied to something that is not a section.
  2. Confirm one H1, and that it agrees in subject with the title tag.
  3. Rewrite the headings that matched no queries into the phrasing the export showed.
  4. Check every table of contents anchor resolves. Broken anchors fail silently.
  5. Count contextual body links. Under six on a page over two thousand words, place the missing ones at the sentences where a concept is glossed over.
  6. Check the page links up to its hub in the body, not only in the breadcrumb.
  7. Check the page itself is not an orphan.

A measurement design that will tell you something. Do not change the whole site at once, because then you cannot attribute anything.

  • Baseline: 28 days before the change, exported per page from Search Console, plus scroll depth or section engagement from analytics if you have it.
  • Change set: ten long pages. Headings and internal links only. No title tags and no meta descriptions, because changing the title changes the click decision and contaminates the result.
  • Control set: ten comparable long pages, matched roughly on impressions and topic, deliberately untouched.
  • Wait: 28 days after recrawl, not after publishing. Check the last crawl date in the URL Inspection tool before starting the clock.
  • Read: average position, impressions and clicks for both sets, plus the toc_jump events if you added them.
  • Signal versus noise: across ten pages, a change smaller than the seasonal drift in your control set is noise. If control drifted 6 percent and the change set moved 7 percent, you learned nothing. Those are example figures; use your own control drift as the threshold.

Be honest about what this experiment can show. Cleaner headings and better internal links mostly move engagement and navigation, and any search visibility effect is indirect and slow. What you should expect is a page people can use plus better passage-level quotability. Anyone promising a position jump from a heading change is selling something.

Frequently asked questions

FAQ

Can a page have more than one H1?

Technically yes, and in practice you should not. The HTML5 outline algorithm that would have made multiple H1 elements meaningful was never implemented by browsers or assistive technology, so extra H1 tags produce several equally weighted page titles with no hierarchy between them.

Do heading structure and internal links improve rankings?

Not directly. Heading tags are a weak, indirect signal that helps a search engine understand what each part of a page is about, and internal links mostly affect discovery and how a page is understood in context. The reliable gains are comprehension, accessibility and cleaner passage extraction for AI answer engines.

What breaks if I skip from H2 to H4?

The visible page looks identical, which is why it goes unnoticed for years. What breaks is the outline: screen reader users navigating by level land in a section whose parent does not exist, and any tool that builds a heading path, retrieval chunkers included, records a relationship your content does not have.

How many internal links should a long page have?

There is no documented limit, and the old advice to stay under about a hundred links was removed from Google Search Central documentation years ago. As a planning figure, one contextual link per two hundred to three hundred words works, so eight to fifteen on a long article, placed where each question arises rather than bunched at the end.

Is exact-match anchor text bad for internal links?

Using the target phrase once or twice is normal writing. Using the identical phrase for every internal link pointing at one page is what backfires, because it stops carrying information about which aspect of the page you meant, and it matches the pattern link-spam detection looks for.

How do I find orphan pages on my site?

Crawl the site following links only, then compare that URL set against your sitemap. Anything in the sitemap but missing from the crawl is an orphan, and a sitemap does not guarantee crawling or indexing. Give each page worth keeping at least two contextual internal links, and drop the rest from the sitemap.

About the Author

The SparkCliks Team writes about search click behavior, search experience and website traffic measurement. SparkCliks builds tools for testing what happens after a listing appears in the results: SERP Clicks for crowd-sourced human clicks, Sparky Traffic Bot for scripted browser sessions, and the Website Traffic and Realistic Traffic services for visit volume. That work means a lot of time spent watching how sessions move through long pages. We publish what the evidence supports and flag what it does not, including the places where a repeated SEO claim has no documentation behind it.

Keep reading

Related articles