html5-semantic-elements · git:20260529.7c05904 · 2026-05-29 · sha256 c9f734469a0eb26a

html5-semantic-elements git:20260529.7c05904A

Immutable. This exact content never changes and is served at /api/v1/blob/c9f734469a0eb26a.

---
name: html5-semantic-elements
description: "Use when reviewing templates, rendered HTML, or shared components related to Use semantic HTML elements. Validate the final browser-facing markup, not just the source framework abstraction."
metadata:
  category: html
  priority: high
  difficulty: beginner
  estimatedTime: "15"
  source: frontendchecklist.io
  url: https://frontendchecklist.io/en/rules/html/html5-semantic-elements
---

# Use semantic HTML elements

Screen readers use semantic elements to navigate pages—users can jump directly to <main> content or <nav>. Search engines also use semantics to understand content hierarchy.

## Quick Reference

- Use <header>, <main>, <footer> for page structure
- Use <article> for self-contained content, <section> for grouped content
- Use <nav> for navigation, <aside> for related/sidebar content
- Only one <main> per page, but multiple <header>/<footer> allowed

## Check

Review this HTML structure to ensure it uses appropriate semantic elements like header, main, section, article, aside, and footer instead of generic div elements.

## Fix

Replace generic div elements with semantic HTML5 elements that accurately describe the content structure and purpose.

## Explain

Explain how semantic HTML elements improve accessibility, SEO, and code maintainability by providing meaningful structure to web content.

## Code Review

Review templates, server-rendered HTML, and shared components that output markup related to Use semantic HTML elements. Flag exact elements, attributes, and routes where the rendered HTML violates the rule.

---

For full implementation details, code examples, and framework-specific guidance,
see `references/rule.md`.

Rule page: https://frontendchecklist.io/en/rules/html/html5-semantic-elements