# SEO

Heading Structure for SEO and Accessibility: A Practical Guide

Heading Structure for SEO and Accessibility: A Practical Guide

Heading elements name sections and show how ideas relate. They help readers scan, allow assistive technology to navigate, support tables of contents and give search systems clearer page signals. Their value comes from an honest document outline—not from repeating keywords or turning every bold line into a heading.

Use one clear H1 as the practical default

Browsers and Google can process imperfect heading markup, and multiple H1 elements do not create an automatic penalty. However, current MDN guidance recommends one H1 that describes the page, followed by logically nested H2–H6 headings. This gives design, accessibility and template QA one dependable main title.

The quick answer: give every level one job

LevelDocument jobTypical use
H1Names the main page topic or taskOne clear page title
H2Starts a major section under the page topicScope, process, pricing, evidence or FAQ
H3Divides one H2 into related subsectionsA step group, option or sub-question
H4Divides a genuine H3 subsectionDetailed method or nested example
H5–H6Supports unusually deep documentsTechnical specifications or long standards
CSS classControls visual treatment onlyDisplay size, weight, colour and spacing

Headings describe structure, not font size

Choose a heading level from the relationship between sections. Use CSS to make an H2 visually small or a paragraph visually large. A bold sentence is not automatically a heading, and a large heading should still be semantically accurate.

W3C guidance recommends nesting headings by rank and avoiding skipped levels when opening a subsection. Moving from an H4 back to an H2 is valid when the deeper subsection has ended; opening an H4 directly beneath an H2 is usually confusing.

IntentUseDo not use
Name the pageH1Large styled paragraph
Open a major sectionH2H3 chosen because it looks smaller
Introduce a subsectionH3 under its H2Bold text with no semantic structure
Style a short labelp, span or another suitable element + CSSHeading only for typography
Group navigationLandmark and optional descriptive headingA heading level tied to article depth by accident

Why one H1 is the strongest operating convention

A single H1 makes the primary page title obvious across CMS templates, design systems, screen-reader heading lists and automated checks. It is a convention for clarity and maintainability—not a secret ranking factor.

If an existing page has multiple H1 elements, inspect why before changing them. A site name in the header, a modal, an embedded article or a repeated component may be producing them. Fix the component model and visual hierarchy; do not merely convert every extra H1 to H2 without checking relationships.

FindingWhat it may meanResponse
One descriptive H1Primary topic is explicitKeep and verify it is unique to the page
No H1Visual title is not semantic or template data is missingAdd the real visible page title
Two competing prominent H1sMain title is ambiguousChoose one page title; restructure the other content
Logo/site name is H1 on every pageGlobal header controls the document titleUse a non-heading brand link; let page content own H1
Multiple H1s in independent widgetsComponent semantics were not coordinatedDefine heading levels from the containing page

Align the title element, visual title and H1

The HTML <title> names the document in browser and search contexts; the H1 names the visible page. They can use different wording, but they should promise the same topic and task. The title may include concise branding or search context while the H1 stays natural on the page.

Google can use title elements, headings and other prominent text when generating a title link. If several large headings compete, Google may choose the first. Use the title tag workflow to keep the result and page aligned.

ElementPrimary surfaceGood relationship
<title>Browser tab and possible search title sourceConcise page identity, optional brand
H1Visible main page titleSame purpose in reader-friendly wording
Hero eyebrowCategory or contextShort label; not a competing title
Hero subheadingClarifies audience or outcomeSupports rather than replaces H1
og:titleSocial previewSame destination promise

Build the outline before writing sections

Start with the page job, then list the questions or decisions a visitor needs. Group related items into H2 sections, and use H3 only when a section genuinely needs subdivisions. If the outline cannot be understood without the paragraphs, the headings may be vague or decorative.

Seven-step outline test
  1. Write the page’s single purpose as a draft H1.
  2. List the primary questions, decisions or stages a visitor needs.
  3. Group overlapping items and remove sections that do not support the page job.
  4. Turn the remaining major groups into descriptive H2 headings.
  5. Add H3 headings only where one H2 contains real subsections.
  6. Read the H1–H3 list alone as if it were a table of contents.
  7. Check that the order matches the user journey, not an arbitrary keyword list.

