Beautifier HTML

Formatea HTML minificado/desordenado para facilitar lectura y mantenimiento.

Descripción

El HTML es, en esencia, el formato de documento más leído del mundo, no por personas, sino por máquinas. Tim Berners-Lee creó el HTML en 1991 como subconjunto del SGML (Standard Generalized Markup Language), el estándar de marcado de documentos científicos que usaba el CERN. La idea era sencilla: un conjunto de etiquetas para enlazar artículos de física mediante hipervínculos. Lo que sucedió en los treinta años siguientes fue que ese mismo formato fue siendo llevado mucho más allá de lo que sus creadores imaginaron, hasta convertirse en la estructura de interfaces tan complejas como editores de texto en línea, hojas de cálculo en el navegador y herramientas de diseño colaborativo.

El problema del HTML ilegible no es culpa del desarrollador que escribió la plantilla original. Las herramientas de generación de HTML —CMS como WordPress, exportadores de Figma, generadores de email HTML, bibliotecas de componentes— producen marcado funcionalmente perfecto que el navegador parsea sin quejarse. Pero el resultado es una línea continua de 8.000 caracteres en la que `</div>` puede ser el décimo de la cola y es imposible saber cuál es el padre de cuál sin un parser de apoyo.

El beautifier de HTML resuelve exactamente eso: usa un parser real (no expresiones regulares) para analizar el árbol de etiquetas, calcula los niveles de anidamiento y añade sangría y saltos de línea coherentes. El parser puede normalizar algunos fragmentos según las reglas del HTML5, lo que significa que el output puede ser ligeramente distinto al input si el marcado está malformado. No es un validador: para comprobar la conformidad formal con la especificación, el W3C Markup Validator es la herramienta adecuada. Para convertir una plantilla ilegible en algo que un ser humano pueda leer y mantener, el beautifier hace exactamente ese trabajo.

Detalle técnico

HTML, SGML y la herencia de los años 90: por qué el formato sigue siendo relevante

  • El HTML fue creado como subconjunto del SGML (Standard Generalized Markup Language), el estándar ISO de marcado de documentos que organizaciones científicas como el CERN usaban desde los años 80. Berners-Lee simplificó el SGML para crear algo que cualquier persona pudiera aprender en horas — y funcionó tan bien que nunca fue sustituido.
  • La primera especificación HTML (1993) tenía apenas 18 elementos. HTML5, la versión actual, tiene más de 100. A lo largo de las décadas, el lenguaje acumuló elementos semánticos como `<article>`, `<section>`, `<nav>` y `<main>` que ayudan a los motores de búsqueda y los lectores de pantalla a entender la estructura del documento.
  • Los parsers HTML son intencionalmente tolerantes a errores. Esta es una decisión de diseño, no un fallo: en los años 90, exigir HTML perfecto habría hecho la web inaccesible para la mayoría de las personas. Todavía hoy, un navegador puede renderizar HTML con etiquetas sin cerrar, atributos sin comillas y anidamientos incorrectos.
  • El DOCTYPE `<!DOCTYPE html>` al inicio del documento indica al navegador que use el modo estándar en lugar del modo quirks. El modo quirks emula el comportamiento de los navegadores de los años 90 y sigue activo cuando falta el DOCTYPE.
  • El WHATWG (Web Hypertext Application Technology Working Group) mantiene el HTML como un 'living standard': una especificación en continua evolución sin números de versión. HTML5 es el nombre coloquial de las mejoras realizadas desde 2008; técnicamente no existe un 'HTML6'.

Cuándo usar un beautifier, un validador y un linter

  • El beautifier reformatea el HTML sin cambiar la semántica ni verificar la corrección. Añade sangría, saltos de línea y consistencia visual. Es útil para depurar, revisar código y leer plantillas generadas por máquina.
  • El W3C Markup Validator (validator.w3.org) comprueba la conformidad estructural con la especificación HTML5: detecta etiquetas sin cerrar, anidamientos ilegales, atributos obligatorios ausentes y elementos obsoletos. Úsalo antes de publicar páginas que requieran accesibilidad y SEO correctos.
  • Los linters HTML como HTMLHint van más allá de la sintaxis: alertan sobre `<img>` sin `alt`, ausencia del atributo `lang` en `<html>`, orden incorrecto de encabezados (h1 → h2 → h3) y atributos obsoletos. Son ideales para integrarse en pipelines de CI.
  • Prettier es el formateador multilenguaje más adoptado del sector y tiene soporte para HTML. Se integra con VS Code, Neovim, WebStorm y la mayoría de los editores, y puede ejecutarse como hook pre-commit con Husky. En proyectos con equipos, Prettier elimina los debates de estilo de código.
  • El beautifier de esta página usa un enfoque basado en DOM: el HTML es parseado por el motor del navegador y el árbol resultante se serializa con sangría. Eso significa que puede normalizar algunos fragmentos según las reglas de parseo de HTML5, lo cual es útil para entender qué interpreta realmente el navegador.

Guía de la herramienta

  • Qué hace Formatea HTML minificado en una estructura jerárquica legible.

  • Cuándo usarlo Revisar templates y depurar marcado sin reformatear manualmente línea por línea.

Fragmentos de Código

Antes y después del beautifier HTML
<!-- ANTES: marcado generado por CMS, sin sangría -->
<main><section class="hero"><h1>Título</h1><p>Párrafo con <strong>negrita</strong> y <a href="/link">enlace</a>.</p></section><section class="cards"><article><h2>Card</h2><p>Texto del card.</p></article></section></main>

<!-- DESPUÉS: embellecido con sangría de 2 espacios -->
<main>
  <section class="hero">
    <h1>Título</h1>
    <p>Párrafo con <strong>negrita</strong> y <a href="/link">enlace</a>.</p>
  </section>
  <section class="cards">
    <article>
      <h2>Card</h2>
      <p>Texto del card.</p>
    </article>
  </section>
</main>
Formatear HTML con Prettier (Node.js)
import prettier from 'prettier';
import htmlPlugin from 'prettier/plugins/html';

const html = '<main><section><h1>Título</h1><p>Texto</p></section></main>';

const formateado = await prettier.format(html, {
  parser: 'html',
  plugins: [htmlPlugin],
  printWidth: 80,
  tabWidth: 2,
  htmlWhitespaceSensitivity: 'css',
});

console.log(formateado);

// Configuración en VS Code (settings.json):
// "[html]": {
//   "editor.defaultFormatter": "esbenp.prettier-vscode",
//   "editor.formatOnSave": true
// }

Entrada común

<main><section><h1>Título</h1><p>Texto</p></section></main>

Preguntas frecuentes

¿Para qué sirve esta herramienta?

Funciona por completo en tu navegador: sirve para validar, formatear o convertir datos en el día a día.

¿Se envían mis datos a algún servidor?

El procesamiento es local con JavaScript. No almacenamos lo que pegas en los campos de texto.

¿Puedo usarlo con datos reales en producción?

Úsalo bajo tu responsabilidad. Para secretos (contraseñas, tokens), prefiere entornos controlados y políticas internas. Recuerda de revisar los contenidos generados. Nunca confies ciegamente en cosas que ves en internet.