Formatear, minificar, codificar entidades y validar documentos HTML.
Cómo el parser cierra etiquetas por su cuenta, por qué escapar solo los signos de menor y mayor no alcanza, y qué espacios en blanco son significativos.
El algoritmo de análisis de HTML no sigue tu indentación, sino el modelo de contenido de cada elemento. Un `<p>` solo admite contenido de frase, así que `<p><div>x</div></p>` produce un párrafo vacío, un div y un segundo párrafo vacío: la apertura de `<div>` implica el cierre del párrafo. Lo mismo ocurre con un `<li>` sin `<ul>`, `<ol>` o `<menu>` como ancestro, y con el texto suelto dentro de `<table>`, que el parser reubica antes de la tabla mediante foster parenting. `<main>` expone el rol ARIA `main` y debería aparecer una sola vez por documento, mientras que `<h1>` a `<h6>` alimentan el árbol de accesibilidad por su número literal, nunca recalculado según la profundidad del anidamiento.
HTML define cinco referencias con nombre: `<`, `>`, `&`, `"` y `'`. La última no existía en HTML 4, así que en plantillas heredadas es más seguro `'`. Escapar esos cinco caracteres alcanza dentro de un nodo de texto y resulta insuficiente en todos los demás contextos: en un atributo sin comillas basta un espacio para que alguien agregue `onmouseover=`; dentro de `<script>` el parser corta al encontrar la secuencia literal `</script>` aunque esté dentro de una cadena; y en `href` ninguna entidad impide una carga `javascript:`. El escape correcto depende entonces del contexto de inserción, porque texto, atributos entrecomillados, URL, CSS y JavaScript necesitan reglas distintas.
La especificación permite omitir varias etiquetas de cierre (`</li>`, `</p>`, `</td>`, el `<tbody>` completo) y las comillas de cualquier atributo cuyo valor no contenga espacios, comillas dobles, comillas simples, `=`, `<`, `>` ni acento grave; un minificador agresivo aprovecha ambas cosas. Lo que no puede hacer es colapsar todos los espacios: entre dos elementos en línea, `</span> <span>` renderiza un espacio visible y quitarlo pega las palabras. `<pre>` y `<textarea>` conservan el espaciado literal, con una excepción del parser: un salto de línea inmediatamente después de la etiqueta de apertura se descarta. Por eso el HTML minificado suele reducirse solo entre un 10 % y un 20 %, mucho menos que CSS o JavaScript.
No según la especificación: cada `<section>` puede llevar su propio `<h1>`. El problema es práctico: el algoritmo de outline que iba a recalcular los niveles nunca se implementó y se retiró del estándar, así que los lectores de pantalla y los rastreadores leen el número literal de la etiqueta. Saltar de `<h2>` a `<h4>` sí rompe la navegación por encabezados.
Porque el espacio en blanco entre elementos en línea se renderiza. Si el formateador convierte `<span>a</span><span>b</span>` en dos líneas indentadas, aparece un espacio entre ambos, y en una fila de `inline-block` esa indentación agrega huecos de unos 4 px. La solución habitual es usar `display: flex` en el contenedor en lugar de pelear con los saltos de línea.
Pertenecen a capas distintas. `&` es escape de marcado: en `href="/buscar?a=1&b=2"` el navegador entrega la URL con un `&` normal, y dejarlo sin escapar es riesgoso porque secuencias como `©=` se interpretan como una referencia de carácter. `%26` es percent-encoding y hace falta cuando el `&` forma parte del valor de un parámetro, como en `?empresa=Ruiz%20%26%20Hijos`.
Formateá, minificá y convertí hojas de estilo entre CSS y SCSS.
Abrir herramienta →SEOArmá etiquetas Open Graph y Twitter Card sin errores de sintaxis.
Abrir herramienta →SEOGenerá JSON-LD de Schema.org validable para datos estructurados.
Abrir herramienta →