DOFIW ACCESSIBILITY GUIDE

How to Structure Headings for Accessibility and Clear Content

A practical guide to building a meaningful H1–H6 outline, writing useful section names, and auditing the final HTML produced by WordPress.

Reviewed against WCAG 2.2 guidance · Written for content editors, designers, and developers

Headings are a navigation system, not decoration

Visual readers use headings to predict what a page contains and decide where to read. Screen reader users can call up a list of headings or move from one heading to the next. People with attention, memory, language, or reading difficulties also benefit when long content is divided into named, manageable sections.

A heading that only looks large helps someone who sees the page, but software may still treat it as an ordinary paragraph. Conversely, a real heading can be styled to any appropriate visual size while retaining its programmatic role. Semantic structure preserves the same relationships when presentation changes.

What WCAG actually requires

Two WCAG success criteria are especially relevant. At Level A, Success Criterion 1.3.1 requires information, structure, and relationships conveyed through presentation to be programmatically determinable or available in text. At Level AA, Success Criterion 2.4.6 requires headings and labels, when provided, to describe their topic or purpose.

Structure

A visual section title should be represented in code so assistive technology can identify it as a heading and understand its level.

Description

The wording should identify the subject or purpose of the following content; a correctly coded but vague heading can still be unhelpful.

WCAG 2.2 also includes Success Criterion 2.4.10, Section Headings, at Level AAA. It requires headings to organize content, with an exception where headings are not applicable. Even when AAA is not the target, breaking substantial content into descriptive sections is a valuable usability practice.

Do not turn best practices into false WCAG claims.

WCAG does not say that every page must contain exactly one H1, nor does it define every skipped heading level as an automatic failure. A logical, descriptive hierarchy is still the clearest and most robust authoring approach.

Think in nested sections

Heading levels express relationships. An H2 begins a major section of the H1 topic. An H3 is a subsection of the current H2. An H4 belongs inside the current H3. If the next topic has the same importance as the preceding H2, return to H2 rather than continuing downward.

Read the outline without its paragraphs. If the sequence still tells a coherent story, the hierarchy is probably useful. If an H3 appears before any relevant H2, or a topic seems nested under the wrong parent, revise the structure rather than hiding the issue with CSS.

Use the H1 to identify the page’s main topic

For ordinary articles and tool pages, one visible, descriptive H1 is a simple and dependable convention. It gives readers a clear starting point and avoids uncertainty about which title represents the primary content. The H1 should align with the page’s actual purpose, but it does not need to match the HTML title element word for word.

Multiple H1 elements are allowed by HTML, and their mere presence is not automatically a WCAG failure. However, repeated H1s created by templates, widgets, or authoring mistakes can flatten the perceived hierarchy and make a heading list harder to interpret. Use more than one only when the document model genuinely calls for it and the resulting outline remains clear.

Ambiguous page heading“Welcome” or “Everything You Need to Know” does not identify the subject without surrounding context.
Descriptive page heading“How to Check Color Contrast for Website Text” gives readers a specific and accurate topic.

Choose levels by meaning, never by appearance

Do not select H4 because its default font looks smaller than H2. Choose the semantic level first, then use CSS or theme controls for appearance. Heading rank and visual size serve different purposes.

Problem: a paragraph styled as a heading
<p class="large-bold">
  Shipping options
</p>
Better: a real section heading
<h2 class="section-title">
  Shipping options
</h2>

A common editing mistake is to start at H3 because the theme’s H2 is visually too large. This creates a structural problem to compensate for a design problem. Adjust the theme style instead. The reverse mistake—using headings to enlarge an isolated sentence, price, testimonial, or callout—adds false destinations to the heading list.

What about skipped levels?

Moving from H2 to H4 suggests that a level of grouping may be missing. It is normally clearer to move one level at a time, especially when descending into subsections. Returning upward can legitimately skip levels: after the end of an H4 subsection, the next major section may be H2. Evaluate the relationship, not just the numeric sequence.

Write headings that work outside visual context

A user navigating a heading list may hear the headings without nearby paragraphs, images, or layout. Each heading should therefore provide a useful cue about the content that follows. It can be short, but it should not be empty, misleading, or dependent on vague language.

Improving vague headings
Weak headingMore descriptive headingWhy it helps
IntroductionWhy heading structure mattersNames the specific subject
More informationBrowser and screen reader limitationsPredicts what the section contains
TipsFive ways to repair skipped levelsDefines the advice and scope
FAQQuestions about WordPress headingsAdds page-specific context

Avoid stuffing headings with repetitive search phrases. A heading should help a human decide whether to read the section. Google’s people-first content guidance similarly recommends that the main heading provide a descriptive, helpful summary rather than exaggeration or shock.

Audit the page WordPress actually publishes

The editor shows only part of the final document. A theme may render the page title as H1, a navigation widget may add headings, a related-posts block may introduce H2 elements, and reusable patterns may contain their own levels. The published DOM—not the block label in the editor—is what browsers and assistive technologies receive.

  1. Preview or publish the page.Use the final template, including the header, sidebar, related content, and footer.
  2. Collect headings in document order.Run the DOFIW Heading Structure Checker on the rendered HTML or inspect the page with browser accessibility tools.
  3. Find the primary content heading.Confirm that the page title is present and that an author-added H1 has not duplicated it.
  4. Read only the outline.Check whether each subsection clearly belongs to the heading above it.
  5. Review surrounding template regions.Navigation, widgets, popups, footers, and recommendations can create unexpected headings.
  6. Test with assistive technology.Automated output flags patterns; it cannot decide whether wording accurately describes a topic.
