Page uses semantic HTML elements
Why it matters
Search engines use semantic HTML elements — <main>, <nav>, <article>, <section>, <header>, <footer> — to identify the primary content region, navigation landmarks, and page sections. A layout built entirely from <div> elements provides no structural signal; crawlers treat every block of text as equally weighted. WCAG 2.2 SC 1.3.1 (Info and Relationships) requires that structure conveyed visually is also expressed in the markup — missing <main> means keyboard users and screen reader users cannot jump directly to the main content, breaking a core navigation pattern.
Severity rationale
Medium because semantic HTML absence degrades both crawler content weighting and assistive technology landmark navigation, but unlike broken links or missing meta tags, it does not block indexing outright.
Remediation
Replace generic <div> wrappers in your root layout with the appropriate semantic elements. At minimum, your layout should include <header>, <main>, and <footer>:
// app/layout.tsx
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<header>
<nav aria-label="Primary navigation">...</nav>
</header>
<main>{children}</main>
<footer>...</footer>
</body>
</html>
)
}
Use <article> for self-contained content (blog posts, product cards), <section> for thematic groupings with headings, and <aside> for supplementary content like sidebars. Shadcn/ui components render <div> by default — replace wrapper divs manually at the layout level rather than inside component internals.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the SEO Fundamentals Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 1.3.1 — Info and Relationships
Taxons
History
- 2026-04-18·v1.0.0·Initial import from seo-fundamentals·automated