Compruebe la jerarquía de encabezados y los errores de H1
Escriba sus encabezados en el orden de la página y vea si la jerarquía se sostiene: h1, h2, h3, h2, h3 pasa, mientras que ir de h2 directamente a h4 se señala como un h3 que falta, en su posición exacta. Se exige un solo h1. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Encabezados
- h1, h2, h3, h2, h3
- Cantidad de encabezados
- 5
- Cantidad de H1
- 1
Una jerarquía de encabezados puede parecer correcta en pantalla mientras sus etiquetas cuentan otra historia. Este verificador recibe etiquetas en el orden del documento, como h1, h2, h3 y h2, y aplica dos reglas concretas: debe existir exactamente un h1 y ningún encabezado puede descender más de un nivel cada vez. El resultado indica la validez, la cantidad de h1 y la posición exacta de cada salto para que los equipos editoriales y los sistemas de publicación puedan corregirlos.
Prepare la secuencia en el orden del documento
Comience con las etiquetas tal como aparecen en el documento renderizado, no según un diseño ni un esquema editorial. Una entrada habitual puede ser h1, h2, h3, h2, h3. El orden es esencial, porque la jerarquía se expresa mediante el paso de un encabezado al siguiente.
El verificador admite etiquetas de h1 a h6, elimina los espacios exteriores y trata formas en mayúsculas como H2 igual que sus equivalentes en minúsculas. No admite HTML arbitrario, texto de encabezados, clases CSS ni números aislados. Extraiga esos datos antes de enviar la solicitud para conservar una lista inequívoca.
Una lista vacía se rechaza como entrada no válida porque no contiene una estructura que evaluar. Una etiqueta incorrecta también se rechaza indicando su índice, lo que facilita localizar fallos en la extracción. Esta separación resulta útil en procesos automatizados: una etapa extrae las etiquetas y esta capacidad evalúa exclusivamente su orden y sus niveles.
Interprete las dos reglas de jerarquía
La primera regla exige exactamente un h1 en toda la lista. Si no hay ninguno, el documento carece de un encabezado superior único; si hay dos o más, el nivel principal se repite. La segunda regla compara cada pareja adyacente e informa de un salto cuando el número siguiente supera al anterior en más de una unidad.
Por tanto, pasar de h2 a h4 señala que falta h3. Pasar de h1 a h5 indica que faltan h2, h3 y h4 en esa transición. Subir de h4 a h2 es válido, pues cierra contenido anidado y vuelve a una sección más amplia.
Repetir un nivel también es válido: dos h2 consecutivos pueden presentar secciones hermanas. El verificador informa de todos los saltos sin detenerse en el primero. Cada registro incluye el índice de destino, empezando en cero, la transición y las etiquetas intermedias ausentes.
El resultado solo es válido si hay un h1 y no existen saltos de nivel.
Aplique el resultado en revisiones y controles de publicación
Utilice el campo de validez para una decisión sencilla y conserve los detalles para ofrecer instrucciones útiles. El recuento total confirma cuántas etiquetas se evaluaron y el número de h1 explica si se cumplió la regla superior. Cada salto apunta al índice de destino donde ocurre el descenso incorrecto, de modo que un editor o una herramienta de compilación pueda localizarlo sin interpretar mensajes ambiguos.
La lista de incidencias ofrece resúmenes breves en inglés para registros, comentarios de revisión o interfaces de gestión de contenido. Esta capacidad no juzga la redacción, las palabras clave, el tamaño visual, los encabezados sin texto ni el número ideal de secciones. Tampoco descarga direcciones URL ni analiza HTML: quien parta de una página debe extraer primero las etiquetas ordenadas.
Qué puede hacer con ella
Bloquear esquemas de artículos incorrectos
Rechace un borrador cuando sus etiquetas no incluyan un único h1 o salten directamente a un nivel mal anidado.
Revisar plantillas después de un rediseño
Compare páginas renderizadas representativas y detecte saltos introducidos por componentes reutilizables o cambios del tema.
Añadir controles estructurales a CI
Convierta la lista ordenada de etiquetas de una compilación estática en un resultado determinista antes del despliegue.
Preguntas frecuentes
¿Cuánto cuesta la comprobación?
El cálculo es determinista y no llama a servicios externos.
¿Volver de h4 a h2 se considera un salto?
No. Volver a un nivel más amplio está permitido; solo se informa de un descenso que aumenta más de un nivel.
¿Se admiten etiquetas en mayúsculas?
Sí. Las formas como H1 y H3 se normalizan a minúsculas tras validarlas y se ignoran los espacios exteriores.
¿Esta capacidad analiza una página HTML?
No. Espera una lista ya extraída de etiquetas entre h1 y h6 en el orden del documento y solo valida esa secuencia.
¿Qué pasa si la página no tiene h1 o tiene más de uno?
La comprobación falla en ambos casos. Sin h1, el documento no tiene un único encabezado principal; con dos o más, el nivel superior se repite. Se devuelve el número de h1 para que usted vea cuál de los dos casos se da.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/seo/heading-structure-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"headings":["h1","h2","h3","h2"]}'const res = await fetch("https://api.kit.forhosting.com/seo/heading-structure-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"headings": [
"h1",
"h2",
"h3",
"h2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/heading-structure-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"headings": [
"h1",
"h2",
"h3",
"h2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/heading-structure-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"headings":["h1","h2","h3","h2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"headings":["h1","h2","h3","h2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/heading-structure-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"headings": [
"h1",
"h2",
"h3",
"h2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.heading_structure_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Preguntas técnicas
¿Qué ocurre si la lista está vacía?
La solicitud devuelve un error invalid_input porque una secuencia vacía no contiene una estructura que pueda validarse.