Técnica HTML WCAG 2.2
H101Marcar las zonas de la página con header, nav, main, aside y footer
Nombre oficial en el W3C: Usar elementos semánticos de HTML para identificar regiones de una página
En pocas palabras
Toda página tiene zonas: cabecera, menú, contenido principal, barra lateral y pie. Si se maquetan con los elementos de HTML pensados para ello, los lectores de pantalla las reconocen como regiones. La persona puede saltar directamente a la que le interesa, sin recorrer toda la página.
Por qué es importante
Quien ve la página distingue de un vistazo el menú, el contenido y el pie. Quien usa un lector de pantalla (programa que lee en voz alta lo que hay en la pantalla) no tiene ese vistazo.
Si todo son div, tiene que escuchar la página desde el principio. Con regiones bien marcadas, puede ir al contenido principal o al buscador con una sola tecla. Lo mismo ayuda a quien navega con extensiones de teclado.
Cómo se hace
- Use
<header>para la cabecera del sitio, con el logotipo y el buscador. - Use
<nav>para cada bloque de navegación y<main>para el contenido principal. Ponga un solomainvisible por página. - Use
<aside>para contenido complementario, como una barra lateral, y<footer>para el pie del sitio. - Ponga
headeryfooterfuera dearticle,section,main,asideynav. Dentro de ellos no cuentan como cabecera y pie de la página. - Si repite un tipo de región, por ejemplo dos
nav, dé a cada una un nombre distinto conaria-label. - Procure que todo el contenido visible quede dentro de alguna región.
Ejemplo práctico
La plantilla de una sede web municipal (cabecera, menú, contenido y pie) suele maquetarse solo con div. Con los elementos semánticos de HTML, esas zonas se convierten en regiones a las que se puede saltar directamente.
Así no: Plantilla maquetada solo con div
Cabecera, menú, contenido y pie son div con clases. A la vista se distinguen, pero no hay ninguna región. Con un lector de pantalla no se puede saltar al menú ni al contenido: hay que recorrerlo todo desde el principio.

La demostración contiene, a propósito, el error de accesibilidad que se explica.
Ver el código del ejemplo incorrecto
<style>
.cabecera { background: #412c56; color: #fff; padding: 8px 12px; font-weight: bold; }
.menu ul { display: flex; gap: 16px; list-style: none; padding: 0; margin: 10px 0; }
.menu a { color: #744E9A; }
.contenido h1 { font-size: 1.4rem; margin: 0 0 .5rem; }
.pie { border-top: 1px solid #767676; font-size: .875rem; padding-top: 8px; }
</style>
<div class="cabecera">Ayuntamiento de Villanueva</div>
<div class="menu">
<ul>
<li><a href="#">Trámites</a></li>
<li><a href="#">Noticias</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</div>
<div class="contenido">
<h1>Cita previa para el padrón</h1>
<p>Reserve día y hora para empadronarse o cambiar de domicilio.</p>
</div>
<div class="pie">© 2026 Ayuntamiento de Villanueva · <a href="#">Accesibilidad</a></div>Así sí: header, nav, main y footer
Los div se cambian por header, nav, main y footer, sin tocar el CSS. El navegador crea las regiones banner, navigation, main y contentinfo. El nav lleva aria-label para distinguirlo si se añade otro menú.
Pruébelo aquí:
Ver el código del ejemplo correcto
<style>
.cabecera { background: #412c56; color: #fff; padding: 8px 12px; font-weight: bold; }
.menu ul { display: flex; gap: 16px; list-style: none; padding: 0; margin: 10px 0; }
.menu a { color: #744E9A; }
.contenido h1 { font-size: 1.4rem; margin: 0 0 .5rem; }
.pie { border-top: 1px solid #767676; font-size: .875rem; padding-top: 8px; }
</style>
<header class="cabecera">Ayuntamiento de Villanueva</header>
<nav class="menu" aria-label="Principal">
<ul>
<li><a href="#">Trámites</a></li>
<li><a href="#">Noticias</a></li>
<li><a href="#">Contacto</a></li>
</ul>
</nav>
<main class="contenido">
<h1>Cita previa para el padrón</h1>
<p>Reserve día y hora para empadronarse o cambiar de domicilio.</p>
</main>
<footer class="pie">© 2026 Ayuntamiento de Villanueva · <a href="#">Accesibilidad</a></footer>Cómo comprobarlo
Errores frecuentes en auditorías
- Plantillas sin main: el enlace «Saltar al contenido» no tiene una región equivalente de destino.
- Varios nav (menú principal, migas de pan, pie) sin aria-label que los diferencie.
- Usar section en cada bloque esperando que sea una región. Sin nombre accesible, no lo es.
- Banners de cookies y avisos colocados al final del body, fuera de cualquier región.
Ver el texto completo del W3C (traducción al español)
Esta es una traducción no oficial al español de la técnica H101 de Techniques for WCAG 2.2, del W3C. Puede contener errores. El único documento oficial y normativo es la versión original en inglés, publicada en el sitio web del W3C.
Aplicabilidad
Tecnologías que admiten ARIA (Accessible Rich Internet Applications).
Descripción
El propósito de esta técnica es proporcionar acceso por software a las secciones de una página web. Las funciones (roles) de región, o «landmarks», identifican por software las secciones de una página. Los navegadores no muestran las regiones directamente a los usuarios, pero las tecnologías de asistencia y las extensiones del navegador las ponen a su disposición para facilitar la navegación hacia las distintas secciones de la página.
Las regiones ofrecen a los usuarios de tecnologías de asistencia una forma sencilla de entender la estructura programática de una página y de saltarse el contenido que no les interesa. Por ejemplo, si la cabecera, la navegación global, el área de contenido principal y el pie de un sitio están marcados como regiones, una persona que usa un lector de pantalla puede saltar fácilmente a la región que le interesa sin tener que recorrer todo el contenido anterior. Una persona ciega que conozca el menú de un sitio de noticias y solo quiera llegar a la noticia principal podría ir directamente a la región «main» y evitar docenas de enlaces del menú. En otra situación, una persona ciega puede querer localizar rápidamente un menú de navegación, y puede hacerlo saltando a la región de navegación.
Las regiones se crean de forma implícita al usar ciertos elementos semánticos de HTML, lo que es distinto de usar ARIA para crear regiones de forma explícita. Estos elementos son:
<header>: cuando unheaderes hijo directo del elementobody, crea una funciónbanner, una región que normalmente contiene el logotipo del sitio, su nombre y otro contenido persistente común a todo el sitio en la parte superior de la página.<nav>: una región que contiene enlaces de navegación a otras páginas o a distintas partes de la misma página.<main>: una región que contiene el contenido principal de la página.<section>: una región que contiene una sección genérica de un documento o aplicación. Un elementosectionno se expone como región a menos que tenga un nombre accesible.<form>: una región del documento que representa un conjunto de elementos asociados a un formulario, algunos de los cuales pueden representar valores editables que se pueden enviar a un servidor para su procesamiento. Un elementoformno se expone como región a menos que tenga un nombre accesible.<aside>: una región del documento que complementa el contenido principal, pero que es independiente y tiene sentido por sí misma.<footer>: una región que, cuando su ancestro más cercano es el elementobody, contiene información sobre la página, como los derechos de autor y enlaces a las declaraciones de privacidad.
Los navegadores web modernos no necesitan que se añada al elemento HTML la función ARIA equivalente para exponerlo como región. Por ejemplo, <main role="main"> es innecesario y debería ser simplemente <main>.
Hay casos en los que una misma función de región puede usarse más de una vez en una página, por ejemplo, con bloques de navegación principal y secundaria. En estos casos, las funciones idénticas deben etiquetarse mediante una técnica válida para etiquetar regiones.
Se recomienda incluir todo el contenido de la página dentro de regiones, para que los usuarios de lectores de pantalla que se apoyan en las regiones para navegar de una sección a otra no pierdan contenido por el camino.
Ejemplos
Regiones sencillas
El siguiente ejemplo muestra cómo se podrían añadir regiones a un documento HTML:
<header> site logo and name, etc. here </header>
<form aria-label="site search"> search functionality here </form>
<nav> a list of navigation links here </nav>
<main> the page's main content here </main>
<section> a sponsor's promotion here </section>
<aside> sidebar content here </aside>
<footer> site contact details, copyright information, etc. here </footer>
Varias regiones del mismo tipo y aria-labelledby
El siguiente ejemplo muestra un enfoque recomendado para añadir regiones a un documento HTML cuando hay dos o más regiones del mismo tipo en la misma página. Por ejemplo, si un elemento nav se usa varias veces en una página, cada instancia puede tener una etiqueta única especificada mediante aria-labelledby:
<nav aria-labelledby="site-nav-heading">
<h2 id="site-nav-heading">Site</h2>
<ul>
<li><a href="/news">News</a></li>
<li><a href="/weather">Weather</a></li>
<li><a href="/sport">Sport</a></li>
</ul>
</nav>
<nav aria-labelledby="related-nav-heading">
<h2 id="related-nav-heading">Related Topics</h2>
<ul>
<li><a href="/local-news">Local News</a></li>
<li><a href="/local-weather">Local Weather</a></li>
<li><a href="/local-sport">Local Sport</a></li>
</ul>
</nav>
Varias regiones del mismo tipo y aria-label
El siguiente ejemplo muestra un enfoque recomendado para añadir regiones a un documento HTML cuando hay dos o más regiones del mismo tipo en la misma página y no existe en ella ningún texto al que se pueda hacer referencia como etiqueta:
<nav aria-label="Vehicles">
<ul>
<li><a aria-current="page" href="/cars">Cars</a></li>
<li><a href="/trucks">Trucks</a></li>
<li><a href="/bikes">Bikes</a></li>
</ul>
</nav>
<nav aria-label="Tags">
<ul>
<li><a href="/cars-electric">Electric Cars</a></li>
<li><a href="/cars-gas">Gas-powered Cars</a></li>
<li><a href="/cars-family">Family Cars</a></li>
<li><a href="/cars-working">Rugged Cars For Working</a></li>
<li><a href="/cars-commuting">Cars For Suburban Commuting</a></li>
</ul>
</nav>
Formulario de búsqueda
El siguiente ejemplo muestra un formulario de búsqueda. Un elemento form debe tener un nombre accesible para exponerse como región:
<form aria-labelledby="search-label">
<label for="product-search" id="search-label">Search</label>
<input id="product-search" placeholder="title, author, or ISBN" type="text">
<button type="submit">Find Books</button>
</form>
Pruebas
Procedimiento
- Examinar cada elemento HTML que crea una función de región (landmark).
- Examinar si se ha usado el elemento correcto para marcar el contenido. Por ejemplo: se ha usado un elemento
navpara marcar una sección con enlaces de navegación, o se usa el elementomainpara contener el contenido principal de la página. - Si una región necesita tener un nombre accesible para exponerse como región, comprobar que tiene un nombre accesible.
Resultados esperados
- Las comprobaciones n.º 1, n.º 2 y n.º 3 son verdaderas.
Recursos
Cómo lo comprobamos en ADDAW
En cada auditoría de ADDAW revisamos esta técnica página a página y le entregamos los errores con capturas y la forma de corregirlos.
Basado en la técnica H101 del W3C (WCAG 2.2). Explicación y ejemplos: ADDAW. Traducción no oficial del texto del W3C © W3C, licencia de documentos del W3C. ¿Ha visto un error? Escríbanos.