piapia123
es

Minificar o embellecer JavaScript

Formato

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Dos direcciones en una sola herramienta. Minificar quita los comentarios y el espacio sobrante hasta dejar las menos líneas posible; embellecer vuelve a maquetar el código apretado en una línea, tomando las llaves y los puntos y coma como estructura. Las dos son transformaciones puramente textuales, sin analizar la sintaxis, y por eso minificar nunca renombra una variable ni elimina código muerto (eso es trabajo de un empaquetador o un ofuscador), y también por eso nunca puede romper tu código: las cadenas y las plantillas se trasladan idénticas, y no se cambia nada más que el espacio. Minificar tiene una regla fácil de pasar por alto: al quitar un comentario de línea hay que conservar su salto de línea — `return // nota` seguido de `a` significa, con la inserción automática de punto y coma, `return;` más una sentencia (devuelve undefined), y borrar el salto lo convierte en `return a`, que devuelve un valor. La misma limitación que al embellecer: los paréntesis dentro de un literal de expresión regular se leen como estructura.

Funciones

  • La salida va con resaltado: palabras clave, cadenas y comentarios con colores distintos
  • Sangra por profundidad de llaves y devuelve la llave de cierre a su nivel correspondiente
  • Rompe la línea tras cada punto y coma, pero no dentro de for (;;), donde son separadores
  • Mantiene } else {, } catch { y } finally { en la misma línea
  • Los literales de objeto se quedan en una línea cuando no tienen punto y coma y son cortos; los bloques de código se expanden
  • El cuerpo de una clase siempre se expande en varias líneas
  • Las cadenas, las plantillas (incluidas las anidadas y las expresiones ${}) y los comentarios se conservan idénticos
  • Un comentario de línea fuerza siempre un salto, así que el código siguiente nunca queda comentado
  • Solo se añade espacio donde la gramática no deja dudas: tras las comas y entre las palabras clave de control y su paréntesis
  • Limitación conocida: sin análisis léxico, los paréntesis dentro de un literal de expresión regular se leen como estructura
  • Modo minificar: quita los comentarios, los saltos y el sangrado sobrantes hasta dejar las menos líneas posible
  • Minificar conserva los comentarios de licencia que empiezan por /*! o //! — quitar el aviso de copyright tiene riesgo legal
  • Minificar nunca funde dos tokens: return a, a + +b y 1 .toString() siguen siendo analizables
  • Al quitar un comentario de línea se conserva su salto, así que el significado de return no cambia en silencio
  • No renombra variables ni elimina código muerto (eso es trabajo de un ofuscador o un empaquetador)

Cómo se usa

  1. Pega tu JavaScript en el cuadro de entrada
  2. Elige «Minificar» para apretarlo en pocas líneas o «Formatear» para maquetarlo
  3. En el modo formatear también puedes elegir el ancho del sangrado
  4. Haz clic en «Copiar», o en «Descargar» para guardarlo como .js

Preguntas frecuentes

¿Por qué las expresiones regulares descolocan el resultado?
Distinguir una barra de división del inicio de una expresión regular exige un analizador léxico completo, con operadores unarios y binarios incluidos. Equivocarse se traga el resto de la línea como patrón, así que en vez de adivinar la limitación se declara sin rodeos: el sangrado puede fallar cuando una expresión regular contiene llaves o paréntesis.
¿Por qué no se arregla el espacio alrededor de los operadores?
Espaciar a=b exige saber si el menos es unario o binario, como en a - -b, i++ o x=-1. Eso es análisis léxico otra vez, y equivocarse puede cambiar lo que significa el código. Esta herramienta se limita al sangrado para no romper el código por adivinar.
¿Minificar cambia el comportamiento del código?
No. Minificar solo quita comentarios y espacio y no toca ni un carácter del código: los puntos y coma, los paréntesis, los operadores y el contenido de las cadenas se quedan igual. Además, al quitar un comentario de línea conserva el salto de línea: con `return // nota` seguido de `a`, ese salto significa algo en JavaScript (inserción automática de punto y coma), y quitarlo convertiría la línea en `return a`, cambiando una función que devolvía undefined a una que devuelve un valor. La salida minificada se puede ejecutar sin más.
¿Sirve minificar para ofuscar?
No, y mejor no usarlo así. No renombra variables, no elimina código muerto ni reescribe el flujo de control: los nombres de variable salen exactamente como entraron, solo sin los espacios y comentarios que los rodeaban. La ofuscación de verdad necesita un analizador y un control de ámbitos, y el resultado es algo que ya no puedes depurar. Úsalo para hacer un archivo más pequeño, nada más.
¿Puede cambiar el comportamiento de mi código?
No se toca nada más que el espacio: ningún punto y coma, paréntesis, operador o contenido de cadena se altera. Puedes comprobarlo tú mismo quitando todo el espacio de la entrada y de la salida y comparando las dos.
¿Se sube mi código a algún sitio?
No. Todo ocurre en la memoria de tu navegador, la página no hace ninguna petición y funciona sin conexión.

Herramientas relacionadas