Descomprimir ZIP
Sube archivos ZIP para previsualizar y extraer archivos, descarga individual o extrae todo
Arrastra un archivo ZIP aquí, o haz clic para seleccionar
Soporta archivos en formato .zip
¿Qué es la Extracción ZIP?
La extracción ZIP abre un archivo comprimido y restaura los archivos almacenados dentro. Es útil cuando recibes un paquete comprimido, quieres inspeccionar el contenido antes de descargar todo, necesitas solo un archivo o deseas verificar nombres y tamaños antes de confiar en el archivo. Para archivos normales, ZIP es sin pérdida y el contenido extraído debería coincidir con el original. Pero extraer no hace seguro un contenido desconocido. Un ZIP puede contener nombres engañosos, carpetas inesperadas, datos que se expanden muchísimo o ejecutables que no deberían abrirse sin revisión. Esta herramienta del navegador lee el archivo localmente y permite descargar elementos seleccionados, útil para comprobaciones pequeñas. No reconstruye siempre el árbol completo en disco ni sustituye una revisión de seguridad.
Cómo usar
Cómo usar
- Arrastra un archivo ZIP al área de carga o haz clic en 'Seleccionar archivo ZIP'
- Consulta la lista de archivos y la información del contenido del comprimido
- Haz clic en 'Descargar' junto a un archivo para extraerlo
- Haz clic en 'Extraer todo' para descargar todos los archivos como un ZIP
Seguridad al extraer
- Revisa la lista de archivos antes de descargar los elementos extraídos, especialmente si el archivo proviene de una fuente desconocida.
- Ten cuidado con los archivos ejecutables, los archivos comprimidos anidados y los nombres de archivo sospechosos.
Casos de uso
Principio técnico
Leer un archivo ZIP sigue el orden inverso al de escritura. El navegador recibe el archivo como un `ArrayBuffer` mediante la File API (`file.arrayBuffer()`) y el lector escanea hacia atrás desde el final del archivo buscando la firma End of Central Directory `0x06054b50` (PK\x05\x06). El EOCD ocupa como máximo 22 bytes más un comentario opcional de hasta 65.535 bytes, por lo que la ventana de búsqueda está acotada. El EOCD apunta al desplazamiento y tamaño del Directorio Central, que contiene un File Header (`0x02014b50`) por cada entrada. Cada File Header lleva los tamaños comprimido y descomprimido, CRC-32, método de compresión, nombre de archivo y el desplazamiento del Local File Header correspondiente (`0x04034b50`). Así, el lector puede buscar directamente cualquier entrada individual sin analizar las anteriores, lo que hace que la extracción de un solo archivo de una copia de seguridad de varios GB sea rápida. La descompresión depende del byte de método: `0x00` es almacenado (sin compresión, solo un memcpy), `0x08` es DEFLATE según RFC 1951 (~99% de los archivos en uso), `0x0C` es BZIP2, `0x0E` es LZMA y `0x0D` es el antiguo PPMd. Esta herramienta usa JSZip (o fflate para mayor rendimiento — el `unzipSync` de fflate decodifica un archivo DEFLATE típico de 10 MB en decenas de milisegundos, varias veces más rápido que JSZip). Después de la descompresión, se recalcula el CRC-32 de los bytes brutos y se compara con el valor del directorio central; una discrepancia indica corrupción o manipulación. Dos cuestiones de seguridad son relevantes para cualquier ruta de extracción. La primera es la vulnerabilidad Zip Slip (Snyk, 2018): un archivo malicioso puede contener entradas con secuencias de salto de ruta como `../../etc/passwd`, y un extractor ingenuo que concatene el nombre de la entrada con un directorio destino escribirá fuera de la zona prevista. La solución es normalizar la ruta concatenada con `path.resolve()` y verificar que aún comienza con el directorio destino antes de cualquier escritura. Esta herramienta ofrece cada entrada como una descarga individual del navegador mediante `URL.createObjectURL(new Blob([bytes]))` y el navegador aísla el destino, por lo que el salto de directorio no puede escapar de la carpeta de descargas del usuario, pero el mismo archivo en un extractor del lado del servidor sería explotable. En segundo lugar, los archivos cifrados no se manejan: el ZipCrypto tradicional es un cifrado de flujo de 32 bits que se rompe trivialmente con un ataque de texto plano conocido de tres bytes, y el WinZip AES-256 moderno (PKWARE APPNOTE 7.0) requiere el campo extra AE-2 con autenticación HMAC-SHA1; ninguna de las dos vías está implementada aquí. Los archivos de más de 4 GiB dependen de los campos extra de la extensión ZIP64 para tamaños y desplazamientos de 64 bits, que el analizador debe leer en lugar de los campos de 32 bits del directorio central.
- Orden de análisis: escaneo hacia atrás desde el final del archivo en busca de la firma EOCD `0x06054b50` (máximo 22 + 65535 bytes desde el final) → busca el Directorio Central → busca cada Local File Header.
- Métodos de compresión: `0x00` almacenado, `0x08` DEFLATE (RFC 1951, ~99% de los archivos), `0x0C` BZIP2, `0x0E` LZMA, `0x5D` PPMd.
- Integridad: CRC-32 con polinomio `0xEDB88320` (IEEE 802.3 invertido) recalculado sobre los bytes extraídos y comparado con el valor del directorio central.
- Zip Slip (Snyk 2018): entradas con salto de ruta `../` pueden escribir fuera del directorio de extracción; se corrige normalizando y validando la ruta resuelta antes de la escritura.
- Implementación en el navegador: `File.arrayBuffer()` → JSZip / fflate `unzipSync()` → `URL.createObjectURL(new Blob([bytes]))` por entrada para descargas, sin viaje al servidor.
- El cifrado no se maneja: ZipCrypto se rompe con 3 bytes de texto plano conocido; WinZip AES-256 (APPNOTE 7.0, campo extra AE-2 con HMAC-SHA1) no está implementado aquí.
- ZIP64 (APPNOTE 4.5+) extiende los campos de tamaño/desplazamiento de 32 bits a 64 bits mediante campos extra; es necesario para archivos o entradas individuales superiores a 4 GiB (2³² − 1 bytes).
Ejemplos
Ver contenido del archivo
Visualiza la lista de archivos dentro de un archivo ZIP directamente en el navegador sin instalar software de extracciónExtraer archivos individuales
Descarga solo el archivo que necesitas del archivo ZIP sin extraer todoExtracción por lotes
Extrae y descarga todos los archivos del archivo ZIP con un solo clicPreguntas frecuentes
¿Se sube el ZIP para extraerlo?
No. La página lee el ZIP localmente mediante la API FileReader y descomprime las entradas en el navegador con JSZip. Los archivos nunca salen de tu dispositivo. Puedes confirmarlo en la pestaña Network mientras extraes.
¿Qué variantes de ZIP admite?
Archivos ZIP estándar con compresión DEFLATE (la variante más común). Las entradas almacenadas (sin comprimir) también funcionan. ZIP64 (para archivos de más de 4 GB) está soportado en la mayoría de versiones. Las entradas cifradas (protegidas con contraseña) y los formatos 7Z, RAR, TAR no están soportados: usa una herramienta dedicada para ellos.
¿Puedo extraer ZIPs protegidos con contraseña?
En general no. JSZip no maneja entradas cifradas con ZipCrypto ni con AES. Descífralos primero con 7-Zip o WinRAR en el escritorio, luego vuelve a empaquetar y súbelo aquí si necesitas inspeccionar la estructura.
¿Y si el ZIP tiene nombres de archivo en chino o japonés?
La página lee los nombres de archivo como UTF-8 por defecto. Los ZIPs creados en Windows antiguos pueden almacenar los nombres en GBK (chino) o Shift_JIS (japonés) sin establecer la marca UTF-8: aparecerán ilegibles. Vuelve a crear el ZIP con una herramienta compatible con UTF-8 o usa 7-Zip en el escritorio con la página de códigos correcta.
¿Cuál es el límite de tamaño de archivo?
La memoria del navegador. Los equipos de escritorio modernos manejan ZIPs de más de 1 GB; los navegadores móviles se quedan sin memoria alrededor de unos cientos de MB. Para archivos muy grandes, usa una herramienta de escritorio que lea del disco en streaming.
¿Puedo previsualizar el contenido de los archivos sin extraerlos?
Sí, para archivos de texto: pega o haz clic en cualquier entrada y la página muestra su contenido. Las imágenes se previsualizan como miniaturas. Las entradas binarias (ejecutables, ZIPs anidados) solo muestran metadatos; descárgalas para inspeccionarlas.
¿Se extraen los archivos ocultos y los dotfiles?
Sí. ZIP no tiene un concepto de atributo 'oculto': todas las entradas son visibles. Los nombres que empiezan por punto (.gitignore, .env) se extraen normalmente; trátalos como archivos ordinarios.