ToolActToolAct

Herramienta de Formato CSS

Entrada CSS
Salida
Líneas: 1Caracteres: 0Bytes: 0
Líneas: 1Caracteres: 0

¿Qué es el Formateo CSS?

El formateo CSS es el proceso de organizar código CSS desordenado en un formato estandarizado y legible. Un buen formateo CSS mejora la mantenibilidad del código, facilita la colaboración en equipo y ayuda a localizar rápidamente problemas de estilo. El formateo incluye: sangría consistente, alineación de propiedades, saltos de línea apropiados y optimización de selectores. La minificación elimina todos los espacios en blanco y comentarios, reduciendo significativamente el tamaño del archivo y mejorando la velocidad de carga de la página. En datos o bases de código productivas, el resultado debe revisarse después con parser, pruebas o reglas del proyecto.

Cómo usar

Cómo usar

  1. Pega o escribe código CSS en el panel de entrada izquierdo
  2. Selecciona el tamaño de sangría y el estilo de formato
  3. Haz clic en 'Formatear' para embellecer el código, o en 'Minimizar' para reducir su tamaño
  4. Visualiza los resultados a la derecha con resaltado de sintaxis
  5. Haz clic en 'Copiar' para copiar al portapapeles

Opciones de estilo de formato

ExpandidoCada propiedad en su propia línea, ideal para desarrollo y depuración
CompactoSelector y propiedades en la misma línea, ideal para una revisión rápida

Atajos de teclado

  • Ctrl + EnterFormatear
  • Ctrl + Shift + CCopiar resultado

Consejos de formato

  • El formateo solo cambia espacios en blanco y disposición, no el comportamiento de los selectores; prueba la hoja de estilos tras editar código complejo de cascada o media queries.
  • Minimiza solo cuando la salida se use para entrega o integración. Conserva una copia legible del código fuente para revisión y mantenimiento.

Casos de uso

Convertir CSS comprimido en reglas legiblesPega CSS de un bundle, un campo de CMS, las herramientas de desarrollo del navegador o una plantilla de correo y formátalo con 2 espacios, 4 espacios o tabulaciones para que los selectores, las declaraciones y los bloques de media queries anidados sean más fáciles de revisar. Una vez expandido, el orden de las reglas también se vuelve auditable, lo que ayuda al rastrear una sobreescritura de cascada o una media query que se activa más tarde de lo esperado.
Minificar CSS editado para una entrega rápidaTras modificar un fragmento, cambia al modo minificación para eliminar comentarios y espacios innecesarios, y copia o descarga el resultado como archivo CSS para incrustarlo rápidamente en una plantilla de correo, un prototipo de CodePen o una página estática. Formatea primero la versión legible para que quede claro qué selectores cambiaron, y valida el resultado minificado con stylelint o un pase del linter del proyecto, ya que la minificación no verifica la especificidad de selectores, propiedades duplicadas ni sobreescrituras de cascada involuntarias.
Úsalo para fragmentos, no como garantía de análisis CSS completoEl formateador es una implementación ligera en el navegador que preserva cadenas entrecomilladas, contenidos de url() y comentarios dentro de las declaraciones, pero no reemplaza un pipeline completo de PostCSS para sintaxis de proveedor, source maps, linting o validación de compilación de producción. Compila Sass, Less o CSS Modules a CSS estándar primero y luego pasa la salida por esta herramienta para obtener instantáneas de revisión; confía en stylelint, PurgeCSS o una herramienta de auditoría CSS para la comprobación de producción.
Normalizar salida con prefijos de proveedor o de preprocesadorFormatea la salida compilada de Sass, Less o PostCSS para que los prefijos -webkit-, -moz- y -ms- queden alineados y el orden de cascada de las media queries sea visible de un vistazo durante la revisión de código. El bloque expandido también facilita detectar reglas @supports o @container anidadas al auditar la prioridad de cascada.
Elegir el ancho de sangría que coincida con la guía de estilo del proyectoElige 2 espacios, 4 espacios o tabulaciones desde el principio para que el fragmento formateado se integre directamente en el repositorio sin necesidad de un pase posterior del linter, lo que importa especialmente al pegar en un archivo compartido del sistema de diseño. Dos espacios suelen mantener la anidación profunda legible, mientras que las tabulaciones permiten que cada colaborador elija su propio ancho visual.

Principio técnico