WordPress page-title warning.

If the theme already outputs the post title as H1, begin the article’s major sections with H2. Do not paste a second H1 inside the Custom HTML block unless the template intentionally suppresses its own title.

Handle repeated cards, accordions, and sidebars by hierarchy

Component names do not determine heading levels. A card title may be an H3 when the card group is introduced by an H2, but the same card could use H2 when it is a top-level section. A heading inside a reusable component must fit the page where that component appears.

Card gridsGive the collection a heading when needed, then make item headings one level below it.
AccordionsThe clickable label can contain a heading if each panel is a genuine document section; retain correct button behavior.
SidebarsUse headings for named regions or groups, but do not force them into the main article hierarchy conceptually.

Modal dialogs, navigation landmarks, and complementary regions may have their own labels and headings. Document order still matters. Avoid inserting hidden empty headings to “balance” the numbers; they create silent or blank navigation stops without adding structure.

Heading accessibility and search visibility overlap—but are not identical

Semantic HTML helps machines understand page content, and Google advises developers to use semantic HTML. Clear headings also make people-first content easier to scan. These are good reasons to build a meaningful outline.

However, heading order is not a shortcut to rankings, and adding keywords to every H2 does not turn thin content into useful content. A page still needs original information, accurate examples, a satisfying answer, and trustworthy sourcing. Choose headings for the reader’s questions and the document’s hierarchy; search systems can then interpret the same clear structure.

Search-first outlineSeveral near-duplicate headings repeat the same phrase while the sections add little new information.
People-first outlineEach heading answers a distinct question and introduces content that advances the reader’s task.

What a heading checker can—and cannot—tell you

An automated checker can inventory H1–H6 elements, display their document order, identify empty headings, and warn about suspicious level changes. That makes hidden template problems visible and gives reviewers a fast outline.

Good at detecting

Heading count, level sequence, empty text, multiple H1 elements, and potential downward skips in the supplied markup.

Needs human judgment

Whether a heading is accurate, whether a visual title should be a heading, whether a skip reflects real hierarchy, and whether sections are divided usefully.

The tool processes the supplied HTML locally in the browser; the content is not uploaded to a server. A clean report is not a certification of WCAG conformance. Review the rendered page, include theme content, and test representative navigation with a screen reader.

Common heading mistakes and direct fixes

  • Styled paragraph: replace the visual-only title with the appropriate H1–H6 element and keep appearance in CSS.
  • Heading used for size: return the text to a paragraph or other correct element and apply a visual class.
  • Duplicate page title: keep the theme-generated H1 and start article sections at H2.
  • Downward level skip: decide whether a parent section is missing or whether the child should use the next level.
  • Empty heading: remove it or supply descriptive visible text; do not use headings as spacing blocks.
  • Vague repeated wording: rewrite each heading so it identifies the specific section independently.
  • Component-fixed rank: allow reusable cards or panels to receive the level appropriate to their page context.
  • Visual order mismatch: align DOM order, heading hierarchy, and visible reading order.
  • Over-fragmentation: combine tiny sections when headings interrupt rather than improve comprehension.
  • Audit limited to the editor: inspect the complete published page with its template and widgets.

Heading structure checklist

  • The page has a clear visible heading that identifies its main topic.
  • Visual section titles use real heading elements.
  • Heading levels represent nesting rather than font-size choices.
  • Major sections use a consistent level, usually H2 beneath the page H1.
  • Subsections sit beneath the correct parent heading.
  • Every heading accurately describes the content that follows.
  • No headings are empty, decorative, or used only to create spacing.
  • Repeated components fit the hierarchy of the page where they appear.
  • The complete rendered WordPress page—not only article HTML—has been inspected.
  • Automated results are followed by contextual and assistive-technology review.

Frequently asked questions

Does every web page need exactly one H1?

WCAG does not require exactly one H1. For conventional articles and tool pages, one descriptive primary H1 is a clear and reliable authoring pattern. More than one should be an intentional document decision, not a template accident.

Is skipping from H2 to H4 always a WCAG failure?

No automatic rule makes every skipped level a WCAG failure. A downward skip often signals confusing or missing hierarchy, so review and usually repair it. Returning from a deep subsection to a new H2 can be structurally correct.

Can heading levels be visually the same size?

Yes. Visual style and semantic rank are separate. Ensure the design still communicates hierarchy clearly while using the correct HTML levels in code.

Can I use bold text instead of a heading?

Not when the text functions as a section heading. Bold styling alone does not expose the heading relationship programmatically. Use the appropriate heading element and style it as needed.

Should every paragraph have a heading?

No. Headings should divide meaningful sections. Too many headings can fragment a short page and make navigation noisier rather than clearer.

Does better heading structure improve SEO?

Semantic HTML and descriptive headings help clarify content for readers and machines, but they are not a ranking guarantee. Helpful, original content and sound technical foundations remain essential.

Why does my published outline differ from the WordPress editor?

The active theme, post template, navigation, widgets, patterns, related content, and plugins may add headings around your blocks. Inspect the final rendered page to see the complete document.

Official sources

This guide is educational information, not legal advice, certification, or a guarantee of WCAG conformance. Test the complete product with appropriate automated and human methods.

Leave a Reply

Your email address will not be published. Required fields are marked *