---
title: "Skipped heading level (a11y/heading-skip)"
description: "Jumping from h1 to h3 breaks the outline that screen-reader users navigate by (Lighthouse: heading elements are not in a sequentially-descending order)."
url: http://localhost:4173/rules/a11y/heading-skip
updated: 2026-11-11
---

# Skipped heading level

> `a11y/heading-skip` is a vetd rule. It flags: Skipped heading level. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `a11y/heading-skip` |
| Severity | warning |
| Group | Accessibility |
| Tags | accessibility, seo, lighthouse |

## Why it matters

Jumping from h1 to h3 breaks the outline that screen-reader users navigate by (Lighthouse: heading elements are not in a sequentially-descending order).

## How to fix it

Use the next level down and style it with classes.

## Credit

Based on work by:

- [Deque](https://www.deque.com): The axe rule heading-order says heading levels should only increase by one.
- [W3C Web Accessibility Initiative](https://www.w3.org/WAI/): The WAI headings tutorial and WCAG 1.3.1 treat headings as structure that assistive technology navigates.

## References

- [Heading levels should only increase by one](https://dequeuniversity.com/rules/axe/4.10/heading-order), Deque University
- [Headings](https://www.w3.org/WAI/tutorials/page-structure/headings/), W3C
- [Understanding Success Criterion 1.3.1: Info and Relationships](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html), W3C
- [<h1>–<h6> HTML section heading elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements), MDN Web Docs

## See it

Demos in the vetd Lab:

- [One H1, no skipped levels](http://localhost:4173/lab/web-standards/heading-hierarchy)
- [Headings and a skip link](http://localhost:4173/lab/web-guidelines/headings-and-skip-link)

## Related rules

- [`a11y/dup-id`](http://localhost:4173/rules/a11y/dup-id.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "a11y/heading-skip" }`. CLI: `npx vetd explain a11y/heading-skip`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`a11y/iframe-title`](http://localhost:4173/rules/a11y/iframe-title.md) · Next: [`a11y/dup-id`](http://localhost:4173/rules/a11y/dup-id.md)
