Heading hierarchy isn't negotiable typography
Headings are structural contracts
You don't get to use an H3 just because it "looks better" than an H2. Heading levels define document structure—the logical outline assistive technology uses to navigate your page. When you skip from H1 to H3 because the H2 font size feels too large, you've broken the contract between markup and meaning.
Every page gets exactly one H1. It announces the primary subject of the document. Everything nested under it starts at H2. Need a subsection within that H2 content? That's an H3. The hierarchy is strict: you can't jump levels downward, and you can't backtrack upward without closing the semantic container you opened.
Visual designers who treat heading tags as a font-size picker create pages that render fine but fail structural tests. A screen reader user tabbing through heading landmarks will hit a gap where your H3 appears without a parent H2. Search engines parsing your outline see a malformed document. Accessibility auditors flag the violation immediately.
Fix the CSS, not the markup
If your H2 looks wrong, write better styles. You have complete typographic control—font size, weight, spacing, color, borders, transforms—without touching the semantic level. An H2 can render smaller than body copy if that serves your design. What it can't do is pretend to be an H3 because you didn't configure your stylesheet properly.
Most CMS visual editors offer heading dropdowns that include all six levels. Resist the temptation to pick based on preview appearance. Choose the level that accurately represents the content's position in the document outline. Then, if the rendering doesn't work, open your CSS and adjust the H2 ruleset.
Sites that let designers control heading styles independently of semantic levels—through utility classes or inline overrides—make this mistake systemic. You end up with pages where visual hierarchy and structural hierarchy diverge completely. The person reading with a screen reader experiences a different document than the person reading visually.
Audit your existing heading structure
Run a heading outline report on your current pages. Browser extensions and accessibility checkers will generate a nested list showing every heading in document order. Look for skipped levels, multiple H1s, or H3s that appear before any H2. Each violation represents a structural error that needs markup correction, not style adjustment.
Most content teams inherit broken heading hierarchies from legacy templates or ad-hoc page building. Fixing them requires editing the source: templates, content blocks, or WYSIWYG output. You might need to set character limits before users hit them to prevent authors from creating deeply nested structures that exceed six levels.
Heading levels communicate relationships
When you write an H3, you're declaring: "This content belongs to the H2 above it." When you write an H4, you're declaring: "This content belongs to the H3 above it." Those relationships must be accurate. A page about "Services" (H1) might have "Consulting" (H2) with "Strategy Sessions" (H3) and "Implementation Support" (H3) beneath it, then "Training" (H2) as a sibling section.
Skipping levels breaks those relationships. If "Strategy Sessions" were an H4 without an intervening H3, assistive technology can't determine what container it belongs to. The outline becomes ambiguous. Readers navigating by headings miss the logical structure entirely.
Heading hierarchy isn't a suggestion. It's a specification. Get the structure right first, then style it to match your visual needs. Your stylesheet exists to serve the markup, not override it.