Formateador y Minificador CSS

Formatee hojas de estilo sin sangría en árboles CSS estructurados, o minifique CSS de producción eliminando comentarios, espacios redundantes y unidades innecesarias.

Opciones
Sangría:
Entrada
Líneas28
Tamaño478 B
Embellecido
.card {
  padding: 0px 16px 0px 16px;
  color: #ffffff;
  background-color: #667eea;
  border-radius: 8px;
  margin: 0em;
}
.card {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  opacity: 0.90;
}
h1, h2 {
  font-weight: bold;
  line-height: 1.5;
  margin-top: 0px;
}
@media screen and (max-width: 600px) {
  .card {
    padding: 0px 12px;
    border-radius: 6px;
  }
}
Embellecido en <1ms
Salida23 líneas · 370 B · 5 reglas · 12 declaraciones

Se eliminaron 2 comentarios.

Todo el formateo se ejecuta 100% en local en su navegador; su código CSS nunca sale de su dispositivo. Compatible con CSS, SCSS y Less.

Guía de Operación

Paso 1

Cargar Hoja de Estilo

Pegue código CSS, SCSS o Less en el panel de entrada o arrastre archivos locales .css, .scss o .less directamente al editor.

Paso 2

Configurar Reglas

Seleccione Embellecer (2 espacios, 4 espacios o tabulaciones) o Minificar (eliminación de comentarios, supresión de unidades cero y fusión de selectores adyacentes).

Paso 3

Revisar y Exportar

Compruebe las métricas en tiempo real de bytes ahorrados, porcentaje de compresión y el código resaltado; copie al portapapeles o descargue el archivo final.

Ejemplos de Transformación

1. Cadena Minificada en una Línea → Bloque Estructurado con Sangría

Entrada · Cadena Minificada en Bruto

.card{display:flex;flex-direction:column;padding:16px;background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.08)}

Salida · Embellecido (2 Espacios)

.card {
  display: flex;
  flex-direction: column;
  padding: 16px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .08);
}

2. Eliminación de Comentarios y Optimización de Valores

Entrada · Comentarios Detallados y Notación Extensa

/* Estilos de navegación del encabezado */
.header-nav {
  margin: 0px 0px 24px 0px;
  color: #ffffff;
  opacity: 0.80;
  background-image: url("icons/nav-arrow.svg");
}

Salida · Minificado (Unidades Cero Optimizadas y URL Sin Comillas)

