KeroTools

Minificar JavaScript con Terser

Minifica JavaScript con Terser para reducir el tamaño del archivo y acelerar tu sitio, en tu navegador.

Entrada
0 caracteres
Salida

Tu fuente se queda en tu equipo

Nada que borrar después

Hecho para código propietario

Funciona en todo navegador moderno

Cómo funciona

  1. 1

    Pega tu JavaScript

    Un módulo, un script o un fragmento que quieras más pequeño antes de publicarlo.

  2. 2

    Comprueba el resultado

    Compara tamaños y lee los avisos antes de reemplazar nada.

  3. 3

    Copia la salida

    Llévala a una salida de compilación, una plantilla o una etiqueta de script en línea.

Por qué usar esta herramienta

Renombrado local seguro

Solo se acortan los enlaces cuyas referencias la herramienta puede ver todas, y eso es lo que mantiene el resultado funcionando.

Tamaños antes y después

El ahorro en bruto junto a lo que queda tras la compresión, que es la cifra que importa.

Errores de sintaxis informados

Una entrada inválida dice dónde falló en vez de producir una salida que se rompe al cargar.

Comentarios fuera, directivas dentro

Las cabeceras de licencia y `"use strict"` sobreviven, porque quitarlas cambia el comportamiento o incumple una licencia.

No se sube nada

El código se procesa en tu navegador, así que el fuente propietario nunca llega a un servidor.

Gratis y sin cuenta

Sin registro, sin marca de agua y sin límite de cuánto minifiques.

El ahorro viene del renombrado, no de borrar espacios

Quitar espacios y comentarios es la parte visible y la menor. La mayor parte de la reducción en un archivo real viene del acortado: cada variable local, parámetro y nombre de función se sustituye por uno o dos caracteres, así que `calculateTotalPrice` pasa a ser `t` y una base de código descriptiva se colapsa. Ahí vive también todo el riesgo. Un minificador puede renombrar un enlace con seguridad solo cuando puede ver todos los lugares donde se referencia, lo que ocurre con todo lo que tiene ámbito dentro de una función. No puede ver una referencia hecha desde una cadena, y son esas referencias las que se rompen. Entender esta única distinción explica cualquier fallo de minificación con el que te vayas a topar y te dice dónde mirar cuando el código minificado falla y el original funciona.

Qué no debe renombrarse y por qué la herramienta no puede saberlo

Los casos peligrosos comparten una forma: un nombre escrito como texto en un sitio que el minificador no lee como código. Acceder a una propiedad como `obj["someKey"]` mientras la escribes `obj.someKey` en otra parte significa que una forma se renombra y la otra no. Las claves de objeto que deben coincidir con una carga JSON de una API son el mismo problema: renombra la clave y la petición deja de coincidir con el servidor. Los marcos antiguos de inyección de dependencias leen los nombres de parámetro para decidir qué inyectar, y por eso minificar una aplicación AngularJS sin el paso de anotación fue una forma célebre de romperla del todo. Todo lo que inspeccione `Function.name` o el nombre de una clase en ejecución, incluida cierta lógica de serialización y de logging, tiene la misma exposición. La regla práctica: los nombres que cruzan una frontera —una carga de red, una plantilla, una búsqueda por cadena— deben ir entre comillas y quedarse quietos.

Los mapas de fuentes hacen depurable la salida y pueden filtrar tu código

El código minificado produce una traza que apunta a la línea 1, columna 48.000, lo cual es inútil. Un mapa de fuentes es el arreglo estándar: un archivo aparte que relaciona posiciones de la salida con el original, para que el navegador te muestre el código que escribiste. Genéralos: la alternativa es depurar producción a ciegas. Lo que conviene planificar es dónde vive el mapa. Un mapa de fuentes contiene tu código original, normalmente con los comentarios que quitaste, y si está en una ruta accesible públicamente referenciada por un comentario al final de tu paquete, cualquiera puede descargarlo y leer tu código sin minificar. Eso está bien en código abierto y es una divulgación real en cualquier otro caso. La respuesta habitual es subir los mapas a tu servicio de seguimiento de errores y no servirlos públicamente, o restringirlos a peticiones autenticadas.

La minificación no es ofuscación y no protege nada

Conviene decirlo claro porque la creencia es común: acortar nombres no esconde la lógica. El código minificado se puede reindentar con cualquier formateador en un paso y, aunque los nombres hayan desaparecido, la estructura, las cadenas, los endpoints de API y el algoritmo siguen intactos y legibles. Quien quiera entender tu código de cliente lo entenderá, y lo hará en minutos. Esto importa porque lleva a errores reales: una clave de API metida en un paquete suponiendo que la minificación la oculta, o una bandera de funcionalidad comprobada en el cliente y tratada como control de acceso. Si un código o un valor deben seguir siendo secretos, no pueden llegar a un navegador en absoluto; la única frontera fiable es tu servidor. Existen ofuscadores deliberados que elevan algo el esfuerzo, a un coste serio en tamaño y velocidad, y no cambian esa conclusión.