El formateo CSS es un problema de tokenización + pretty-printing, no un análisis completo. Un analizador CSS conforme a la especificación (CSS Syntax Module Level 3, recomendación del W3C) es más pesado de lo que un formateador necesita: construye un AST con reglas de estilo, reglas @, declaraciones y valores de componente, y resuelve casos extremos de análisis (cadenas sin terminar, llaves desajustadas, propiedades con prefijos de proveedor). Esta página utiliza un tokenizador más ligero que recorre el flujo de caracteres, reconoce las mismas clases de tokens (identificador, palabra clave @, hash, cadena, cadena incorrecta, número, dimensión, porcentaje, url, función, puntuación, comentario) y los emite como una lista plana; luego el pretty-printer reensambla los tokens con la sangría elegida, el estilo de llaves y las reglas de espacios en blanco. Las dos unidades estructurales en CSS son los bloques de regla (selector { declaraciones }) y los bloques de regla @ (@media, @supports, @container, @keyframes envuelven uno o más bloques de regla). El formateador recorre un flujo de tokens y rastrea la profundidad de llaves: un `{` incrementa la profundidad (y se añade un salto de línea + sangría), un `}` decrementa la profundidad (y la sangría se reduce para coincidir con el `{` correspondiente). Los selectores se emiten tal cual, ya que el formateador no los analiza porque parsear un selector como `.foo > .bar:hover:not(.baz)` es un problema aparte (CSS Selectors Level 4). Los selectores se conservan byte a byte, solo normalizando espacios en blanco (múltiples espacios colapsados en uno, espacios finales eliminados) para que un `.a,.b,.c` minimizado se transforme en `.a, .b, .c`. Las declaraciones se formatean con un estilo elegido: 'expandido' (cada propiedad en su propia línea, el más legible), 'compacto' (una regla por línea, múltiples declaraciones empaquetadas, el más común en CSS de producción) o 'comprimido' (minimizado, sin espacios en blanco, la salida más pequeña posible). Los dos puntos después del nombre de la propiedad siempre van seguidos de un espacio; el valor se emite tal cual salvo algunas normalizaciones (ceros finales eliminados de `0.500` a `.5`, unidades eliminadas de `0px` a `0`, los trucos clásicos de minimización CSS). La minimización es la dirección inversa: eliminar comentarios, colapsar espacios en blanco dentro y entre declaraciones, eliminar el punto y coma final tras la última declaración de un bloque (válido según CSS 2.1 §4.1.7), fusionar bloques de regla adyacentes con el mismo selector y contexto de media, y normalizar valores de color (`#ffffff` -> `#fff`, `rgb(255,255,255)` -> `#fff` cuando sea posible). Los minimizadores modernos (cssnano, lightningcss, clean-css) también realizan optimizaciones estructurales: fusionar propiedades largas en abreviadas (`margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px;` -> `margin: 1px;`), eliminar declaraciones duplicadas dentro de una regla y eliminar reglas que no coinciden con ningún elemento (`div:has-no-children { color: red; }` en pasadas de eliminación de código muerto). Para la salida minimizada la página aplica las transformaciones estándar; para la salida legible la página aplica la sangría y el estilo de llaves elegidos. El módulo de anidamiento CSS (CSSWG, borrador 2023, Baseline 2024) introduce anidamiento nativo: `.a { color: red; & .b { color: blue; } }` es ahora CSS válido en navegadores modernos (Chrome 112+, Firefox 117+, Safari 16.5+). El anidamiento previo a 2024 requería reescrituras del preprocesador (Sass `&` o Less `&` para encadenar selectores). La página maneja ambos: CSS anidado por preprocesador se formatea como si fuera SCSS / Less (preservando el `&`), y CSS anidado nativo (sin necesidad de `&`) se formatea mediante el recorrido de bloques de regla sin distinción. Otras reglas @ que maneja la página: @keyframes y @counter-style toman un cuerpo de declaraciones, no bloques de regla anidados, por lo que se formatean de manera diferente (declaraciones dentro de la regla @, sin llaves anidadas). @media, @supports, @container, @layer toman un cuerpo de bloques de regla. @import, @charset, @namespace son solo de nivel superior y se emiten en su propia línea. @property (propiedades personalizadas registradas) toma un bloque de declaraciones. @font-face es un solo bloque de regla con un bloque de declaraciones complejo sin selector. La página trata cada una según la forma de cuerpo definida en la especificación, no por su nombre. El error de formateo más común es romper el contenido dentro de literales de cadena: `content: "hello world";`, `font-family: "Arial Black", sans-serif;`, `background: url("image.png")` — el formateador no debe colapsar el espacio dentro de la cadena, no debe dividir la URL por `/` y no debe tocar el texto del comentario dentro de `/* ... */`. Un tokenizador que rastrea correctamente el estado de cadenas y comentarios es la diferencia entre un formateador que preserva el contenido del usuario y uno que lo corrompe. El tokenizador de esta página está hecho a mano y es lo suficientemente pequeño para verificarlo a simple vista; los formateadores de producción usan postcss o lightningcss, que llevan la misma obligación en sus léxicos internos.

  • Análisis léxico (CSS Syntax Level 3): recorrer el flujo de caracteres y emitir tokens identificador / palabra clave @ / hash / cadena / número / dimensión / porcentaje / url / función / puntuación / comentario. Las cadenas y comentarios tienen estado: un tokenizer mal implementado rompe `content: "hello world";`.
  • Dos unidades estructurales: bloques de regla (selector { declaraciones }) y bloques de regla @ (@media, @supports, @container, @layer envuelven bloques de regla). El formateador rastrea la profundidad de llaves e indenta cada `{` a un nuevo nivel; el `}` correspondiente reduce el nivel.
  • Los selectores se emiten tal cual, con espacios en blanco normalizados: `.a,.b,.c` -> `.a, .b, .c`. El formateador no analiza selectores (CSS Selectors Level 4 es un problema aparte), solo limpia espacios y comas.
  • Estilos de salida: 'expandido' (una declaración por línea, el más legible), 'compacto' (una regla por línea, común en producción), 'comprimido' (sin espacios en blanco, minimizado). Los dos puntos + espacio después del nombre de la propiedad son la única regla de formato universal.
  • Minimización: eliminar comentarios, colapsar espacios en blanco, eliminar `;` final, fusionar reglas con mismo selector, normalizar `#ffffff` -> `#fff`, `0.500` -> `.5`, `0px` -> `0`. Fusiones estructurales: propiedades largas -> abreviadas (`margin-top: 1px; ... margin-left: 1px;` -> `margin: 1px;`).
  • CSS Nesting (CSSWG 2023, Baseline 2024): `.a { & .b { ... } }` es ahora CSS nativo en Chrome 112+, Firefox 117+, Safari 16.5+. El anidamiento con preprocesador previo a 2024 (Sass `&`, Less) sigue siendo válido; la página formatea ambos recorriendo la estructura de bloques de regla.
  • Cuerpos de reglas @: @keyframes y @counter-style toman declaraciones; @media / @supports / @container / @layer toman bloques de regla; @import / @charset / @namespace son sentencias de nivel superior; @property y @font-face toman bloques de declaraciones. La página trata cada una según la forma de cuerpo definida en la especificación, no por su nombre.
  • Límite de seguridad: los literales de cadena (content, nombres de fuentes, URLs) y el texto de comentarios no se modifican en ninguna transformación. Un recorrido byte-exacto es la prueba de corrección para un formateador CSS: rompe una cadena de contenido y el usuario lo nota inmediatamente.

