Do headings still matter for retrieval?

Headings changed jobs. Less of a keyword signal, more of a cue for where a passage begins. What an H2 does when a model is cutting the page.

Michael Davis5 min read

Summarize

Headings used to be talked about as a ranking lever: put the keyword in the H1, cascade the rest, hope Google noticed. That story got quieter. The job that is left is less glamorous and more mechanical. An H2 is often the mark a chunker uses to decide where a passage begins.

So: do headings still matter if a model is reading the page? As a stuffed keyword signal, less than the old decks wanted. As a cut mark, yes, when the pipeline actually uses them. Not every pipeline does.

Headings changed jobs

Classic on-page advice treated the heading outline as a place to park terms. Some of that still helps a person scan. Some of it still helps a crawler build an outline. Very little of it is a published ranking factor you can tune like it is 2012.

Retrieval changed the reason to care. Models retrieve passages, not pages. Something has to cut the page. A heading-aware splitter treats "H2 plus the text under it" as one object. A character window ignores the outline and cuts every N characters.

Those are different objects from the same URL. We already watched it happen.

What an H2 does for a chunk

If the cutter respects headings, a good H2 does three quiet things.

It names the passage, so the chunk can start with the question it answers. "What cosine similarity is" is a better opening for a slice than a leftover sentence from the previous section.

It keeps a thought together. The definition stays with the definition. The caveat stays with the caveat.

It gives you a handle in the output. When a nearest-arrow search returns a passage, a heading at the top is how you find it on the live page without guessing.

If the cutter is a dumb window, the H2 is just more text. It might land in the chunk. It might get split off. It does not get a vote.

That is why "add more headings for AEO" is a mushy recommendation. It helps the pipelines that cut on outline. It does nothing special for the ones that do not. We do not know which kind any given answer engine is using on Tuesday.

In plain terms

An H2 is a suggested tear line. Some systems tear there. Some tear by length and never look up.

Same page, two cutters

We took the published cosine similarity note and cut it two ways. This is the same teaching page as the chunking post, on purpose.

Cut on H2s. Six sections plus a short lede. The definition section is 308 words. "Why it showed up" is 247. Each one is a complete thought with a name on it.

Cut every 900 characters, headings still in the file. Ten chunks. The load-bearing 0.85 sentence split in half. One chunk ended on "routinely reached 0." The next opened on "85."

Then we stripped the headings and ran the same 900-character window again. Nine chunks this time, because the outline text was gone. One of the seams landed on a paragraph break, which looks cleaner than the mid-word cut. The page also lost every name those sections had. A heading-aware cutter would have had nothing to grab.

Notebook sketch of a page with two H2 marks, and a steel cut ignoring them and slicing through a line of text.

The charcoal marks are the headings. The steel cut is the window that did not care.

So headings do not "fix chunking." They offer a better cutter a place to work. A wall of text has no such offer. A character window can still walk through your best sentence either way.

They are not a ranking lever you install

This is the part that needs saying in a normal voice, because the opposite claim is easy to sell.

Putting a question in an H2 does not make ChatGPT retrieve the page. It makes it more likely that, *if* a system cuts on headings, the stored passage still looks like an answer. What happens when ChatGPT answers still depends on training, lookup, and a lot of steps we cannot see.

Keyword-in-H1 theater is the old habit. Sometimes the heading and the question are the same words, because that is what the section is. Sometimes stuffing the heading makes the outline worse for a person and no better for a model.

We would rather write the heading as a claim or a question a skimmer can use. That habit also happens to produce chunks that stand alone. Nice when it coincides. Not a strategy deck.

What we still write them for

The boring reasons are still the good ones.

People scan. A page with no outline is a wall. Accessibility tools build a document map from heading order. Skipped levels scramble that map — Silkra flags that as an issue because outline parsers do, not because we invented a ranking story.

And if you are going to inspect chunks after a crawl, headings are how you find the passage again on the live URL. A nameless 200-word slice is a miserable thing to hand a client.

When Silkra chunks extracted text, a heading-aware cut and a window cut are not the same view. We look at both when the question is "does this page even have a passage for that ask?" The heading is evidence about structure. It is not a score.

The part that is still fuzzy

The clean test is still sitting there: same words, two markup structures, compare what gets extracted and where the slices fall. We have the teaching page. We have not built the controlled pair — one URL with a real outline, one with the same prose flattened — and run both through the same extractor.

Until that exists, the honest answer is the one that sounds like a hedge and isn't. Headings matter for people and for any cutter that uses them. They do not matter as a magic AEO tag. If your outline already tells the story of the page, you are doing the useful version of the work. If it exists to hold keywords, you are doing the 2012 version, and a model will not grade you for it.

Put crawl evidence to work

Download Silkra and turn audits, briefs, and fixes into one focused workflow.

Get started

Create your first workspace.

Crawl a site, then ask what needs attention.

Free to start. No credit card needed.