Write headings that make sense out of context

Screen-reader users may open a list of headings or jump directly between them. A heading such as “Why it matters” can become meaningless when repeated. Name the actual topic, result or decision while keeping the wording concise.

WCAG 2.2 requires headings and labels, when provided, to describe topic or purpose. It does not require long headings. A few precise words can be more useful than a full promotional sentence.

Weak headingClearer headingWhy
Why it mattersWhy internal links improve discoveryNames the subject
Our solutionTechnical SEO audit and implementationExplains the work
More informationWebsite maintenance response timesPredicts the section
Step 3Validate redirects before launchAdds the task
Amazing resultsOrganic leads after the migrationReplaces hype with evidence
FAQFrequently asked questions about backlink servicesUseful when several FAQ groups exist

Map headings to the page type

Page typeH1 jobUseful H2 pattern
HomepageState the brand’s primary offer or valueServices, proof, selected work, insights, contact
Service pageName the service outcome and audienceBest fit, scope, process, deliverables, pricing, FAQ
Article or guideAnswer the query or promise the taskDefinition, decision, workflow, examples, mistakes, FAQ
Category or hubName the collection and its learning purposeStart here, subtopics, resources, latest updates
Product or toolName the product and primary useUse cases, features, setup, limits, pricing, support
Case studyName the project and relevant outcomeContext, challenge, approach, work, result, lessons
Contact pageState the contact or enquiry taskWays to contact, what to prepare, response expectations
FAQ pageName the support scopeTopic groups containing individual questions

Cards need headings only when they create real sections

A card title can be a heading when the card is a meaningful subsection—such as a service, article or project with its own description. A statistic, badge, button or tiny feature label usually does not need a heading.

Repeated cards must inherit their level from the page. A service grid under an H2 will commonly use H3 card titles. If the same component appears directly beneath an H1 on another template, its API may need a configurable heading level rather than hard-coded H2s.

ComponentHeading decisionCheck
Service cardUsually a heading if the card has its own contentLevel follows the grid section
Blog cardArticle title can be a headingLinked heading describes destination
Portfolio tile with image onlyAccessible link label may be enoughDo not add a hidden keyword heading
Statistic cardUsually plain textValue and label remain associated
Pricing packageHeading if each package is a distinct optionFeatures remain within that package section
CTA panelHeading only when it introduces a real sectionButton text is not a heading

Handle accordions, tabs, modals and menus deliberately

Interactive controls need an accessible name, role and state. A heading can contain an accordion button when the question also serves as a section heading, but the button still needs correct expanded state and keyboard behaviour. Do not use heading markup as a substitute for component semantics.

Content hidden behind a tab or accordion should remain logically connected to its control. Modal and dialog headings label that dialog; they should not become a second page H1.

ComponentContent structureAccessibility check
AccordionQuestion may be H3 under an FAQ H2Button name and aria-expanded are correct
TabsPanel title follows the page hierarchyTab and panel relationship is programmatic
Modal/dialogUse a descriptive dialog titleDialog is labelled and focus is managed
Mega menuUse navigation groups and labelsDo not let menu headings distort article structure
CarouselSlide titles are headings only when slides are real sectionsHidden slides do not create confusing repetition
TooltipNot a document sectionUse control description, not a heading

Keep fixed regions consistent across templates

Navigation, sidebar and footer sections can have their own headings and landmarks. W3C notes that fixed page regions should keep consistent heading ranks across pages rather than changing according to the deepest heading in the main article.

Use semantic landmarks such as <nav>, <main>, <aside> and <footer> where appropriate. A visible heading can label a region, but not every landmark needs one if its accessible purpose is already clear.