Ejemplos

Formateo de CSS minificado

Entrada:  .btn{color:red;background:#fff;padding:8px 16px;border-radius:4px}
Salida:
.btn {
  color: red;
  background: #fff;
  padding: 8px 16px;
  border-radius: 4px;
}

Expansión de reglas anidadas

Entrada:  .card{padding:16px}.card h2{margin:0 0 8px}.card p{color:#666}
Salida:
.card {
  padding: 16px;
}
.card h2 {
  margin: 0 0 8px;
}
.card p {
  color: #666;
}

Formateo de media queries

Entrada:  @media(max-width:768px){.nav{display:none}.menu{width:100%}}
Salida:
@media (max-width: 768px) {
  .nav {
    display: none;
  }
  .menu {
    width: 100%;
  }
}

Preguntas frecuentes

¿Qué hace el formateador de CSS?

Reformatea el CSS para que sea legible: indentación consistente, una declaración por línea, espacios alrededor de los dos puntos y una regla por línea. No cambia la especificidad de los selectores ni los valores de las propiedades; se limita a espacios y posición de las llaves.

¿También minifica el CSS?

Sí, si hay un interruptor de «minificar» o «comprimir». La minificación elimina comentarios y espacios, acorta los colores hexadecimales (#ffffff → #fff) y quita el último punto y coma de cada regla. La dirección inversa (embellecer) restaura la legibilidad.

¿Por qué no ha corregido mi CSS inválido?

Es un formateador, no un validador. Llaves descompensadas, puntos y comas que faltan o propiedades no reconocidas pasan tal cual. Usa un linter de CSS (Stylelint) o carga tu CSS en el panel de devtools del navegador para ver los errores de sintaxis.

¿Maneja CSS moderno (anidamiento, container queries, custom properties)?

La mayoría de versiones usan un parser de CSS que entiende la sintaxis actual, incluidas @container, @supports, custom properties (--var), anidamiento y @layer. Si el parser es antiguo, la sintaxis nueva puede formatearse de forma extraña: pega tu CSS y revisa el resultado antes de usarlo.

¿Se conservan mis comentarios?

Sí. Los comentarios de bloque /* ... */ los conserva el formateador. Algunos minificadores eliminan los comentarios por defecto; desactiva esa opción si los necesitas. Los comentarios de una línea // no son CSS estándar y pueden eliminarse (existen en SCSS, no en CSS).

¿Se sube el CSS a un servidor?

No. El formateo se hace en tu navegador con un parser/printer de CSS en JavaScript. El CSS pegado no se transmite.

¿Puedo configurar la indentación?

Sí: normalmente 2 o 4 espacios, o tabuladores. Elige lo que se ajuste al estilo existente de tu proyecto. La indentación mixta del original se normaliza al valor que elijas.