.header-nav{margin:0;color:#fff;opacity:.8;background-image:url(icons/nav-arrow.svg)}

3. Fusión de Selectores Duplicados Adyacentes y Resolución de Cascada

Entrada · Reglas Adyacentes Dispersas

.btn-primary {
  padding: 8px 16px;
  color: #ffffff;
  font-weight: 500;
}
.btn-primary {
  color: #f8fafc;
  border-radius: 6px;
}

Salida · Regla Fusionada (Prevalece la Última Declaración)

.btn-primary{padding:8px 16px;color:#f8fafc;font-weight:500;border-radius:6px}

4. Preservación de Jerarquía Anidada en SCSS / Less

Entrada · Anidamiento de Preprocesador y Media Query

// Anidamiento SCSS con breakpoint responsive
.card {
  padding: 16px;
  & > .title {
    font-size: 1.25rem;
    color: #1e293b;
  }
  @media (max-width: 640px) {
    padding: 12px;
  }
}

Salida · Minificado Manteniendo la Estructura Anidada Intacta

.card{padding:16px;& > .title{font-size:1.25rem;color:#1e293b}@media (max-width:640px){padding:12px}}

Reglas de Procesamiento y Referencia de Configuración

ParámetroModo AplicableMecanismo y Límites de Seguridad
Ancho de SangríaEmbellecerAplica 2 espacios, 4 espacios o tabulaciones físicas por nivel de anidamiento. La profundidad se incrementa en llaves de apertura ({) y decrementa en llaves de cierre (}).
Eliminar ComentariosEmbellecer y MinificarSuprime comentarios estándar /* ... */ y de línea de SCSS (//), protegiendo URLs en url(https://...) y cadenas entre comillas.
Ordenar DeclaracionesEmbellecer y MinificarOrdena propiedades alfabéticamente (A–Z) dentro de cada bloque. Conserva valores asignados y modificadores !important sin cruzar los límites del bloque.
Ordenar SelectoresEmbellecer y MinificarReordena bloques de reglas de nivel superior alfabéticamente por selector. Modifica el orden de origen en la cascada; verifique la especificidad en reglas combinadas antes de desplegar.
Combinar Selectores DuplicadosMinificar (Avanzado)Combina bloques estrictamente adyacentes con selectores idénticos. Resuelve propiedades conflictivas conservando la última declaración salvo que la anterior contenga !important.
Optimizar ValoresMinificarConvierte longitudes nulas (0px, 0rem, 0% → 0), abrevia colores hexadecimales (#ffffff → #fff), elimina ceros iniciales (0.5 → .5) y retira comillas en URIs seguras.

Análisis Léxico de CSS y Canalización de Transformación AST

Las hojas de estilo en cascada no pueden formatearse ni comprimirse con seguridad mediante expresiones regulares globales simples. Las comillas sin escapar dentro de content: "/* comentario */", los delimitadores de punto y coma en URIs base64 data:image/... y los operadores matemáticos dentro de calc() requieren un aislamiento riguroso de tokens. Este motor procesa los estilos a través de cuatro etapas diferenciadas:

Fase 1

Protección de Literales

Aísla cadenas de texto con comillas simples y dobles, así como bloques de comentarios, sustituyéndolos por marcadores centinela únicos antes de iniciar la manipulación de espacios o caracteres.

Fase 2

Balanceo de Delimitadores

Rastrea llaves analizando la profundidad de paréntesis (depth = 0), evitando que funciones anidadas como rgb() o clamp() se interpreten prematuramente como delimitadores de sentencia.

Fase 3

Recorrido del Árbol AST

Descompone bloques de reglas, reglas at (@media, @keyframes, @supports) y declaraciones individuales. Aplica sangría jerárquica en modo embellecer o suprime sintaxis redundante en modo minificar.

Fase 4

Restauración de Carga Útil

Rehidrata de forma exacta e inmutable las cadenas literales protegidas y los comentarios conservados en sus posiciones originales, garantizando integridad absoluta en tipografías o rutas gráficas.

Orden de Cascada, Especificidad y Mecánica de Fusión Adyacente

Bajo la especificación W3C CSS Cascading and Inheritance Level 4, la resolución de declaraciones depende de cuatro criterios fundamentales: origen, importancia, especificidad y orden de aparición en el código fuente. La desduplicación arbitraria de selectores que ignora la secuencia del archivo puede comprometer la fidelidad visual:

La Restricción de Adyacencia

Los bloques no contiguos que comparten el mismo selector no pueden fusionarse a ciegas si existen reglas intermedias con especificidad solapada. Si .btn { color: red; } es seguido por .header .btn { color: blue; } y más adelante por .btn { color: green; }, mover el segundo .btn hacia arriba alteraría el resultado visual. Por ello, la combinación segura solo opera sobre bloques hermanos estrictamente contiguos.

// Adyacentes (Seguros para fusionar):
.box { margin: 0; } .box { padding: 10px; } → .box { margin:0; padding:10px; }
// Intercalados (Inseguros):
.box { ... } .nav .box { ... } .box { ... } → La fusión alteraría la cascada

Conflicto de Declaraciones y Gestión de !important

Al combinar bloques idénticos contiguos, las propiedades duplicadas se resuelven de acuerdo con la precedencia estándar de CSS: las declaraciones normales posteriores sobrescriben a las declaraciones normales previas. No obstante, una declaración anterior con la directiva !important se impone sobre declaraciones normales posteriores, preservando la intención del desarrollador.

// Entrada:
.card { color: red !important; } .card { color: blue; }
// Resultado Resuelto:
.card { color: red !important; } → !important prevalece sobre el valor normal posterior

Optimización de Valores según W3C y Reglas de Unidades Redundantes

No todos los valores CSS pueden simplificarse de manera indiscriminada. La especificación W3C CSS Values and Units establece directrices estrictas sobre cuándo las unidades son opcionales y cuándo resultan obligatorias para los analizadores de los navegadores:

Categoría de ValorSintaxis OriginalSintaxis OptimizadaLímites de Especificación y Restricciones
Unidades de Longitud (<length>)0px, 0rem, 0em, 0vh, 0%0CSS permite el uso de 0 sin unidades para todas las medidas de longitud (p. ej., margin: 0px 10px 0px 10px → margin:0 10px 0 10px), eliminando sufijos prescindibles.
Unidades de Tiempo y Frecuencia0s, 0ms, 0HzConservado (0s)En propiedades como transition-duration y animation-delay, los navegadores rechazan el 0 sin unidad; el sufijo (s o ms) es rigurosamente obligatorio.
Colores Hexadecimales#ffffff, #00aa00#fff, #0a0Cuando cada canal R, G y B contiene dígitos duplicados (R1==R2 && G1==G2 && B1==B2), los valores de 6 caracteres se abrevian a 3 sin pérdida cromática.
Decimales de Punto Flotante0.75, 0.5, 0.125.75, .5, .125El cero precedente en valores decimales carece de significado numérico y se descarta de forma segura en propiedades de opacidad, transformaciones y altura de línea.
Comillas en Funciones URIurl("path/icon.svg")url(path/icon.svg)Las comillas son opcionales en la función url() de CSS salvo que la dirección URI contenga espacios en blanco, comillas internas o paréntesis.

CSSOM como Recurso Bloqueante y Optimización de Core Web Vitals

A diferencia de los documentos HTML que pueden pintarse de manera incremental, el CSS es un recurso intrínsecamente bloqueante del renderizado (render-blocking): el navegador detiene la presentación visual hasta haber procesado todas las hojas de estilo enlazadas para construir el Modelo de Objetos CSS (CSSOM). El tamaño de los estilos influye de forma directa en las métricas de rendimiento web:

Primer Despliegue de Contenido (FCP)

El motor de diseño del navegador pospone el renderizado hasta resolver todas las etiquetas <link rel="stylesheet">. Un CSS minificado requiere menos paquetes TCP iniciales (dentro de la ventana de congestión de 14 KB), acelerando el FCP de forma notable.

Despliegue del Contenido Más Grande (LCP)

Cuando imágenes destacadas o textos clave dependen de hojas de estilo externas, el CSS pesado retrasa el registro del LCP. Reducir los bytes acelera la canalización crítica y permite que el elemento principal se dibuje con mayor prontitud.

Cambio Acumulado de Diseño (CLS)

Insertar CSS crítico minificado de forma inline directamente en un bloque <style> evita el parpadeo de contenido sin estilo (FOUC), previniendo desplazamientos geométricos bruscos cuando las hojas de estilo externas terminan de cargarse.

Minificación vs. Compresión de Red (Sinergia con Gzip y Brotli)

Es un error común pensar que activar compresión Brotli o Gzip en el servidor sustituye la necesidad de minificar el código fuente. En la práctica, la minificación y la compresión de red abordan cuellos de botella técnicos distintos y proporcionan beneficios complementarios:

Consumo de Memoria en el Dispositivo

Gzip y Brotli comprimen los bytes exclusivamente mientras transitan por la red. Al recibirlos, el cliente HTTP del navegador descomprime el flujo completo a su tamaño en bytes real antes de alimentar el analizador CSS, consumiendo memoria RAM.

Coste de Tokenización en el CSSOM

Cada comentario, salto de línea y espacio superfluo debe ser examinado por el lexer del navegador. Un CSS minificado reduce la carga de procesamiento de cadenas, disminuyendo los ciclos de CPU en procesadores móviles con recursos limitados.

Reducción de Entropía en Diccionarios

El algoritmo LZ77 de Brotli rastrea patrones de bytes repetitivos. Al eliminar comentarios aleatorios y sangrías irregulares, se optimizan las tablas del diccionario de compresión, logrando cargas transferidas entre un 5% y un 15% más pequeñas.

Casos de Uso en Entornos de Producción

Depuración de Paquetes en Producción

Expanda hojas de estilo minificadas de librerías externas en árboles con sangría estructurada y declaraciones por línea para inspección en DevTools y pruebas locales.

Compresión Previa al Despliegue

Elimine notas de desarrollo, unidades cero redundantes y espacios de formato antes de subir hojas de estilo a servidores estáticos o redes perimetrales CDN.

Inyección de CSS Crítico Inline

Comprima estilos clave para inyectarlos directamente en etiquetas <style> en arquitecturas con renderizado del servidor (SSR), evitando peticiones bloqueantes adicionales.

Normalización de Sistemas de Diseño

Ordene declaraciones de propiedades alfabéticamente en componentes compartidos para imponer uniformidad estilística y facilitar la revisión de diffs en pull requests.

Limpieza de CSS-in-JS y Preprocesadores

Sanee patrones extensos de selectores, puntos y comas sobrantes y espaciados anómalos generados por herramientas de compilación como Sass, Less o styled-components.

Optimización de Estilos en Emails HTML

Comprima reglas CSS incrustadas en plantillas de correo transaccional para evitar que el mensaje sea truncado por superar el límite estricto de 102 KB de Gmail.

Frequently Asked Questions

¿Cuál es la diferencia entre CSS Beautify (embellecer/formatear) y CSS Minify (minificar/comprimir)?

CSS Beautify expande hojas de estilo comprimidas o desordenadas insertando una sangría uniforme (2 espacios, 4 espacios o tabuladores) y saltos de línea estructurados —una declaración por línea—, haciendo que el código sea comprensible para los desarrolladores y fácil de depurar. CSS Minify realiza el proceso inverso: suprime comentarios, colapsa espacios en blanco redundantes, elimina puntos y comas finales opcionales y optimiza unidades en cero para producir la carga útil más ligera posible para entornos de producción.

¿El formateo o la minificación pueden romper estilos visuales, animaciones o variables CSS?

No. El motor de minificación protege cadenas literales entre comillas (como nombres de tipografías o propiedades content: "..."), URIs en formato data:, variables personalizadas (--custom-prop), fotogramas clave @keyframes y consultas @media mediante aislamiento léxico de delimitadores. Únicamente se eliminan espacios en blanco puramente cosméticos, comentarios prescindibles y sufijos de unidades redundantes (como 0px a 0).

¿Qué transformaciones exactas realiza el minificador de CSS para reducir el tamaño en bytes?

El motor suprime comentarios de bloque /* ... */ y comentarios de línea // de SCSS, compacta espacios alrededor de llaves y dos puntos, descarta puntos y comas finales antes del cierre de llaves, convierte longitudes nulas (0px, 0rem, 0% a 0), abrevia colores hexadecimales de 6 caracteres (#ffffff a #fff), suprime ceros a la izquierda en decimales (0.5 a .5) y despoja comillas innecesarias en funciones url().

¿Por qué la especificación CSS exige estrictamente espacios alrededor de los operadores dentro de calc()?

De acuerdo con la especificación W3C CSS Values and Units Level 4, los operadores de suma (+) y resta (-) dentro de calc(), min(), max() y clamp() deben estar delimitados por espacios en blanco obligatorios (por ejemplo, calc(100% - 24px)). Sin espacios, la secuencia -24px se tokeniza léxicamente como un valor de longitud negativo en lugar de una operación de resta, provocando que el navegador descarte la declaración por sintaxis no válida. Aunque la multiplicación (*) y división (/) son más tolerantes, mantener el espaciado garantiza una interpretación uniforme en todos los motores de renderizado.

¿Cómo funciona la opción "Combinar selectores duplicados" y cuándo es seguro utilizarla?

El algoritmo de combinación fusiona bloques de reglas contiguos que comparten exactamente la misma cadena de selectores. Si surgen propiedades en conflicto, las declaraciones posteriores sobrescriben a las anteriores según las normas estándar de la cascada, preservando de forma prioritaria la regla !important. Restringir la fusión a bloques adyacentes evita alterar la precedencia de especificidad de reglas intercaladas.

¿Por qué ordenar selectores (sortSelectors) podría alterar inadvertidamente el renderizado visual?

En las reglas de la cascada CSS, cuando dos selectores poseen la misma especificidad (como .primary-btn y .disabled-btn aplicados al mismo elemento HTML), prevalece la regla declarada más adelante en el orden del código fuente. La ordenación alfabética modifica la secuencia original del archivo, lo que puede invertir la regla ganadora de la cascada y provocar discrepancias visuales. Se recomienda utilizar la ordenación de selectores para auditar bibliotecas de tokens estructuradas y no en hojas de estilo arbitrarias con múltiples clases coexistentes.

¿Este formateador conserva las reglas anidadas de SCSS, Less o CSS Nesting nativo?

Sí. El analizador recursivo interpreta los bloques anidados (&:hover, & > .child) y contenedores de media queries como nodos jerárquicos estructurados sin aplanarlos de forma destructiva. En el modo Beautify la sangría escala proporcionalmente, mientras que en Minify se comprimen los tokens internos manteniendo intacta la jerarquía para que el resultado siga siendo válido para preprocesadores o navegadores con soporte nativo de CSS Nesting.

¿Por qué sigue siendo necesaria la minificación de CSS si ya se utiliza compresión Brotli o Gzip en el servidor?

La compresión HTTP reduce el tamaño de transferencia por la red, pero el navegador cliente debe descomprimir el archivo de nuevo a su volumen original en memoria antes de tokenizar las reglas en el CSSOM. Minificar el código reduce el consumo de memoria RAM y el tiempo de CPU en dispositivos móviles. Además, eliminar comentarios y ruido sintáctico reduce la entropía del diccionario, permitiendo que Brotli y Gzip alcancen entre un 5% y un 15% más de compresión efectiva.

¿De qué forma la reducción del peso de CSS mejora directamente las métricas Core Web Vitals (FCP, LCP, CLS)?

Las hojas de estilo externas son recursos que bloquean el renderizado (render-blocking): el navegador pospone el Primer Despliegue de Contenido (FCP) y el Despliegue del Contenido Más Grande (LCP) hasta haber descargado y analizado todos los archivos vinculados en el encabezado. Un CSS minificado requiere menos ciclos de ida y vuelta (TCP round trips), liberando la ruta crítica de renderizado. Asimismo, insertar CSS crítico minificado inline previene el parpadeo de contenido sin estilo (FOUC), estabilizando el Cambio Acumulado de Diseño (CLS).