Un formateador de HTML es una herramienta que realiza el formateo de HTML (también llamado embellecimiento o pretty-printing): añade indentación consistente, saltos de línea y espaciado al marcado HTML para que su estructura de anidamiento sea visible. Los navegadores ignoran los espacios en blanco al renderizar HTML, por lo que un documento escrito en una sola línea produce el mismo resultado visual que uno con indentación cuidadosa. La diferencia es puramente para los humanos: el HTML formateado es más fácil de leer, depurar y mantener.
La especificación HTML (mantenida por WHATWG como el HTML Living Standard) define más de 110 elementos, cada uno con su propio modelo de contenido. Los elementos de bloque como <div>, <section> y <article> normalmente comienzan en una nueva línea e indentan a sus hijos. Los elementos vacíos como <br>, <img> e <input> no tienen etiqueta de cierre ni hijos que indentar. Un buen formateador entiende estas distinciones y aplica las reglas de indentación en consecuencia, en lugar de añadir espacios en blanco ciegamente después de cada etiqueta.
El formateo es más importante durante el desarrollo. El HTML minificado o generado por máquinas, la salida de plataformas CMS y el marcado copiado de las DevTools del navegador suelen llegar como una sola línea densa. Sin una indentación adecuada, encontrar una etiqueta de cierre ausente o rastrear una estructura profundamente anidada lleva significativamente más tiempo. Un formateador de HTML convierte esa pared de texto en una estructura de árbol correctamente indentada y legible en un solo paso.
¿Por qué usar este Formateador de HTML?
Pega cualquier HTML y obtén una salida correctamente indentada al instante. Sin plugins que instalar, sin archivos de configuración que escribir, sin cuentas que crear.
⚡
Formateo instantáneo
La salida se actualiza mientras escribes. Pega HTML minificado de cualquier fuente y ve el resultado indentado sin esperar un paso de compilación ni un comando CLI.
🔒
Procesamiento con privacidad primero
Todo el formateo corre en tu navegador usando JavaScript. Tu HTML nunca abandona tu dispositivo, por lo que es seguro pegar marcado que contenga claves de API, tokens o URLs internas.
🎯
Indentación configurable
Cambia entre indentación de 2 espacios y 4 espacios con un clic. El formateador aplica tu elección de forma consistente a cada nivel de anidamiento.
📋
Copiar con un clic
Copia la salida formateada al portapapeles con un solo botón. Pégala directamente en tu editor, revisión de PR o documentación.
Casos de uso del Formateador de HTML
Desarrollo frontend
Formatea plantillas HTML antes de hacer commit al control de versiones. La indentación consistente reduce el ruido en los diffs de los pull requests y hace que la revisión de código sea más rápida.
Depuración de plantillas backend
El HTML renderizado por el servidor desde frameworks como Django, Rails o PHP suele producir marcado sin indentar. Pega la salida renderizada aquí para verificar el anidamiento y detectar etiquetas sin cerrar.
DevOps y pipelines de CI
Valida que las herramientas de compilación produzcan HTML bien estructurado. Formatea la salida de generadores de sitios estáticos o constructores de emails HTML antes de la inspección visual.
QA y pruebas
Compara capturas formateadas de la salida HTML entre ejecuciones de pruebas. La indentación adecuada hace que las diferencias estructurales sean obvias al comparar dos versiones de una página.
Ingeniería de datos
Los pipelines de web scraping producen HTML crudo que necesita inspección. Formatea las páginas extraídas para entender su estructura DOM antes de escribir selectores de extracción.
Aprendiendo HTML
Los estudiantes pueden pegar el código fuente de cualquier sitio web y ver cómo los elementos se anidan entre sí. La vista de árbol formateada hace claras las relaciones padre-hijo entre etiquetas.
Reglas de indentación HTML
Cómo un formateador de HTML trata cada tipo de elemento depende de su modelo de contenido. La tabla a continuación muestra los elementos más comunes y cómo se indentan con configuraciones de 2 y 4 espacios. Ambas producen un renderizado idéntico en el navegador; la diferencia es de legibilidad.
Etiqueta
Tipo de elemento
Indentación 2 espacios
Indentación 4 espacios
<div>
Block element
New line, indent children
New line, indent children
<span>
Inline element
New line, indent children
Inline with parent text
<br>
Void element
New line, same level
New line, same level
<img>
Void element
New line, same level
New line, same level
<!-- -->
Comment
New line, same level
New line, same level
<!DOCTYPE>
Document type
First line, no indent
First line, no indent
<script>
Script block
New line, preserve inner
New line, preserve inner
<pre>
Preformatted
New line, preserve inner
New line, preserve inner
Formateador vs. Minificador vs. Linter
Estas tres herramientas operan sobre HTML pero sirven propósitos distintos. El formateo y la minificación son transformaciones opuestas; el linting comprueba errores sin cambiar los espacios en blanco.
Formateador (esta herramienta)
Añade indentación y saltos de línea para hacer el HTML legible. No cambia la estructura del DOM ni elimina ningún contenido. La salida se renderiza de forma idéntica a la entrada en el navegador.
Minificador
Elimina espacios en blanco, comentarios y etiquetas de cierre opcionales para reducir el tamaño del archivo. Lo opuesto al formateo. Úsalo para compilaciones de producción, no para leer ni editar.
Linter (HTMLHint / W3C)
Comprueba el HTML en busca de errores como atributos alt ausentes, IDs duplicados o etiquetas deprecadas. Reporta problemas pero no cambia la indentación ni el formateo.
Ejemplos de código
Cómo formatear HTML mediante programación en los lenguajes y herramientas más populares:
package main
import (
"bytes"
"fmt"
"golang.org/x/net/html"
"strings"
)
func main() {
ugly := "<div><p>Hello</p></div>"
doc, _ := html.Parse(strings.NewReader(ugly))
var buf bytes.Buffer
html.Render(&buf, doc)
fmt.Println(buf.String())
// renders normalized HTML — pair with indent logic for pretty output
}
CLI (Prettier)
# Format a single file in place
npx prettier --write index.html
# Format and print to stdout (pipe-friendly)
npx prettier --parser html index.html
# Format with 4-space indentation
npx prettier --tab-width 4 --parser html index.html
# Format HTML from stdin
echo '<div><p>Hello</p></div>' | npx prettier --parser html
Preguntas frecuentes
¿Cuál es la diferencia entre formateo y validación de HTML?
El formateo añade indentación y saltos de línea para que el marcado sea legible. La validación comprueba si el marcado cumple con la especificación HTML, reportando errores como atributos requeridos ausentes o elementos anidados incorrectamente. Un formateador no corrige errores; un validador no cambia los espacios en blanco.
¿El formateo de HTML cambia cómo se renderiza la página?
En la mayoría de los casos, no. Los navegadores colapsan secuencias de espacios en blanco en un solo espacio al renderizar. Las excepciones son los elementos con white-space: pre o reglas CSS similares, y los elementos <pre> y <textarea>, donde los espacios en blanco son significativos. Un formateador bien construido preserva el contenido de estos elementos exactamente como está.
¿Cuántos espacios debo usar para la indentación HTML?
Dos espacios y cuatro espacios son ambos comunes. La Guía de Estilo HTML/CSS de Google recomienda 2 espacios. El formateador Prettier tiene como valor predeterminado 2 espacios. Cuatro espacios coinciden con la convención PEP 8 de Python y son preferidos por algunos equipos para consistencia entre lenguajes. Elige uno y aplícalo con un formateador o configuración de editor.
¿Puedo formatear HTML que contiene JavaScript o CSS embebidos?
Esta herramienta formatea la estructura HTML (etiquetas y atributos). Los bloques <script> y <style> en línea se preservan tal cual. Para formatear JavaScript y CSS embebidos, usa un formateador dedicado como Prettier, que puede analizar y formatear los tres lenguajes en un solo paso.
¿Sigue siendo un debate el uso de tabuladores vs. espacios en HTML?
La mayoría de las guías de estilo HTML y los formateadores usan espacios por defecto. La Encuesta de Desarrolladores de Stack Overflow de 2023 muestra que los espacios son utilizados por aproximadamente el 55% de los encuestados en desarrollo web. Los tabuladores tienen la ventaja de accesibilidad de permitir que cada desarrollador establezca su ancho visual preferido. Ambos funcionan; la consistencia dentro de un proyecto importa más que la elección en sí.
¿Por qué mi HTML se ve diferente después del formateo?
El formateador añade caracteres de espacio en blanco (espacios y saltos de línea) que no estaban en el marcado original. Esto cambia la apariencia del código fuente pero no la salida renderizada. Si ves una diferencia visual en el navegador, probablemente se debe a elementos en línea donde el espacio en blanco añadido crea un carácter de espacio extra entre etiquetas, lo cual puede resolverse con CSS (font-size: 0 en el padre, o diseño flexbox).
¿Cómo aplico formateo HTML consistente en todo un equipo?
Usa un formateador automatizado en tu pipeline de CI. Prettier soporta HTML y puede ejecutarse como un hook pre-commit mediante Husky o lint-staged. Añade un archivo de configuración .prettierrc a tu repositorio especificando tabWidth, printWidth y htmlWhitespaceSensitivity. Cada commit seguirá entonces las mismas reglas de formateo independientemente de la configuración del editor de cada desarrollador.
¿Cuál es la diferencia entre un formateador HTML y un beautifier HTML?
Son la misma operación. 'Formateador' y 'beautifier' ambos se refieren a añadir indentación y saltos de línea al marcado HTML. Algunas herramientas usan 'beautify' (js-beautify), otras usan 'format' (Prettier). La salida es idéntica: HTML correctamente indentado y legible por humanos. 'Pretty-print' es otro sinónimo de uso común en documentación y consultas de búsqueda.