Global template checks
  • The main content has one dependable H1.
  • The header logo does not become the H1 on every route.
  • Navigation group labels remain consistent across templates.
  • Sidebar headings do not copy the article H1.
  • Footer headings describe real link groups.
  • Hidden mobile and desktop navigation copies do not create duplicate exposed headings.
  • Cookie banners and popups do not introduce H1 elements.
  • Heading order still makes sense when main and fixed regions are viewed together.

Use stable heading IDs for tables of contents

A table of contents improves navigation when a page is long enough to need one. Generate unique, stable IDs from editorially controlled slugs or stored identifiers. Changing the visible heading should not have to break every shared deep link.

When a sticky header covers the destination, use layout techniques such as scroll-margin-top. Keyboard focus, history, translated slugs and duplicate headings also need testing.

RiskExampleControl
Duplicate IDsTwo sections called “Examples”Generate a unique stored identifier
Broken deep linksHeading wording changesPreserve the existing ID when purpose remains
Covered targetSticky header hides the headingSet scroll offset and test focus
Non-Latin slug issuesEncoded Chinese fragment is hard to shareUse a stable readable convention
Collapsed sectionAnchor points into a closed accordionOpen or reveal the target state
Empty TOCScript runs before content existsGenerate from final rendered headings

Localize meaning, not only heading text

Each language page needs a complete natural outline. Do not leave English headings inside Malay or Chinese content, and do not force identical word order when the language needs a clearer phrase. The hierarchy and page job should remain equivalent even when wording differs.

Google advises matching the language and writing system of prominent page text. Keep title, H1, headings, body and navigation coherent within each localized URL.

Multilingual heading QA
  • The H1 is localized and unique within that language section.
  • Title and H1 describe the same localized purpose.
  • No template fallback leaves mixed-language headings.
  • Heading level remains the same across equivalent translations.
  • Localized headings still describe the following section.
  • TOC labels and fragment behaviour work in every language.
  • Text expansion does not break mobile layout.
  • Hreflang and canonical remain aligned with the correct page.

Prevent CMS and page-builder heading noise

Templates often create more heading problems than writers do. Logo widgets, reusable blocks, card components, hidden responsive duplicates and empty editor fields can produce headings across hundreds of URLs.

Fix the source component rather than editing every generated page. Before changing a shared template, sample several page types because the correct card level may depend on where the component is placed.

PatternLikely sourceFix
Same H1 on every pageGlobal template or logo widgetBind the real page title; change brand markup
Empty H2/H3Optional field still renders a tagRender only when content exists
H2 followed by H4Visual-size dropdownSeparate semantic level from style
Dozens of H2 card titlesHard-coded reusable componentAccept contextual level or plain text
Duplicate mobile headingsTwo layouts exposed at onceUse one semantic source or hide correctly
Heading contains only an iconDecorative widgetRemove heading or provide a real accessible label
Every question is H2FAQ component ignores container hierarchyUse H3 under the FAQ H2 when appropriate

Combine crawl data with a manual outline review

A crawler can find missing, empty, duplicate and multiple H1s, or suspicious rank jumps. It cannot decide whether “Overview” is useful, whether two H2s should be merged, or whether the mobile reading order tells the correct story.

Use automated findings as a review queue. Inspect representative templates and the highest-impact pages, then fix shared causes first.

Automated findingWhat it provesManual question
Missing H1No H1 exists in parsed outputIs the visible page title using the wrong element?
Multiple H1More than one H1 existsAre they competing or truly separate contexts?
Duplicate H1 across URLsText repeatsAre pages duplicates or valid repeated product names?
Skipped rankNumeric sequence jumpsDid a subsection open, or did the previous section close?
Very long headingText length exceeds a chosen thresholdIs it actually unclear or simply specific?
Empty headingNo accessible text is presentDid an icon or CSS-generated label hide the problem?

Run a page-to-template audit

