Antes de HTML5, todo se armaba a puro <div>. Hoy existen etiquetas que describen qué es cada bloque, no solo cómo se ve — eso ayuda a lectores de pantalla, a buscadores y a cualquier dev que lea el código después.
header, main, footer
Landmarks de nivel de página. Debería existir un único <main> por página: es el contenido principal, el que un lector de pantalla puede saltar a escuchar directamente.
header
main
footer
<header>Logo y navegación</header>
<main>Contenido principal de la página</main>
<footer>Links legales, contacto</footer>
→Un <div> con clase 'header' no le comunica nada al navegador ni a tecnologías de asistencia. La etiqueta <header> sí.
nav
Envuelve un bloque de enlaces de navegación principal — no todos los grupos de links necesitan nav, solo los que son navegación real del sitio (menú principal, breadcrumbs, paginación).
section agrupa contenido temáticamente relacionado y, en general, debería tener su propio heading (h2, h3...). Si un bloque es puramente de estilo/layout y no representa un tema propio, un div sigue siendo correcto.
<section>
Nuestros planes
Contenido temático relacionado
<section>
<h2>Nuestros planes</h2>
<p>...</p>
</section>
<!-- vs. un contenedor solo de estilo -->
<div class="grid grid-cols-3 gap-4">...</div>
→Regla rápida: si le pondrías un heading arriba, probablemente es <section>. Si es puro layout (una grilla, un wrapper de padding), es <div>.
article
Contenido que tendría sentido por sí solo si lo sacaras de la página y lo pegaras en otro sitio: un post de blog, una tarjeta de producto, un comentario, una noticia.
12 ago 2026
Cómo aprender el box model
Un artículo autocontenido...
<article>
<h2>Título del post</h2>
<p>Fecha, autor...</p>
<p>Contenido del post...</p>
</article>
→Pregunta clave: ¿este bloque de contenido tendría sentido en un feed RSS o compartido de forma aislada? Si sí, es <article>.
aside
Contenido relacionado pero secundario respecto al flujo principal: una barra lateral, notas al margen, links relacionados, publicidad contextual.