Cómo decodificar una cadena Base64 gzip
- Pega el Base64 en la entrada o suelta un archivo
.gz,.zzo.deflate. Los espacios y saltos de línea se ignoran. - Deja Formato en Detección automática. El estado indica lo que encontró, por ejemplo «Detectado gzip».
- El texto aparece en el panel de salida, y el JSON se formatea. Si el resultado es binario, se detecta su tipo de archivo y aparece un botón Descargar.
- Con entrada gzip, los metadatos muestran además el nombre original del archivo y la fecha de modificación, si el remitente los guardó.
Cómo distinguir gzip, zlib y deflate
Los tres usan la misma compresión DEFLATE y solo cambian en el envoltorio, que se nota en los primeros caracteres Base64:
| Empieza por | Formato | Origen típico |
|---|---|---|
H4sI | gzip (1F 8B 08) | gzip, GZIPOutputStream, cuerpos HTTP, CloudWatch Logs |
eJ | zlib, nivel por defecto (78 9C) | zlib.compress(), PHP gzcompress(), flujos de PDF |
eNo–eNr | zlib, máxima compresión (78 DA) | niveles 7–9 |
eAE–eAH, eF4–eF7 | zlib, niveles rápidos y bajos (78 01, 78 5E) | niveles 1 a 5 |
| sin prefijo fijo | deflate sin procesar | binding SAML Redirect, PHP gzdeflate(), entradas de ZIP |
SDRzSU | gzip codificado en Base64 dos veces | Secrets de releases de Helm |
Deflate sin procesar no tiene firma, así que la detección automática lo prueba cuando fallan gzip y zlib. Brotli tampoco tiene firma y se prueba al final, si el navegador lo admite.
Datos reales
Los eventos de suscripción de AWS CloudWatch Logs llegan a Lambda como {"awslogs": {"data": "H4sI…"}}. Pega el valor de data para leer el JSON con logGroup, logStream y logEvents.
Los Secrets de releases de Helm 3 guardan el Base64 de un JSON comprimido con gzip, que Kubernetes vuelve a codificar en Base64. Desde la shell:
kubectl get secret sh.helm.release.v1.myapp.v3 -o jsonpath='{.data.release}' \
| base64 --decode | base64 --decode | gunzip | jq -r .manifest
En el navegador, decodifica la capa exterior con el decodificador de Secrets de Kubernetes o el decodificador Base64 y pega en esta página el resultado H4sI….
Los mensajes SAML Redirect son deflate sin procesar. También se decodifican aquí, pero el decodificador SAML además los decodifica de URL y resume el XML.
Decodificar en Python y Node.js
import base64, zlib
raw = base64.b64decode(s)
text = zlib.decompress(raw, 47).decode() # 47 = 32 + 15: accept gzip or zlib
const zlib = require("zlib");
const text = zlib.unzipSync(Buffer.from(s, "base64")).toString(); // gzip or zlib
Para deflate sin procesar usa zlib.decompress(raw, -15) en Python y zlib.inflateRawSync() en Node. Consulta Base64 en Python y Base64 en Node.js.
Errores y límites
- «Es Base64 válido, pero no son datos gzip, zlib ni deflate sin procesar.» La cadena nunca se comprimió. Prueba el decodificador Base64, o Base64 a archivo si son datos binarios.
- «No son datos gzip válidos, o están truncados.» Falta parte de la cadena, a menudo cortada por el límite de longitud de línea de un log. Vuelve a copiarla desde el origen.
- «Se ignoraron los bytes adicionales tras el flujo comprimido.» Se añadió algo después del final del flujo. Los datos anteriores se conservan.
- «Los datos descomprimidos superan 256.0 MB, así que se detuvo la descompresión (posible bomba zip).» La salida tiene un tope como protección frente a bombas de descompresión. Para algo tan grande usa
gunzipen local. - No se admiten archivos gzip de varios miembros (varios flujos gzip concatenados).
Preguntas frecuentes
¿Qué significa H4sI al principio de una cadena Base64?
Es la forma Base64 de 1F 8B 08, la firma de gzip con el byte del método deflate. Una cadena que empieza por H4sI son datos gzip: decodifica el Base64 y aplica gunzip a los bytes.
¿Cómo decodifico Base64 gzip en la línea de comandos?
echo 'H4sI…' | base64 --decode | gunzip en Linux y macOS. Con datos zlib (eJ…) gunzip rechaza el encabezado; usa python3 -c 'import sys,zlib; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))' después del paso de Base64.
¿Por qué obtengo datos binarios al decodificar Base64?
Los datos se comprimieron antes de codificarlos, así que un decodificador Base64 normal te entrega los bytes comprimidos. Pega la cadena aquí y se decodifica y descomprime en un solo paso.
¿Puedo abrir archivos .zip o .tar.gz?
Un .tar.gz se descomprime en el archivo .tar, que puedes descargar. ZIP es otro tipo de contenedor; usa Base64 a ZIP para ver su contenido y guardarlo.