Decodificar solo lee el token; no está verificado hasta comprobar la firma con la clave correcta.
Este decodificador JWT separa un JSON Web Token en cabecera, payload y firma, y muestra los claims como JSON legible, con exp, iat y nbf convertidos a fechas locales. También verifica firmas HS, RS, PS y ES y firma tokens HS256 nuevos. Todo se hace en tu navegador con la API Web Crypto.
Cómo se usa
- Pega un JWT. La cabecera, el payload y la firma se colorean y se decodifican al pegarlo.
- Lee los claims: exp, iat y nbf aparecen en tu hora local, con «dentro de 3 horas» o «hace 2 días».
- Para comprobar la firma, escribe el secreto (HS256/384/512) o pega la clave pública en PEM, un certificado X.509 o un JWK (algoritmos RS, PS y ES).
- Toca la cabecera o el payload para copiarlos como JSON formateado.
- Cambia a Crear para firmar un token HS256/384/512 nuevo con tu payload y tu secreto.
- Nada sale de tu navegador: la decodificación y la verificación usan la Web Crypto API integrada, y los tokens y claves nunca se guardan ni se envían.
- Cualquiera puede decodificar un JWT: el payload solo está en Base64URL, no cifrado. No pongas secretos en él.
- Un token con alg «none» no tiene firma. Los servidores deben rechazarlo.
- Algoritmos compatibles: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 y ES512. También funciona un JWKS ({"keys": […]}); la clave se elige por kid.
- Activa «Secreto Base64» si tu secreto está guardado en Base64, como hacen algunos proveedores.
Cómo se forma un JWT
Un JWT (RFC 7519) son tres cadenas Base64URL unidas por puntos: cabecera.payload.firma. La cabecera indica el algoritmo, por ejemplo {"alg":"HS256","typ":"JWT"}. El payload contiene claims como sub (sujeto), iss (emisor), aud (audiencia), exp (caducidad), iat (emitido) y nbf (no antes de). Las fechas van en segundos desde el 1 de enero de 1970 UTC: exp 1767225600 equivale al 1 de enero de 2026 a las 00:00 UTC.
La firma se calcula sobre las dos primeras partes. Con HS256 es un HMAC-SHA256 con un secreto compartido; con RS256 o PS256, una firma RSA; con ES256, una firma ECDSA sobre la curva P-256 (RFC 7518).
Decodificar no es verificar
Cualquiera puede leer un JWT: Base64URL es una codificación, no un cifrado, así que no pongas contraseñas ni datos personales en el payload. Solo hay que fiarse de un token si la firma es válida con la clave correcta y exp y nbf están en plazo. Un token con alg none no lleva firma y el servidor debe rechazarlo. Para HS256 conviene un secreto de al menos 32 bytes aleatorios.
Qué claves admite
Para HS256, HS384 y HS512 escribe el secreto compartido, en texto o en Base64. Para RS, PS y ES pega la clave pública en PEM, un certificado X.509, un JWK o un JWKS completo; con un JWKS se elige la clave según el kid de la cabecera. Los tokens y las claves no se guardan ni se envían.
Preguntas frecuentes
¿Es seguro pegar aquí un JWT?
Sí. El token se decodifica y verifica en tu navegador y no se envía ni se guarda. Aun así, trata los tokens de producción como contraseñas y usa tokens caducados o de prueba cuando puedas.
¿Se puede decodificar un JWT sin la clave?
Sí. La cabecera y el payload solo están codificados en Base64URL, así que cualquiera puede leerlos. El secreto o la clave pública solo hacen falta para comprobar la firma.
¿Qué significa el claim exp?
exp es la fecha de caducidad en segundos desde el 1 de enero de 1970 UTC. Pasado ese momento, el token debe rechazarse. Aquí se muestra en tu hora local, con avisos como caducó hace 2 días.
¿Qué diferencia hay entre HS256 y RS256?
HS256 firma con un único secreto que deben conocer quien emite y quien verifica. RS256 firma con una clave privada RSA y se verifica con la pública, así que el verificador nunca tiene la clave de firma.
¿Por qué falla la verificación de la firma?
Lo habitual es un secreto incorrecto o guardado en Base64, una clave pública que no corresponde al kid o un token modificado después de firmarse. Activa Secreto Base64 si tu proveedor lo guarda así.
¿Puedo crear un JWT aquí?
Sí. La pestaña Crear firma un token con HS256, HS384 o HS512 a partir de tu payload y tu secreto. No se ofrece firma RSA ni EC porque requieren una clave privada.