Heading text quality is the orthogonal axis to heading hierarchy: a page can have a perfect H1 → H2 → H3 outline (passing structural audits) and still have terrible heading text. Common quality issues:
Placeholder text: CMS / WYSIWYG / template defaults that escaped to production. Common patterns:
Untitled,Untitled Page,New Page-- WordPress / Squarespace defaultsHeading,Heading 1,H2-- editor-block placeholdersLorem ipsum dolor sit amet...-- design-stage fillerClick here,Read more-- generic link text accidentally used as heading{{title}},${heading}-- template-engine leaks (server failed to render)TODO: write heading-- editorial drafts shipped without revision
Length extremes:
- ≤2 characters: usually emoji, typo, or alignment hack -- not a real heading. Screen readers announce "heading 2" + the single character, conveying nothing.
-
120 characters: almost always a paragraph that received heading semantics by accident (CMS editor selected the wrong block type). Screen readers will announce "heading" and read the entire paragraph at heading prosody.
All-uppercase styling: when the text itself is uppercase ("WELCOME TO ACME") rather than lowercase styled with text-transform: uppercase, some screen readers read it letter-by-letter ("W-E-L-C-O-M-E"). Style with CSS, not by typing in caps. Short acronyms (≤3 chars: API, FAQ, PDF) are intentional and not flagged.
The BeaverCheck heading-quality analyzer complements AnalyzeHeadings (which covers presence, hierarchy, skips, empty headings) by auditing the textual substance of the headings that ARE present.
Why search engines and screen readers care: heading text is one of the highest-weighted content signals. Search engines use it to understand page structure for snippet generation; screen readers offer "navigate by headings" as a primary navigation mode for visually-impaired users. Placeholder text in headings = pages that read as "Heading 1 -- Untitled. Heading 2 -- Heading. Heading 3 -- Lorem ipsum dolor."