La compresión en el cable hace casi todo lo que se atribuye a la minificación

Presentar la minificación como un ahorro de ancho de banda lleva una década desfasado, porque ahora todo se sirve con gzip o brotli, y esos algoritmos son extremadamente buenos justo en lo que la minificación quita. Los espacios repetidos y los identificadores largos repetidos se comprimen hasta casi nada, así que un archivo minificado y uno formateado suelen diferir mucho menos después de comprimir que antes, y por eso el tamaño que importa es el comprimido y por eso esta herramienta muestra los dos. La minificación se gana su sitio por otras dos razones: menos fuente es menos que el navegador tiene que analizar y compilar antes de que algo se ejecute, lo cual es medible en móvil, y los bytes también son menores antes de comprimir. Pero si eliges dónde invertir esfuerzo en el tamaño del paquete, quitar código sin usar gana por mucho al acortado de nombres.

Por qué minificar en local importa con este tipo de texto

La entrada de un minificador es código fuente, y el código fuente es lo que una empresa menos pretende publicar. Lleva las direcciones de tus endpoints, los nombres internos de funciones y módulos, los comentarios que explican para qué es un apaño, de vez en cuando una clave que no debería estar ahí, y la estructura de un sistema que costó esfuerzo real diseñar. Pegar un archivo propietario en un minificador alojado envía todo eso a un tercero a cambio de una reducción de tamaño que podías tener en local. Esta herramienta procesa el código en la página y no transmite nada, y puedes comprobarlo en la pestaña Red de las herramientas de desarrollo: para el único tipo de texto que es literalmente propiedad intelectual de tu empresa, ese es el comportamiento sensato.

Errores comunes que conviene evitar

  • Mezclar `obj.someKey` y `obj["someKey"]` para la misma propiedad. Una forma se renombra y la otra no, así que dejan de referirse a lo mismo tras la minificación.
  • Renombrar claves que deben coincidir con una carga de red. El servidor empareja como cadenas las claves enviadas o recibidas de una API: entrecomíllalas para que el acortador no las toque.
  • Depender de nombres de parámetro o función en ejecución. La inyección por nombre de parámetro y la lógica que lee `Function.name` se rompen, porque esos nombres son justo lo que el acortado sustituye.
  • Publicar mapas de fuentes en una ruta pública. Un mapa contiene tu código original, comentarios eliminados incluidos: súbelo a tu rastreador de errores en vez de servirlo junto al paquete.
  • Tratar la minificación como protección. El código minificado se reindenta en un paso y las cadenas, endpoints y el algoritmo siguen legibles, así que nada secreto puede llegar a un navegador.

Comparativa

AspectoEsta herramientaMinificadores onlineUna tubería de compilación
Fuente enviado a un servidorNuncaNormalmente síNo
Tamaño comprimido mostradoRara vezCon un complemento
Requiere configuraciónNingunaNingunaConfiguración
Elimina código sin usarNoNo
Cuenta o registroNo hace faltaA veces exigidoNo hace falta
PrecioGratisGratis / planes de pagoGratis

Características

Acortado de identificadores

Nombres de variables y funciones locales acortados, de donde viene la mayor parte de la reducción.

Eliminación de espacios y comentarios

Se descarta todo lo que el analizador ignora, incluidos los saltos que hacen legible el archivo.

Medición consciente de la compresión

El tamaño minificado y el comprimido, porque solo el segundo llega al usuario.

Sintaxis moderna admitida

Clases, funciones flecha, plantillas de texto, encadenamiento opcional y sintaxis de módulos.

Aguanta archivos grandes

Paquetes enteros se minifican sin subida ni tope de tamaño.

Formateo inverso

También un modo de embellecido, porque leer código minificado de terceros es una necesidad habitual.

Nada que instalar

Sin herramienta de compilación, sin entorno de ejecución, sin dependencias: funciona en la página web.

Listo para árabe y RTL

Interfaz completa en ocho idiomas, incluido el árabe de derecha a izquierda.

Seguro por defecto

Servido por HTTPS, sin rastreo de contenido ni subida a terceros.

Quién la usa

Desarrolladores front-end

Reducir un script independiente que no pasa por un paso de compilación.

Ingenieros de rendimiento web

Comparar tamaños minificado y comprimido para ver dónde está el ahorro de verdad.

Quien lee código de terceros

Usar el sentido de embellecido para hacer legible una biblioteca minificada.

Quien incrusta un script

Bajar un fragmento pequeño a un tamaño razonable para meterlo en una página.

Preguntas Frecuentes

No. Todo se ejecuta localmente en tu navegador — tu texto nunca se sube, guarda ni comparte.

Sí — totalmente gratis, sin cuenta y sin límites.