Skip to main content
Web Dev and Web a11y

Use Proper Headings To Create Accessible Page Structures

The code to accompany this post is "Headings". Screen reader required!

At a glance, sighted users can scan a page to understand its structure, hierarchy, and key sections. Users navigating with screen readers, for example, need that same structure communicated programmatically using properly marked-up heading elements.

Good headings act like a table of contents for your page. They help all users, not just those using assistive technology (AT), navigate content efficiently.

Why headings matter

According to the 2024 WebAIM Screen Reader Survey, 71.6% of respondents said they frequently navigate through headings. The usefulness of heading levels has continued to rise, with 88.8% reporting them as "very or somewhat useful" for finding information.

Despite those statistics, the most recent WebAIM Million Project found that 39% of home pages skipped heading levels, and nearly 10% had no headings at all - a clear sign that many pages lack accessible structure.

There are two parts to using headings effectively:

  1. Structuring your content with the correct semantic HTML elements.
  2. Writing clear, descriptive headings that reflect the content they introduce.

Good structural heading practices

Use headings to create a clear, logical outline of your page content by following these semantic rules:

Clear and descriptive headings

Think of headings as an outline for your content that helps everyone, including those using AT, navigate easily. They should also:

Screen reader heading naviation examples

Code: There is some code associated with this post that you can run and interact with.

Screen reader users rely on headings for quick navigation. Here are common ways to access heading lists and navigate between headings using the NVDA and Narrator screen readers.

NVDA Headings navigation

On page navigation: Press H to jump to the next heading, Shift + H to go to the previous one.

Alternatively, using the Elements List functionality:

Press <NVDAKey> + F7, then Alt + H to open the headings list the user can navigate this list to select the heading they want.

The headings list generated by the NVDA screen reader

Narrator Headings naviation

On page navigation: Press H to jump to the next heading, Shift + H to go to the previous one.

Alternatively, using the Elements List functionality:

Press Insert + F6 to open the headings list and select the heading they want.

The headings list generated by the Narrator screen reader

Demonstration

In the section of the below video (8:43 to 10:44), accessibility expert Leonie Watson demonstrates how proper headings help screen reader user to navigate a page's content.

Play Video: Smashing TV: How A Screen Reader Users Surfs The Web. Video starts at 8 minutes and 43 seconds in.

WCAG Success Criteria

These WCAG success criteria relate to the accessibility topics covered in this post.

1.3.1 Info and Relationships (AA) - Information, structure and relationships must be clear in code or available as text so assistive technologies can understand them.

2.4.6 Headings and Labels (AA) - Headings and labels should clearly describe the topic or purpose of the content they refer to.

2.4.10 Section Headings (AAA) - Headings should be used to organize sections of content so people can navigate and understand the page structure.