Decodificar JWT: encabezado, payload y caducidad de un token
Este decodificador JWT online separa un JSON Web Token en encabezado y payload y muestra ambos como JSON con sangría en cuanto lo pegas. Las marcas de tiempo, como exp, llevan al lado una fecha local legible, y un indicador te dice si el token ha caducado. Comprobar la firma es opcional. El token se lee en tu navegador y no se sube a ningún servidor.
Decodificar JWT online, paso a paso
- Pega el token en el campo JSON Web Token. El encabezado y el payload aparecen al momento: no hay ningún botón de decodificar.
- Mira los indicadores de estado sobre el resultado: si el token ha caducado, si aún no es válido o si no tiene caducidad, y cómo está su firma.
- Con Copiar encabezado o Copiar payload copias ese bloque como JSON sin formato. Las notas de fecha no van incluidas en la copia.
- Con Borrar vacías el campo para empezar con otro token.
Puedes pegar el token tal como te llegó: se quitan un «Authorization: Bearer» inicial, las comillas alrededor y los saltos de línea, así que sirve copiar desde la cabecera de una petición, una línea de log o una respuesta JSON. El campo admite hasta 100.000 caracteres. Los números grandes y el texto en otros idiomas se muestran tal cual en los claims, y los valores largos se ajustan en varias líneas.
Qué contienen el encabezado y el payload
Un JWT son tres partes en base64url unidas por puntos: header.payload.firma. Las dos primeras son JSON codificado y nada más, por eso un JWT se puede decodificar sin ningún secreto. Estos son los claims más habituales:
iss: emisor, quién creó el tokensub: sujeto, de quién trata el tokenaud: audiencia, para quién es el tokenexp: hora de caducidadnbf: no es válido antes de esta horaiat: hora de emisiónjti: identificador único del token
El encabezado suele traer alg (el algoritmo de firma), typ y, a veces, kid, el identificador de la clave que firmó.
Cuándo caduca un JWT: la fecha de exp
exp, iat, nbf y auth_time son marcas de tiempo Unix en segundos. La herramienta escribe cada una como fecha y hora locales junto al número, para que puedas leerla sin convertirla. Los indicadores sobre el resultado usan el reloj de tu dispositivo:
- Con el claim
expindican hace cuánto caducó el token o cuánto le queda. - Si falta
exp, aparece Sin caducidad: el token no tiene el claim exp. - Si
nbfsigue en el futuro, el token se muestra como aún no válido.
Validar token JWT: comprueba la firma
Decodificar muestra lo que dice un token; solo la firma demuestra que no se modificó. Bajo el resultado está Verificar la firma (opcional). Deja Algoritmo en la detección automática, que lee alg del token, o elige uno tú: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 o EdDSA. Después pega una clave en Secreto o clave pública:
- un secreto sin más para los algoritmos HS, usado exactamente como lo escribes, sin decodificarlo antes de base64
- una clave pública PEM (
-----BEGIN PUBLIC KEY-----) o una clave pública RSA en formato PKCS#1 - un certificado X.509
- un JWK, o un JWKS entero, y entonces la clave se elige por el
kiddel token
El indicador cambia a Firma válida o Firma no válida. Sin clave se queda en Firma sin verificar. Un token que dice alg none muestra Sin firma: este token no está firmado. Si pegas una clave privada, la herramienta la rechaza y te pide la pública, que es lo único que hace falta para verificar. La comprobación usa la WebCrypto de tu navegador; EdDSA necesita un navegador reciente.
Si el token no se decodifica
El error aparece bajo el campo y señala la parte que falla:
- El texto no tiene tres partes separadas por dos puntos, y el mensaje dice cuántas ha encontrado.
- El encabezado, el payload o la firma no es base64url válido, muchas veces porque se perdió un carácter al copiar.
- El encabezado o el payload no es texto UTF-8 válido, o no es JSON válido.
- Un token de cinco partes es un JWE cifrado. Se reconoce y se explica, pero no se puede leer sin la clave privada.
¿Es seguro pegar un token aquí?
El token y cualquier clave se decodifican y se comprueban en tu dispositivo. No se sube nada, no se guarda nada y no hace falta cuenta. Aun así, un token de acceso activo es una credencial, así que usa tokens caducados o de prueba cuando puedas.
Esta herramienta solo lee y comprueba tokens. No crea ni firma un JWT, y no descifra un JWE.
Preguntas frecuentes
¿Se puede decodificar un JWT sin el secreto?
Sí. El encabezado y el payload de un JWT solo están codificados en base64url, no cifrados, así que los puede leer cualquiera que tenga el token. Pégalo en el campo «JSON Web Token» y ambos aparecen a la vez. El secreto o la clave pública solo hacen falta para comprobar la firma, que aquí es opcional.
¿Cómo saber si un JWT ha caducado?
Pega el token y lee el indicador sobre el resultado. Dice hace cuánto caducó o cuánto tiempo le queda, a partir del claim exp. Un token sin claim exp muestra «Sin caducidad: el token no tiene el claim exp», y si nbf sigue en el futuro, el indicador avisa de que aún no es válido.
¿Cómo convertir el valor exp de un JWT en una fecha?
No hace falta convertirlo. exp es una marca de tiempo Unix en segundos, y la herramienta escribe la fecha y hora locales correspondientes junto a ella, en el bloque «Payload». Lo mismo ocurre con iat, nbf y auth_time.
¿Cómo verificar la firma de un JWT con una clave pública?
En «Verificar la firma (opcional)», deja «Algoritmo» en la detección automática o elige el que use el token, y pega la clave pública en «Secreto o clave pública». Sirven una clave PEM (-----BEGIN PUBLIC KEY-----), una RSA PUBLIC KEY, un certificado X.509, un JWK o un JWKS. Después el indicador cambia a «Firma válida» o «Firma no válida».
¿Puedo decodificar un token JWT en local, sin enviarlo a un servidor?
Sí, así funciona esta herramienta. El token se separa, se decodifica y se comprueba en tu navegador, y no se sube ni se guarda nada. Las comprobaciones de firma usan la WebCrypto del navegador, de modo que ni el token ni la clave se envían a ninguna parte.
¿Qué hay en el encabezado y el payload de un JWT?
El encabezado describe el token: normalmente su algoritmo de firma (alg), su tipo (typ) y, a veces, un identificador de clave (kid). El payload contiene los claims, como quién lo emitió (iss), de quién trata (sub), para quién es (aud) y cuándo caduca (exp). Ambos son JSON sin formato y se ven en los bloques «Encabezado» y «Payload».
¿Qué significa alg none en un JWT?
Significa que el token se declara sin firmar: la parte de la firma está vacía y no hay nada que comprobar. La herramienta muestra «Sin firma: este token no está firmado». Un servidor nunca debería aceptar un token así como prueba de identidad.
¿Cómo decodificar un bearer token?
Si es un JWT, pégalo tal cual. Se quitan por ti un «Authorization: Bearer» inicial, las comillas y los saltos de línea, así que puedes copiar directamente de la cabecera de una petición o de un log. Un bearer token opaco que no tenga tres partes separadas por puntos no se puede decodificar, y la herramienta dice cuántas partes ha encontrado.
¿Puedo descifrar un JWE o crear y firmar un JWT aquí?
No. Un token de cinco partes es un JWE y su contenido está cifrado, así que no se puede leer sin la clave privada; la herramienta lo reconoce y lo indica en lugar de mostrar un error. Tampoco genera, firma ni edita tokens: solo los lee y los comprueba.
Recomendado
-
Yubico Security Key C NFC¿Terminaste de depurar inicios de sesión? Protege tus propias cuentas con una llave USB-C a prueba de phishing.
-
Llave de seguridad YubiKey 5C NFCReúne OTP, tarjeta inteligente y FIDO2 en una sola llave, útil cuando creas y pruebas flujos de autenticación.
-
Soporte para portátil Rain Design mStandSube tu portátil a la altura de los ojos en largas sesiones leyendo tokens y registros.
Ayuda a mantener las herramientas gratis. ✨
Imágenes meramente ilustrativas. En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables.