Minificar o embellecer JavaScript
FormatoTodo se ejecuta en tu navegador: no se sube nada
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
- Pega tu JavaScript en el cuadro de entrada
- Elige «Minificar» para apretarlo en pocas líneas o «Formatear» para maquetarlo
- En el modo formatear también puedes elegir el ancho del sangrado
- 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
Ofuscador JS
FormatoQuita comentarios y espacios, escapa cadenas y números y renombra variables locales: más pequeño y más difícil de hojear. Todo en local.
Formateador CSS
FormatoFormatea CSS en línea: una declaración por línea y cada selector de la lista en la suya. El minificador solo quita el espacio estructural.
Formateador JSON
FormatoFormatea, valida y repara JSON en línea: árbol plegable, búsqueda de claves y valores, edición nodo a nodo y errores con línea y columna.
JSON a código
FormatoConvierte una muestra JSON en interfaces de TypeScript, structs de Go, clases de Java o structs de Rust; las claves que faltan salen opcionales.
Formateador SQL
FormatoFormatea SQL en línea: una cláusula por línea, palabras clave con el mismo estilo y subconsultas sangradas. El minificador quita los comentarios.
Conversor JSON5
FormatoPasa JSON5 a JSON estricto: comentarios, claves sin comillas, comillas simples, comas finales, hexadecimal e Infinity, con errores por línea y columna.