Decodificador y verificador de JWT
Decodifica JSON Web Tokens y verifica firmas HS/RS/ES/PS — todo en tu navegador
—
—
¿Qué es un decodificador de JWT?
Un JWT (JSON Web Token) es un token de tres partes — cabecera, payload y firma — usado para autenticación y autorización en las apps web modernas. El payload parece texto aleatorio hasta que lo decodificas, que es exactamente lo que hace esta herramienta. Convierte la cabecera y el payload en JSON legible y bien formateado, explica los claims registrados como exp, nbf e iat en lenguaje claro con fechas reales, y muestra si el token está expirado, activo o aún no válido. También puede verificar firmas: HS256/384/512 con un secreto compartido, y RS/PS/ES con una clave pública PEM, todo con Web Crypto dentro del navegador. Para desarrolladores que depuran flujos de autenticación, esto sustituye la costumbre de pegar tokens de producción en sitios de terceros.
Qué puede hacer esta herramienta
- 📖 Decodificar cabecera y payload en JSON bien formateado
- 🏷️ Explicar los claims registrados en lenguaje claro
- ⏳ exp, nbf e iat mostrados como fecha exacta más tiempo relativo
- ✅ Verificación de firma HS256/384/512 con secreto
- 🔏 Verificación de firma RS/PS/ES con clave pública PEM
- 🚦 Insignia de estado: expirado, activo o aún no válido
- ⚠️ Aviso cuando el alg de la cabecera es none, es decir, token sin asegurar
Cuándo la usarás
- Para depurar un error 401 en tu flujo de inicio de sesión
- Para averiguar por qué un token dejó de funcionar de repente
- Para verificar un token de un proveedor de identidad tercero antes de confiar en él
- Para inspeccionar los claims de un token de refresco
Privacidad: los tokens y las claves se procesan por completo en tu navegador y nunca se suben, así que pegar credenciales reales de producción es seguro.
Qué son realmente los tres segmentos
Un JWT consta de tres segmentos codificados en base64url, separados por puntos:
- El encabezado especifica el algoritmo; la información útil contiene las afirmaciones (claims); y la firma vincula ambos segmentos mediante un secreto o una clave.
- Nada del encabezado ni de la información útil está cifrado: cualquiera que posea el token puede leer todas las afirmaciones. Esto es intencional: un JWT es un contenedor firmado, no un mecanismo seguro.
- La verificación requiere la clave de firma y debe realizarse en tu servidor; esta página decodifica localmente para que puedas inspeccionar las afirmaciones sin pegar el token en ningún servicio remoto.
Decodificar no es verificar
Los claims se vuelven fechas reales
La cabecera y el payload se imprimen como JSON legible mientras los claims registrados como exp, nbf e iat se convierten en fechas reales, con un veredicto claro: caducado, activo o aún no válido.
Verificación HS, RS, PS y ES
Verifica HS256/384/512 contra un secreto compartido en forma plana o base64, y tokens RS, PS o ES contra una clave pública PEM, todo con Web Crypto dentro de la página.
Tokens malformados explicados
Los problemas estructurales se notifican con precisión —falta un punto, cabecera inválida, payload ilegible— y los tokens que declaran el algoritmo none se marcan en lugar de confiarse en ellos.
Preguntas frecuentes
¿Se envía mi token a un servidor?⌄
No. La decodificación y la verificación de firma se realizan por completo en tu navegador con la API Web Crypto. Tu token, secreto y claves nunca salen del dispositivo, por lo que puedes inspeccionar tokens de producción de forma segura.
¿Qué algoritmos de firma puedes verificar?⌄
HS256/384/512 con un secreto compartido (UTF-8 o base64url) y las familias asimétricas RS256/384/512, PS256/384/512 y ES256/384/512 pegando la clave pública PEM. Para tokens asimétricos solo necesitas la clave pública, nunca la privada.
Un JWT no está cifrado, ¿qué significa eso?⌄
Un JWT estándar solo está codificado en base64url y firmado, no cifrado, así que cualquiera puede leer su carga útil. Nunca pongas secretos en un JWT. La firma solo demuestra que el token no fue alterado por alguien sin la clave.
Indica que la firma es inválida: ¿está el token falsificado?⌄
Normalmente se debe a una de tres causas aburridas: el token fue firmado con el secreto de un entorno distinto; el emisor rota sus claves y la tuya está obsoleta; o el algoritmo indicado en el encabezado no coincide con el que tu verificador espera (el famoso truco de alg=none). Decodifica primero el encabezado aquí y luego compáralo con la clave que realmente utiliza tu backend.