Skip to main content

Headings and Labels.

Accessibility WCAG 2.1/2.2 Automated Compliance

Proper heading hierarchy lets screen reader users navigate by section

What does this check test?

This check verifies that headings and labels describe the topic or purpose of the content they introduce. Headings must follow a logical hierarchy (h1 > h2 > h3) without skipping levels, and each heading must be descriptive enough that a user scanning only the headings can understand the page structure. Form labels must clearly describe what input is expected. This maps to WCAG 2.2 Success Criterion 2.4.6 (Level AA).

Why does it matter?

Screen reader users navigate primarily by headings — JAWS users report that navigating by headings is their number one strategy for finding information on a page (WebAIM Screen Reader User Survey). When headings are missing, vague (e.g., "Section 1"), or skip levels (h1 to h4), the page becomes a wall of undifferentiated text. A well-structured heading hierarchy is essentially a table of contents for assistive technology users. Similarly, form labels like "Field 1" or missing labels force users to guess what information is required.

Who is affected?

Content authors writing page headings, front-end developers structuring page layouts, UX writers crafting form labels, and CMS template developers ensuring content editors can create proper heading hierarchies. Design system maintainers should provide heading components that enforce hierarchy rules.

Where does this apply?

Every page on the site. Check the heading hierarchy from h1 through h6 — each page should have exactly one h1 (the page title), and subsequent headings should nest logically. All form fields must have visible, descriptive labels. Accordions, tabs, and expandable sections should use headings inside them for navigation. Search results, article listings, and product catalogs need descriptive headings for each item.

How to fix it

Structure headings hierarchically. Never use headings purely for visual styling — use CSS instead. Write descriptive headings and labels. Correct heading hierarchy:
html
<!-- Bad: skipped levels, vague text -->
<h1>Our Store</h1>
<h4>Policy</h4> <!-- skipped h2 and h3 -->

<!-- Good: logical nesting, descriptive text -->
<h1>Product Catalog</h1>
  <h2>Electronics</h2>
    <h3>Laptops</h3>
    <h3>Phones</h3>
  <h2>Clothing</h2>
Descriptive form labels:
html
<!-- Bad: vague label -->
<label for="phone">Phone</label>

<!-- Good: tells the user exactly what to enter -->
<label for="phone">Phone number (including country code)</label>
<input id="phone" type="tel">
Avoid empty headings — a common issue with CMS-generated content. Automated tools detect missing labels, empty headings, and skipped heading levels. Manual review is needed to assess whether heading text is actually descriptive.

References

AppVet checks Headings and Labels automatically

Run a free accessibility scan and get a full report with actionable fixes, including a Fix with AI prompt you can paste into any coding tool.

Run Audit