p-as-heading

A <p> styled to look like a heading should probably be a real heading

manualWCAG 1.3.1 (A)confidence: lowseverity: minorperceivable

Flags short <p> elements whose entire text is bold and rendered at >=18px, for manual review of whether a real heading element should be used instead.

Applies to. `<p>` elements with short (<=120 char), non-empty trimmed text content that is entirely bold (the `<p>`'s own computed `font-weight` >= 700, OR its entire text is wrapped in a single `<strong>`/`<b>` child) and rendered at >=18px.

Expectation. Text styled to visually read as a heading (bold, larger-than-body size, short) should be marked up with a real heading element (`<h1>`-`<h6>` or `role="heading"`) so its structural role is programmatically determinable, the same 1.3.1 concern as any other "structure conveyed through presentation only" issue.

Examples

can't tell
<style>.fakeHeading { font-weight: bold; font-size: 22px; }</style>
<p class="fakeHeading">Section Title</p>

Bold, heading-sized, and short — visually a heading, but marked up as a plain `<p>` with no heading semantics.

n/a
<p>Just a normal paragraph of body text that is not bold at all.</p>

Normal weight and size; nothing visually suggests a heading.

View source