12-step heading workflow
  1. Export indexable URLs with titles, H1s and heading counts.
  2. Group URLs by template and business importance.
  3. Check one desktop and mobile example from each core template.
  4. Identify the visible main title and confirm it is one descriptive H1.
  5. Compare the title element, H1 and opening answer for one shared purpose.
  6. Read the H1–H6 outline without paragraph content.
  7. Mark unclear, empty, decorative, duplicated and mis-ranked headings.
  8. Test card grids, accordions, tabs, dialogs, menus and hidden responsive content.
  9. Check keyboard and screen-reader heading navigation on representative pages.
  10. Review all languages for mixed wording and equivalent hierarchy.
  11. Fix reusable components before isolated page copy where possible.
  12. Re-crawl, compare the changed templates and record the QA result.

Measure clarity without inventing a ranking claim

A heading cleanup may improve navigation and comprehension, but a ranking change cannot be attributed to heading order alone. Search performance also depends on intent, content, links, competition, technical eligibility and result presentation.

Measure the page task. For a guide, useful signals may include table-of-contents use, section engagement and completed next steps. For a service page, check qualified enquiries—not merely scroll depth.

ObjectiveEvidenceGuardrail
Find sections fasterTOC use, heading navigation test and user observationDo not treat more clicks as automatically better
Understand the page promiseTask testing and lower immediate confusionTitle/H1/content must all align
Improve accessibilityScreen-reader outline and WCAG reviewAutomated tools are incomplete
Reduce template defectsFewer missing, empty and competing H1sA clean crawler report does not prove good wording
Support search understandingStable query relevance and page-level performanceDo not promise a heading-only ranking lift
Improve conversion pathRelevant CTA progression and qualified enquiriesAccount for simultaneous content changes

Common heading mistakes

  • Using heading levels to control font size.
  • Turning every bold sentence or card label into a heading.
  • Repeating the exact keyword in most headings.
  • Using the brand logo as H1 on every page.
  • Creating two equally prominent page titles.
  • Skipping from H2 to H4 when opening a subsection.
  • Converting every multiple-H1 warning without checking context.
  • Hard-coding card headings without knowing the container level.
  • Using vague repeated headings such as “Learn more”.
  • Leaving empty heading elements from optional fields.
  • Duplicating exposed headings in mobile and desktop markup.
  • Assuming a perfect outline will rank weak or irrelevant content.

Frequently asked questions

Does every page need an H1?

Most meaningful indexable pages should have one clear visible H1 that names the page. Utility screens may have different interface needs, but they still require an accessible title or label.

Can a page have more than one H1?

Browsers and Google can process multiple H1s, so it is not an automatic penalty. One descriptive H1 is still the most reliable convention for ordinary web pages and template QA.

Must the title tag and H1 be identical?

No. They may differ for branding, length or on-page readability, but they should describe the same page purpose.

Can I skip from H2 to H4?

Avoid it when opening a subsection because the hierarchy becomes unclear. Returning from an H4 to a new H2 is fine when the previous nested section has ended.

Do headings need exact-match keywords?

No. Use the words readers need to understand the section. Natural topic terms may appear, but repetition is not a quality signal.

How many H2 headings should an article have?

There is no fixed number. Use as many major sections as the page task requires, and remove sections that add no useful decision or answer.

Should every card title be a heading?

Only when the card forms a meaningful section. Small labels, statistics and buttons usually need appropriate text or accessible names, not heading markup.

Should FAQ questions be H2 or H3?

It depends on the container. If “Frequently asked questions” is an H2, individual questions will commonly be H3.

Does heading structure affect rankings?

Headings help communicate content structure, but there is no guaranteed ranking gain from changing levels. Improve them for clarity, accessibility and maintainability, then measure the whole page.

Can an automated SEO tool fix the hierarchy?

It can find structural patterns, but a person must judge relationships, wording, component context and reading order.

Official references

Need a practical next step?Make the page understandable from its outline alone.

Share representative templates or a crawl export. Jack can map H1–H6, remove page-builder noise, align titles and headings, and prioritize reusable fixes across the site.

Discuss a heading structure audit

Jack Lee

Jack Lee

Building Search Visibility with SEO, GEO & AI-Assisted Websites through practical projects and experiments.