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.
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
| Level | Document job | Typical use |
|---|---|---|
| H1 | Names the main page topic or task | One clear page title |
| H2 | Starts a major section under the page topic | Scope, process, pricing, evidence or FAQ |
| H3 | Divides one H2 into related subsections | A step group, option or sub-question |
| H4 | Divides a genuine H3 subsection | Detailed method or nested example |
| H5–H6 | Supports unusually deep documents | Technical specifications or long standards |
| CSS class | Controls visual treatment only | Display 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.
| Intent | Use | Do not use |
|---|---|---|
| Name the page | H1 | Large styled paragraph |
| Open a major section | H2 | H3 chosen because it looks smaller |
| Introduce a subsection | H3 under its H2 | Bold text with no semantic structure |
| Style a short label | p, span or another suitable element + CSS | Heading only for typography |
| Group navigation | Landmark and optional descriptive heading | A 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.
| Finding | What it may mean | Response |
|---|---|---|
| One descriptive H1 | Primary topic is explicit | Keep and verify it is unique to the page |
| No H1 | Visual title is not semantic or template data is missing | Add the real visible page title |
| Two competing prominent H1s | Main title is ambiguous | Choose one page title; restructure the other content |
| Logo/site name is H1 on every page | Global header controls the document title | Use a non-heading brand link; let page content own H1 |
| Multiple H1s in independent widgets | Component semantics were not coordinated | Define 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.
| Element | Primary surface | Good relationship |
|---|---|---|
<title> | Browser tab and possible search title source | Concise page identity, optional brand |
| H1 | Visible main page title | Same purpose in reader-friendly wording |
| Hero eyebrow | Category or context | Short label; not a competing title |
| Hero subheading | Clarifies audience or outcome | Supports rather than replaces H1 |
og:title | Social preview | Same 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.
- Write the page’s single purpose as a draft H1.
- List the primary questions, decisions or stages a visitor needs.
- Group overlapping items and remove sections that do not support the page job.
- Turn the remaining major groups into descriptive H2 headings.
- Add H3 headings only where one H2 contains real subsections.
- Read the H1–H3 list alone as if it were a table of contents.
- 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 heading | Clearer heading | Why |
|---|---|---|
| Why it matters | Why internal links improve discovery | Names the subject |
| Our solution | Technical SEO audit and implementation | Explains the work |
| More information | Website maintenance response times | Predicts the section |
| Step 3 | Validate redirects before launch | Adds the task |
| Amazing results | Organic leads after the migration | Replaces hype with evidence |
| FAQ | Frequently asked questions about backlink services | Useful when several FAQ groups exist |
Map headings to the page type
| Page type | H1 job | Useful H2 pattern |
|---|---|---|
| Homepage | State the brand’s primary offer or value | Services, proof, selected work, insights, contact |
| Service page | Name the service outcome and audience | Best fit, scope, process, deliverables, pricing, FAQ |
| Article or guide | Answer the query or promise the task | Definition, decision, workflow, examples, mistakes, FAQ |
| Category or hub | Name the collection and its learning purpose | Start here, subtopics, resources, latest updates |
| Product or tool | Name the product and primary use | Use cases, features, setup, limits, pricing, support |
| Case study | Name the project and relevant outcome | Context, challenge, approach, work, result, lessons |
| Contact page | State the contact or enquiry task | Ways to contact, what to prepare, response expectations |
| FAQ page | Name the support scope | Topic 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.
| Component | Heading decision | Check |
|---|---|---|
| Service card | Usually a heading if the card has its own content | Level follows the grid section |
| Blog card | Article title can be a heading | Linked heading describes destination |
| Portfolio tile with image only | Accessible link label may be enough | Do not add a hidden keyword heading |
| Statistic card | Usually plain text | Value and label remain associated |
| Pricing package | Heading if each package is a distinct option | Features remain within that package section |
| CTA panel | Heading only when it introduces a real section | Button 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.
| Component | Content structure | Accessibility check |
|---|---|---|
| Accordion | Question may be H3 under an FAQ H2 | Button name and aria-expanded are correct |
| Tabs | Panel title follows the page hierarchy | Tab and panel relationship is programmatic |
| Modal/dialog | Use a descriptive dialog title | Dialog is labelled and focus is managed |
| Mega menu | Use navigation groups and labels | Do not let menu headings distort article structure |
| Carousel | Slide titles are headings only when slides are real sections | Hidden slides do not create confusing repetition |
| Tooltip | Not a document section | Use 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.
- 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.
| Risk | Example | Control |
|---|---|---|
| Duplicate IDs | Two sections called “Examples” | Generate a unique stored identifier |
| Broken deep links | Heading wording changes | Preserve the existing ID when purpose remains |
| Covered target | Sticky header hides the heading | Set scroll offset and test focus |
| Non-Latin slug issues | Encoded Chinese fragment is hard to share | Use a stable readable convention |
| Collapsed section | Anchor points into a closed accordion | Open or reveal the target state |
| Empty TOC | Script runs before content exists | Generate 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.
- 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.
| Pattern | Likely source | Fix |
|---|---|---|
| Same H1 on every page | Global template or logo widget | Bind the real page title; change brand markup |
| Empty H2/H3 | Optional field still renders a tag | Render only when content exists |
| H2 followed by H4 | Visual-size dropdown | Separate semantic level from style |
| Dozens of H2 card titles | Hard-coded reusable component | Accept contextual level or plain text |
| Duplicate mobile headings | Two layouts exposed at once | Use one semantic source or hide correctly |
| Heading contains only an icon | Decorative widget | Remove heading or provide a real accessible label |
| Every question is H2 | FAQ component ignores container hierarchy | Use 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 finding | What it proves | Manual question |
|---|---|---|
| Missing H1 | No H1 exists in parsed output | Is the visible page title using the wrong element? |
| Multiple H1 | More than one H1 exists | Are they competing or truly separate contexts? |
| Duplicate H1 across URLs | Text repeats | Are pages duplicates or valid repeated product names? |
| Skipped rank | Numeric sequence jumps | Did a subsection open, or did the previous section close? |
| Very long heading | Text length exceeds a chosen threshold | Is it actually unclear or simply specific? |
| Empty heading | No accessible text is present | Did an icon or CSS-generated label hide the problem? |
Run a page-to-template audit
- Export indexable URLs with titles, H1s and heading counts.
- Group URLs by template and business importance.
- Check one desktop and mobile example from each core template.
- Identify the visible main title and confirm it is one descriptive H1.
- Compare the title element, H1 and opening answer for one shared purpose.
- Read the H1–H6 outline without paragraph content.
- Mark unclear, empty, decorative, duplicated and mis-ranked headings.
- Test card grids, accordions, tabs, dialogs, menus and hidden responsive content.
- Check keyboard and screen-reader heading navigation on representative pages.
- Review all languages for mixed wording and equivalent hierarchy.
- Fix reusable components before isolated page copy where possible.
- 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.
| Objective | Evidence | Guardrail |
|---|---|---|
| Find sections faster | TOC use, heading navigation test and user observation | Do not treat more clicks as automatically better |
| Understand the page promise | Task testing and lower immediate confusion | Title/H1/content must all align |
| Improve accessibility | Screen-reader outline and WCAG review | Automated tools are incomplete |
| Reduce template defects | Fewer missing, empty and competing H1s | A clean crawler report does not prove good wording |
| Support search understanding | Stable query relevance and page-level performance | Do not promise a heading-only ranking lift |
| Improve conversion path | Relevant CTA progression and qualified enquiries | Account 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
- Google Search Essentials
- Google SEO Starter Guide
- Google Search Central: Influencing title links
- MDN: HTML heading elements
- W3C WAI: Headings
- W3C WAI: Headings and Labels
- W3C: Web Content Accessibility Guidelines 2.2
- W3C WAI: Easy heading checks
- WHATWG: HTML headings and sections
- Ahrefs: H1 tag best practices
- Semrush: Heading tags and SEO
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.



How Google Ranking Evolved: From PageRank to Modern Search SystemsSeptember 2, 2026
Google AI Content and SEO: What Is Allowed, What Is Spam, and How to Publish SafelySeptember 2, 2026
Google Florida Update (2003): What We Know, What Remains TheorySeptember 2, 2026