Qué hace este decodificador JWT
Un JSON Web Token (JWT) es una cadena de tres partes separadas por puntos, codificadas en Base64URL según la RFC 7519. Esta versión en español te permite decodificar tokens JWT online y leer su contenido en menos de un segundo: el algoritmo en el header, los claims del payload y el estado de expiración. El IETF mantiene más de 9.500 RFCs; entender cuál rige tu token es el primer paso para depurar cualquier problema de autenticación. Importante: decodificar no es lo mismo que verificar. La firma que protege la integridad del token requiere la clave secreta o pública; nunca la pegues en una herramienta externa. Este decodificador es 100% en el navegador — tus datos nunca salen de tu equipo. Sin subidas, sin tracking, sin logs en servidor.
Características
- Decodificación instantánea. Pega el token y obtén header, payload y firma formateados al instante. Acepta tokens con o sin el prefijo 'Bearer '.
- Claims estándar resaltados. Identifica automáticamente iss, sub, aud, exp, iat, nbf y jti con etiquetas legibles, para que no tengas que recordar el nombre de cada campo.
- Estado de expiración en tiempo real. Compara el claim exp con el reloj local del navegador y muestra si el access token está vigente o expirado, con la fecha y hora exactas.
- Sin verificación de firma (por diseño). Esta herramienta decodifica sin verificar — el comportamiento correcto para inspeccionar tokens con PII sin exponer claves secretas a terceros.
- Soporte para algoritmos comunes. Muestra el campo alg del header (HS256, RS256, ES256, etc.) para que puedas identificar el esquema de firma que usa tu proveedor de identidad.
- Copia con un clic. Copia el JSON del header o del payload formateado directamente al portapapeles para pegarlo en tu editor o en un ticket de soporte.
Cómo usar el decodificador JWT
Pega el token en el campo de texto y la decodificación ocurre en tiempo real. No hace falta hacer clic en ningún botón.
- Copia el token. Obtén el JWT desde tu respuesta OAuth, la cabecera Authorization o las DevTools del navegador. Puede incluir el prefijo 'Bearer '.
- Pégalo en el campo. El decodificador separa las tres partes automáticamente y aplica Base64URL decode a cada una. En JavaScript puedes replicarlo con
JSON.parse(atob(token.split('.')[1])). - Revisa el payload. Examina los claims: iss (emisor), sub (sujeto), aud (audiencia) y exp (expiración). El panel de estado te indica si el token sigue vigente.
- Verifica la firma fuera de aquí. Para confirmar la integridad del token usa tu backend o la MDN SubtleCrypto API con la clave adecuada. Nunca pegues claves secretas en herramientas online.
Casos de uso comunes
- Depurar flujos OAuth expirados. Cuando una petición falla con 401, pega el bearer token para verificar si exp ya pasó. Útil en entornos de staging donde los tokens tienen TTL corto.
- Detectar errores de audiencia e issuer. Los mismatches entre aud e iss son una causa frecuente de rechazos silenciosos en integraciones multi-tenant. Leer el payload directamente elimina la ambigüedad.
- Leer claims personalizados del proveedor. Auth0, Cognito y Keycloak añaden claims propios al payload. Decodificar el token te muestra exactamente qué campos expone tu proveedor sin necesidad de leer su documentación primero.
- Validar el formato antes de tests de integración. Antes de ejecutar una suite de pruebas en Barcelona o Ciudad de México, un decode rápido confirma que el token de prueba tiene el header y el tipo correcto.
- Revisar el algoritmo en tokens de terceros. El campo alg del header revela si el emisor usa HS256 (simétrico) o RS256/ES256 (asimétrico), dato clave para configurar la verificación en tu servidor.
Preguntas frecuentes
¿Es seguro pegar mi token JWT aquí?
Sí, siempre que el token no lleve información extremadamente sensible que no debas ver tú mismo. Esta herramienta es 100% client-side: el token nunca sale de tu navegador, no se envía a ningún servidor y no se almacena en ningún log. Aun así, evita pegar tokens de producción en cualquier herramienta online si no es estrictamente necesario.
¿Decodificar un JWT es lo mismo que verificarlo?
No. Decodificar solo convierte la cadena Base64URL en JSON legible. Verificar comprueba que la firma es válida usando la clave secreta o pública correcta. Nunca uses los claims de un token decodificado para tomar decisiones de autorización sin haber verificado la firma primero.
¿Qué significa que un token use alg=none?
Es una vulnerabilidad conocida: en 2018, durante competencias de seguridad como Pwn2Own, se demostró que múltiples librerías aceptaban tokens con alg='none' sin firma alguna. Un servidor que confíe en el campo alg del propio token puede ser engañado para aceptar tokens falsificados. Siempre fija el algoritmo esperado en tu backend, nunca lo leas del token entrante.
¿Cómo decodifico un JWT en la línea de comandos?
En bash puedes usar: echo $token | cut -d. -f2 | base64 -d | jq .. En Python: import jwt; jwt.decode(token, options={'verify_signature': False}). Ambos enfoques extraen el payload sin verificar la firma, igual que esta herramienta online.
¿Qué diferencia hay entre JWT y JWE?
Un JWT está firmado (puedes leer el payload aunque no tengas la clave). Un JWE (JSON Web Encryption) está cifrado: el payload es ilegible sin la clave privada correcta. Si pegas un token y no ves JSON en el payload, probablemente sea un JWE y necesitarás descifrarlo con tu clave antes de inspeccionarlo.
¿Por qué el token aparece como expirado aunque acabo de generarlo?
El claim exp se compara con el reloj de tu navegador. Si hay desfase horario (time-skew) entre el servidor que emitió el token y tu equipo local, el token puede parecer expirado o aún no válido (nbf). Ajusta la hora del sistema o añade una tolerancia de skew en tu librería de verificación.