Todos los navegadores renderizan HTML no válido - solo que lo renderizan de forma distinta. Esa inconsistencia es la causa raíz de la mayoría de los bugs de maquetación entre navegadores, de los datos estructurados rotos y de las metaetiquetas mal leídas. Esta guía cubre las mejores herramientas para comprobar el HTML en busca de errores, cómo leer la salida del validador, los errores de HTML más comunes y sus soluciones, y cómo integrar la validación de HTML en tu flujo de desarrollo para que los errores nunca lleguen a producción.
Por qué importa validar HTML
Los navegadores no rechazan el HTML no válido - disponen de una recuperación de errores integrada que intenta renderizar el marcado malformado lo mejor posible. El problema es que el algoritmo de recuperación de cada navegador es diferente. Una etiqueta de cierre ausente que Chrome gestiona de una manera puede renderizarse de forma completamente distinta en Safari o Firefox, produciendo bugs de maquetación notoriamente difíciles de diagnosticar y reproducir.
Las cuatro razones para validar HTML
- Consistencia entre navegadores - el HTML válido es la única garantía de que todos los navegadores rendericen tu página de forma idéntica
- SEO y rastreabilidad - el marcado malformado hace que los rastreadores lean mal las etiquetas canónicas, los datos estructurados y las meta descripciones
- Accesibilidad - los lectores de pantalla dependen del orden correcto de encabezados, las asociaciones de etiquetas y los atributos ARIA que el HTML no válido puede romper
- Mantenibilidad - el marcado válido es más fácil de estilizar, programar y modificar sin efectos secundarios inesperados
Qué exige la especificación de HTML
La especificación HTML5 define un modelo de conformidad - un conjunto de reglas que los documentos HTML válidos deben seguir. Estas reglas cubren el anidamiento de elementos, los atributos obligatorios, los elementos obsoletos, la sintaxis de los elementos vacíos, las declaraciones de codificación de caracteres y decenas de restricciones más. Un validador comprueba tu marcado contra estas reglas y notifica cada infracción. Corregir las infracciones te da un marcado que todos los parsers conformes a la especificación gestionan de forma idéntica.
Note
Tipos de errores de HTML
Los validadores clasifican los problemas en dos categorías: errores y advertencias. Entender la distinción antes de empezar a corregir te ayuda a priorizar correctamente y a no perder tiempo en problemas sin impacto real.
Errores frente a advertencias
| Tipo de problema | Ejemplo | Impacto | Prioridad |
|---|---|---|---|
| Etiqueta sin cerrar | <div> sin </div> | Colapso de anidamiento, maquetación rota | Corregir de inmediato |
| Anidamiento no válido | <p><div>…</div></p> | El navegador lo corrige de forma inconsistente | Corregir de inmediato |
| Elemento obsoleto | <font>, <center>, <frame> | Eliminado de la especificación HTML5 | Corregir al refactorizar |
| Atributo duplicado | id="x" id="y" en el mismo elemento | El segundo valor se ignora en silencio | Corregir de inmediato |
| Atributo obligatorio ausente | <img> sin alt | Fallo de accesibilidad | Corregir de inmediato |
| Atributo obsoleto | type="text/javascript" | Redundante pero inofensivo en HTML5 | Baja prioridad |
| Codificación de caracteres incorrecta | & sin ; en valor sin comillas | Ambigüedad de análisis | Corregir al detectarlo |
| Advertencia: mal uso de ARIA | role en el elemento equivocado | Confusión del lector de pantalla | Corregir en la pasada de accesibilidad |
Errores de análisis frente a errores de conformidad
Un error de análisis significa que el tokenizador de HTML encontró algo que no puede procesar - como un carácter `<` suelto en el contenido de texto, o un valor de atributo sin comilla de cierre. Un error de conformidad significa que el marcado es sintácticamente analizable pero infringe una regla de la especificación - como anidar un `<div>` dentro de un `<p>`. Ambos aparecen como errores en un validador, pero los errores de análisis son más urgentes porque causan un comportamiento de tokenización impredecible entre los distintos motores de renderizado.
Tip
Cómo comprobar el HTML en busca de errores
Hay cuatro métodos prácticos para comprobar el HTML en busca de errores, cada uno adecuado para una etapa distinta del desarrollo. Usarlos en combinación te da la cobertura más completa.
Pega el HTML en el validador online
El método más rápido: abre el Validador de HTML, pega tu marcado - documento completo o fragmento - y ejecuta la comprobación. Los resultados aparecen de inmediato con números de línea, nombres de elementos y una descripción en lenguaje claro de cada problema. Sirve para revisar plantillas, HTML generado, marcado de correo y cualquier HTML que no puedas ver fácilmente en un navegador.
Usa las DevTools del navegador para inspección en vivo
Abre DevTools (F12 en Chrome o Edge, Cmd+Opción+I en Mac) e inspecciona el panel Elementos. El DOM renderizado del navegador muestra cómo interpretó tu marcado tras la recuperación de errores - las etiquetas de cierre ausentes aparecen como elementos autoinsertados y el anidamiento malformado se muestra como nodos del árbol reordenados. La pestaña Consola también registra algunos errores de análisis de HTML directamente. DevTools muestra el DOM post-recuperación, no tu fuente, así que úsalo junto a un validador, no en su lugar.
Ejecuta el validador del W3C para la conformidad con los estándares
El Servicio de Validación de Marcado del W3C en validator.w3.org es el validador de referencia autoritativo para la especificación HTML5. Acepta una URL, subida de archivo o entrada directa. Úsalo para una comprobación definitiva de conformidad con los estándares antes de lanzamientos importantes, o cuando un cliente o auditor exija certificación de validación W3C. Para comprobaciones iterativas rápidas durante el desarrollo, un validador basado en navegador es más veloz.
Corrige el marcado roto automáticamente con el HTML Broken Tag Fixer
Si tu HTML tiene una gran cantidad de etiquetas sin cerrar o errores de anidamiento - habitual en HTML generado por exportaciones de CMS, conversores de PDF a HTML o plantillas heredadas - el HTML Broken Tag Fixer cierra automáticamente las etiquetas sin cerrar y corrige el anidamiento emparejado incorrectamente. Úsalo para obtener una base limpia y luego revalida para confirmar que las correcciones estructurales son correctas.
Revalida hasta que el recuento de errores sea cero
Tras corregir los errores, pega el HTML corregido de nuevo en el validador y ejecuta otra vez. Algunos errores solo se vuelven visibles después de corregir los anteriores - una sola etiqueta `<div>` sin cerrar cerca del comienzo de un documento puede ocultar decenas de errores de anidamiento posteriores. Repite el ciclo validar-corregir-validar hasta que el resultado quede limpio.
Validador de HTML
Comprueba cualquier HTML en busca de etiquetas sin cerrar, anidamientos no válidos, elementos obsoletos y cumplimiento de HTML5 - resultados instantáneos con números de línea y descripciones de error en lenguaje claro, sin subidas.
Entender la salida del validador
La salida del validador resulta intimidante en una página con muchos errores, pero sigue una estructura consistente. Entender la anatomía de un único mensaje de error te permite recorrer una lista larga de forma eficiente sin leer cada uno en detalle completo.
Anatomía de un mensaje de error del validador
Cada error contiene cuatro piezas de información: la ubicación (número de línea y columna, p. ej. `Line 47, Column 12`), la severidad (Error o Advertencia), el elemento o atributo implicado (`element "div"`, `attribute "align"`) y la descripción de la infracción de la regla en lenguaje claro. La descripción es la parte más importante - te dice exactamente qué exige la especificación y qué aportó tu marcado en su lugar.
Errores en cascada y cómo identificarlos
Cuando un parser encuentra una etiqueta sin cerrar, puede malinterpretar todo lo que sigue, produciendo una cascada de errores secundarios causados todos por el único error original. Si la salida de tu validador muestra muchos errores en líneas consecutivas que involucran al mismo elemento padre, busca una etiqueta sin cerrar o un anidamiento incorrecto más arriba en el archivo. Corrige ese único problema y revalida - los errores en cascada probablemente desaparecerán.
Warning
Qué significa "end tag for element which is not open"
Este error significa que el validador encontró una etiqueta de cierre - como `</div>` - sin la correspondiente etiqueta de apertura en ese nivel de anidamiento. La causa más común es un par de etiquetas apertura/cierre desparejado anterior en el documento donde la etiqueta de apertura se escribió mal o se borró accidentalmente. Cuenta las apariciones de `<div>` y `</div>` en la región afectada para encontrar el desajuste.
Errores comunes de HTML y cómo corregirlos
Estos son los errores que aparecen con más frecuencia en los resultados reales de validación de HTML. Cada entrada describe el error, muestra por qué ocurre y da la corrección directa.
Etiquetas sin cerrar
Un `<div>`, `<span>`, `<p>` o `<li>` sin cerrar es el error de HTML más común. Los navegadores cierran las etiquetas sin cerrar automáticamente, pero el algoritmo de autocierre de cada navegador es diferente. En elementos de bloque como `<div>`, una etiqueta sin cerrar puede absorber el contenido posterior en el padre equivocado, rompiendo tu maquetación CSS. La corrección es directa: añade la etiqueta de cierre ausente en el nivel de anidamiento correcto. El HTML Broken Tag Fixer lo hace automáticamente para documentos grandes con muchas etiquetas sin cerrar.
Anidamiento no válido
Las reglas de anidamiento de HTML son específicas: los elementos `<p>` no pueden contener elementos de bloque como `<div>`, `<ul>` o `<table>`. Un `<li>` debe ser hijo directo de `<ul>` u `<ol>`. Un `<td>` debe ser hijo directo de `<tr>`. Cuando anidas elementos incorrectamente, los navegadores corrigen el anidamiento por su cuenta - a veces moviendo tu elemento fuera de su padre previsto, rompiendo la maquetación visual. La corrección es reestructurar el marcado afectado para que cada elemento sea un hijo válido de su padre.
Atributos obligatorios ausentes
- `<img>` sin `alt` - obligatorio en HTML5 y crítico para lectores de pantalla; añade texto alt descriptivo o `alt=""` para imágenes decorativas
- `<input>` sin `type` - por defecto es `text` pero debe ser explícito por la semántica de formularios y las pistas de teclado móvil
- `<a>` sin `href` - un ancla sin href es técnicamente válida pero semáticamente carente de sentido; usa `<button>` para acciones de clic
- `<meta charset>` ausente - obligatorio en HTML5; añade `<meta charset="UTF-8">` como primer elemento dentro de `<head>`
- `<html lang>` ausente - obligatorio para accesibilidad; especifica el idioma de la página con `lang="es"` o la etiqueta BCP 47 apropiada
Elementos obsoletos y en desuso
HTML5 eliminó `<font>`, `<center>`, `<strike>`, `<frame>`, `<frameset>` y varios atributos de presentación como `align`, `bgcolor` y `border` en la mayoría de los elementos. Los validadores los marcan como errores porque no forman parte de la especificación HTML5. Sustitúyelos por sus equivalentes CSS: `<center>` se convierte en `text-align: center`, `<font>` en estilos en línea o clases CSS, y `<frame>` en `<iframe>` o un enfoque de maquetación CSS.
IDs duplicados
Cada valor de atributo `id` debe ser único dentro de una página. Los IDs duplicados hacen que `document.getElementById()` de JavaScript devuelva solo el primer elemento coincidente, que el comportamiento `:focus` de CSS apunte al elemento equivocado y que los enlaces de ancla se desplacen a la ubicación incorrecta. Los validadores marcan cada ID duplicado como error. Audita tu HTML con el Validador de HTML para encontrar todos los duplicados y luego haz único cada valor de ID o convierte el `id` repetido en una `class` si el valor se usa para estilizar en lugar de identificar.
Validación de HTML en tu flujo de trabajo
Ejecutar un validador una vez en el lanzamiento es mejor que nada, pero el enfoque de mayor valor es validar el HTML de forma continua durante todo el desarrollo. Cuanto antes se detecta un error, más barato es corregirlo.
Durante el desarrollo: linting del editor
El servidor de lenguaje HTML integrado de VS Code resalta etiquetas sin cerrar y anidamientos no válidos en tiempo real mientras escribes. Para comprobaciones más estrictas, la extensión `HTMLHint` aplica reglas de HTML configurables al guardar. El formateador `Prettier` cierra automáticamente los elementos vacíos de autocierre y normaliza las comillas de los atributos, lo que previene una clase de errores de formato antes de que lleguen a un validador.
En CI/CD: validación automática en cada commit
Añade la validación de HTML a tu pipeline de CI usando `html-validate` (npm) o la interfaz de línea de comandos del validador del W3C. Ejecuta la validación sobre tus archivos de salida compilados en cada pull request para que los errores se marquen antes de fusionar. Una comprobación de validación fallida es una señal mucho mejor que descubrir maquetación rota en producción tras el lanzamiento. Combinado con la herramienta Auditoría rápida de accesibilidad HTML, puedes detectar tanto infracciones de la especificación como errores de accesibilidad en una sola pasada automatizada.
Antes de publicar: barrido de validación prelanzamiento
Antes de cada lanzamiento significativo, pasa tus páginas críticas - inicio, landing pages clave, flujo de compra, entradas de blog - por el Validador de HTML manualmente. Esto detecta cualquier error introducido por cambios de plantilla, actualizaciones de CMS o código de inserción de terceros que tus comprobaciones automatizadas puedan haber pasado por alto. Acompáñalo de una comprobación con el Validador de CSS para una cobertura completa de calidad front-end.
Auditoría rápida de accesibilidad HTML
Audita el HTML en busca de atributos alt ausentes, controles de formulario sin etiqueta y problemas de orden de encabezados - detecta errores de accesibilidad que los validadores de HTML estándar no notifican.
Más allá de la sintaxis: accesibilidad y SEO
Un documento HTML válido es una base necesaria, pero por sí solo no basta para la accesibilidad o el SEO. Una vez que tu marcado pasa el validador de HTML, dos comprobaciones adicionales añaden una cobertura significativamente mayor.
Problemas de accesibilidad que los validadores de HTML pasan por alto
La especificación HTML5 no dice nada sobre el orden de foco del teclado, las tasas de contraste o las regiones de referencia ARIA. Una página completamente válida según el W3C puede seguir fallando los estándares de accesibilidad WCAG 2.1 de múltiples maneras. La Auditoría rápida de accesibilidad HTML comprueba específicamente las infracciones de accesibilidad más comunes en el marcado HTML: texto `alt` ausente en imágenes, elementos `<input>` sin `<label>` asociado, jerarquía de encabezados incorrecta, enlaces sin texto descriptivo y botones sin nombre accesible. Son problemas que afectan a usuarios reales con tecnologías de asistencia y que los validadores estándar no marcan.
Cómo afectan los errores de HTML al SEO
Los rastreadores de los motores de búsqueda analizan el HTML para extraer datos estructurados, canónicas, meta descripciones y contenido. El HTML malformado puede hacer que los rastreadores lean mal u omitan por completo estos elementos. Los errores de HTML más críticos para el SEO son: etiquetas sin cerrar que absorben elementos `<title>` o `<meta>` en el padre equivocado, bloques `<script>` JSON-LD rotos por caracteres especiales que no se codificaron en HTML, y etiquetas canónicas duplicadas por errores de plantilla. Ejecutar el Validador de HTML antes de publicar protege tus datos estructurados y metadatos de estos fallos de análisis.
Note
Usar HTML válido ayuda a garantizar que tu página se renderice correctamente y que los motores de búsqueda puedan leer y procesar con precisión el contenido de tu página.
Key takeaways
- Los navegadores renderizan el HTML no válido mediante recuperación de errores - pero el algoritmo de recuperación de cada navegador difiere, causando bugs de maquetación entre navegadores.
- La salida del validador distingue errores (infracciones de la especificación que corregir) de advertencias (problemas de buenas prácticas que revisar).
- Corrige los errores en cascada abordando el primer error de la lista y revalidando - una sola etiqueta sin cerrar puede generar decenas de errores posteriores.
- Usa el HTML Broken Tag Fixer para reparar automáticamente grandes cantidades de etiquetas sin cerrar antes de la validación manual.
- Los errores de HTML más comunes son etiquetas sin cerrar, anidamientos no válidos, atributos obligatorios ausentes, elementos obsoletos e IDs duplicados.
- Ejecuta la Auditoría rápida de accesibilidad HTML después de la validación de HTML para detectar errores de accesibilidad que el validador de la especificación no ve.
- Añade la validación de HTML a tu pipeline de CI/CD para que los errores se marquen en cada pull request, y no se descubran tras el despliegue.