Saltar al contenido principal
Tooletto

Minificador de JS

Minifica JavaScript usando Terser — el mismo motor en el que confían las principales herramientas de compilación. Elimina espacios en blanco y comentarios, y opcionalmente ofusca los nombres de variables (mangling), para producir una salida más pequeña y aun así válida, por completo en tu navegador.

  • Los archivos nunca salen de tu dispositivo
  • Gratis, sin registro
  • Sin marcas de agua
  • Funciona sin conexión una vez cargado
Loading tool…

Cómo minificador de js

  1. 1

    Pega tu código

    Añade cualquier archivo o fragmento de JavaScript válido.

  2. 2

    Elige tus opciones

    Deja activado el mangling de variables para la salida más pequeña, o desactívalo si necesitas leer el resultado.

  3. 3

    Copia el resultado

    Copia el código minificado, junto con el tamaño ahorrado.

Qué hace realmente la minificación por dentro

Eliminar espacios en blanco y comentarios es la parte fácil y obvia de la minificación — y por sí sola apenas mueve la aguja en código bien escrito. La verdadera reducción de tamaño viene de dos transformaciones más profundas: el mangling, que renombra cada variable local y argumento de función al identificador más corto posible (`accumulator` se convierte en `a`, `temporaryResult` en `t`), y la eliminación de código muerto, que quita ramas y expresiones que un análisis estático del código puede demostrar que nunca se ejecutarán ni afectarán al resultado. Ambas requieren entender de verdad la estructura del código — sus ámbitos, qué nombres son locales frente a exportados, qué ramas son demostrablemente inalcanzables —, que es justo por lo que una herramienta real basada en un analizador como Terser produce una salida notablemente más pequeña de lo que jamás lograría un simple buscar y reemplazar sobre espacios en blanco.

Por qué la mayoría de los desarrolladores casi nunca tocan ya un minificador independiente

Bundlers como Webpack, esbuild, Rollup y Vite minifican su salida automáticamente como parte de una compilación de producción, casi siempre usando Terser o un motor compatible con Terser por debajo — así que para cualquiera que trabaje dentro de un proyecto de JavaScript moderno, la minificación ya ocurre de forma invisible cada vez que ejecuta un comando de compilación. Una herramienta independiente como esta cubre los casos que quedan fuera de ese pipeline: una sola etiqueta de script sin ningún paso de compilación, una comprobación rápida de cuánto se reduciría un fragmento, o un archivo puntual que necesita comprimirse sin traer una configuración de bundler completa solo para eso.

La operación inversa del formateo, no un sustituto de él

Minificar y formatear son operaciones opuestas sobre el mismo código: esta herramienta elimina el espaciado, la estructura y la legibilidad que un formateador como Prettier añade deliberadamente. Su herramienta hermana, el Formateador de JavaScript, deshace exactamente lo que hace esta — útil para el sentido inverso, tomar un archivo minificado que alguien te pasó y convertirlo de nuevo en algo lo bastante legible como para depurarlo de verdad.

Un pipeline de compilación real normalmente combina la minificación con un mapa de fuente (source map) — un archivo separado que hace corresponder cada posición de la salida minificada con su línea original en el código fuente —, específicamente para que un depurador pueda seguir mostrando código legible y números de línea correctos en producción, a pesar de que el archivo que realmente se ejecuta sea ilegible. Esta herramienta independiente deliberadamente no genera uno, ya que está pensada para una reducción puntual rápida y no para un despliegue de producción; cualquier cosa que vaya a un pipeline de compilación real debería pasar por un bundler que emita un mapa de fuente correspondiente junto a ella.

Preguntas frecuentes

¿Se envía mi código a un servidor?

No. Terser se descarga a tu navegador y se ejecuta ahí — la minificación ocurre por completo en tu dispositivo. El código propietario o interno nunca sale de tu máquina, algo que no es cierto en todos los minificadores online.

¿Puede la minificación romper mi código?

No, cuando se hace correctamente — Terser analiza tu código en un árbol de sintaxis real en lugar de emparejar patrones de texto, así que la salida transformada se comporta de forma idéntica al original en la gran mayoría de los casos. El único caso extremo genuino: código que inspecciona su propio origen en tiempo de ejecución, por ejemplo llamando a `Function.prototype.toString()` sobre una función y analizando el resultado, o dependiendo del nombre de una variable o función como cadena de texto (algunos patrones de inyección de dependencias hacen esto). El mangling renombra las cosas, así que ese tipo de introspección puede ver nombres distintos tras la minificación. Es poco frecuente, pero vale la pena saberlo si tu código hace algo inusual con reflexión.

¿La salida minificada sigue siendo JavaScript válido y ejecutable?

Sí. La salida es JavaScript normal — solo que más corto. Puedes ponerla directamente en una etiqueta `<script>` o en el resultado de una compilación exactamente igual que el archivo original.

¿Cuándo debería usar esto de verdad?

Para paquetes de producción, un script incrustado en algún sitio con restricción de tamaño (una extensión de navegador, un fragmento de seguimiento, un widget con límite de tamaño), o un archivo puntual que necesitas reducir rápidamente sin montar un paso de compilación. No minificarías tu código fuente ni tus archivos de desarrollo — mantén esos legibles, y minifica solo la salida final de compilación, igual que haría un bundler.

¿Por qué el resultado se ve ilegible?

Ese es el objetivo. Los espacios en blanco, los comentarios y los nombres de variable largos existen para las personas que leen el código fuente, no para el motor de JavaScript que lo ejecuta. Eliminarlos (y acortar los nombres, si el mangling está activado) reduce el número de bytes enviados por la red sin cambiar lo que hace el código.