---
title: "Heading levels skip (a11y/heading-order)"
description: "a11y/heading-order: Skipping from h2 to h4 breaks the document outline that assistive technology exposes."
canonical: https://void-design.vercel.app/rules/a11y/heading-order
lastModified: 2026-09-16
---

# Heading levels skip

`a11y/heading-order` · severity **warn** · category Accessibility · detected by `void a11y` and `void audit`

## Why it matters

Skipping from h2 to h4 breaks the document outline that assistive technology exposes.

## How to fix it

Use heading levels in order; style with CSS rather than picking levels by size.

## References

- https://dequeuniversity.com/rules/axe/4.13/heading-order

## More accessibility rules

`void a11y` reports 48 rules in this category. WCAG 2.2 AA through axe-core, plus checks axe can't do alone: visible keyboard focus, 24/44px target size on mobile, 320px reflow and disabled zoom.

- `landmark-one-main` Page has no <main> landmark — [a11y/landmark-one-main](https://void-design.vercel.app/rules/a11y/landmark-one-main)
- `region` Content is outside landmark regions — [a11y/region](https://void-design.vercel.app/rules/a11y/region)
- `landmark-unique` Landmarks are not uniquely identifiable — [a11y/landmark-unique](https://void-design.vercel.app/rules/a11y/landmark-unique)
- `page-has-heading-one` Page has no level-one heading — [a11y/page-has-heading-one](https://void-design.vercel.app/rules/a11y/page-has-heading-one)
- `empty-heading` Heading is empty — [a11y/empty-heading](https://void-design.vercel.app/rules/a11y/empty-heading)
- `list` List contains invalid children — [a11y/list](https://void-design.vercel.app/rules/a11y/list)
- `listitem` <li> is not inside a list — [a11y/listitem](https://void-design.vercel.app/rules/a11y/listitem)
- `aria-allowed-attr` ARIA attribute is not allowed on this role — [a11y/aria-allowed-attr](https://void-design.vercel.app/rules/a11y/aria-allowed-attr)

Detected by `void a11y` and `void audit`. Explain it in a terminal: `void rules a11y/heading-order`
