WCAG 2.4.6 requires that headings and labels, when you use them, describe the topic or purpose of the content or control they belong to, so "Section 2" or "Field 1" fails while "How refunds work" and "Phone number" pass. This AA rule judges only the words, not whether headings exist.
We explain what counts as a label, who relies on clear wording, the rewrites auditors ask for most, a before and after form, a reading routine, and how the rule fits with structure rules. The full set of AA rules is on WCAG 2.2 AA.
Quick facts
Level
AAAdded in
WCAG 2.0Principle
Operable, guideline 2.4 NavigableJudges
The wording of headings and labels, not their presencePresence is
1.3.1 for markup, 3.3.2 for form labels, 2.4.10 (AAA) for section headingsFast test
Read the heading list and field labels out of context
WCAG 2.4.6 judges wording, not existence
Many teams read this rule as "pages must have headings". It does not say that. It says that when you do use headings and labels, they must describe the topic or purpose of what they introduce. A page with no headings can pass 2.4.6. A page with ten headings called Section can fail it.
Whether headings are present and marked up in code is a separate question, handled by info and relationships. Whether a form gives labels at all is handled by labels or instructions. This rule only checks the words.
Describe does not mean long. "Shipping" is a fine heading for a section about shipping. Short and clear beats long and complete.
What counts as a heading or a label
Headings are the titles of sections of content, normally h1 to h6, but also any text that visually works as a heading.
Labels are the visible text that names a component: the text beside a form field, the words on a button, the caption of a toggle, the name on a tab. If a person reads it to know what a control is for, it is a label for this rule.
The rule applies to the visible words. Hidden accessible names are judged under other criteria, such as name, role and value.
Who relies on descriptive headings and labels
- Screen reader users jump through a list of headings, so each one has to make sense without the text under it.
- People with cognitive or learning disabilities use headings to understand how a page is organised and where they are.
- People with low vision scan headings at high zoom to find the part they need.
- Everyone filling in forms makes fewer mistakes when labels say exactly what to type.
- Translators and support teams also benefit, because clear headings make content easier to reuse.
Vague headings and labels we rewrite most
| Where | Vague | Descriptive |
|---|---|---|
| Section heading | Section 2 | How refunds work |
| Repeated heading | More info (four times) | Opening hours, Parking, Accessibility, Contact |
| Form label | Field 1 | Phone number |
| Form label | Date | Date of birth (DD MM YYYY) |
| Button | Submit | Send application |
| Toggle | On | Email me about new orders |
| Tab label | Tab 3 | Delivery and returns |
Not every short label fails. Submit on a one-field search form is clear. The test is whether a person would know what the control or section is for.
Before and after: a contact form
Fails: the heading and labels do not say what the form or fields are for.
<h2>Form</h2>
<label for="a">Input</label>
<input id="a" type="text" autocomplete="name">
<button type="submit">Go</button>Passes: the heading names the task, and each label and button says what it does.
<h2>Ask our support team</h2>
<label for="a">Your name</label>
<input id="a" type="text" autocomplete="name">
<button type="submit">Send question</button>A quick 2.4.6 wcag review
This is a reading exercise. Content designers and editors are often better at it than developers.
- Extract the outline. List all headings on the page with a heading viewer extension or a screen reader's heading list.
- Read headings as a table of contents. Ask whether each heading, read alone, tells you what the section below it is about.
- Spot duplicates. Flag headings that repeat word for word on the same page when the sections differ, such as several called Overview.
- Walk the form fields. Tab through every field and read its visible label: does it say what to enter, without relying on placeholder text?
- Check buttons and controls. Read the text of each button and control and confirm it describes the action, such as Send message rather than OK.
- Note vague wording. Record each unclear heading or label with a suggested rewrite, since the fix is usually a few words.
Read the heading list aloud to a colleague who has not seen the page. If they cannot guess what each section contains, the headings need work.
Where this rule ends and its neighbours begin
| Criterion | Level | Question it asks |
|---|---|---|
| 1.3.1 | A | Are visual headings and labels marked up in the code? |
| 3.3.2 | A | Are labels or instructions provided where input is needed? |
| 2.4.6 | AA | Is the wording of existing headings and labels descriptive? |
| 2.4.10 | AAA | Are headings used to organise the content into sections? |
| 2.5.3 | A | Does the accessible name contain the visible label text? |
A bold line that reads "Delivery options" but is coded as a paragraph passes this rule and fails 1.3.1. An h2 that reads "Info" passes 1.3.1 and fails this one. W3C explains the scope in Understanding Headings and Labels.
Questions people ask
What does 2.4.6 wcag require?
Headings and labels must describe the topic or purpose of the content or control they belong to. The level is AA, and the rule dates back to WCAG 2.0. Adding headings or labels where none exist is a job for other criteria.
Does every page need headings to pass 2.4.6?
No. If there are no headings, this rule has nothing to judge. Requiring headings for sections is the AAA rule 2.4.10, and marking up visual headings is 1.3.1.
Are button names covered by headings and labels?
Yes, visible text on buttons and other controls works as a label. Words like Go or Click are vague unless the context makes the action obvious.
Can two headings on a page have the same text?
Yes, if they introduce sections that really are about the same thing in different places, such as Price under each product. It becomes a problem when identical headings hide different topics.
Is placeholder text a label under 2.4.6?
Placeholder text disappears when someone types, so it is a weak label and usually fails 3.3.2 on its own. Use a visible label element, then make its wording descriptive for 2.4.6.