Decodificar JWT

Decodifica un token JWT y consulta su cabecera y su contenido en JSON legible, con las fechas interpretadas. Sin verificar la firma y 100 % en tu navegador.
Procesamiento 100 % local · tus archivos no salen de tu navegador
Publicidad
Cabecera
{
  "alg": "HS256",
  "typ": "JWT"
}
Contenido (payload)
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
Emitido (iat): 18/1/2018, 2:30:22

La firma no se verifica: esta herramienta solo decodifica el contenido, que en un JWT va codificado (no cifrado). Nunca pegues tokens de producción con datos sensibles.

Procesamiento 100 % local · tu token nunca sale de tu navegador

Inspecciona cualquier token JWT

Los JSON Web Tokens (JWT) son omnipresentes en la autenticación web moderna: los usan APIs, aplicaciones móviles y sistemas de inicio de sesión. Cuando depuras un problema de autenticación, a menudo necesitas ver qué hay dentro del token: qué algoritmo usa, qué datos contiene y cuándo caduca. Esta herramienta decodifica esas partes al instante, sin enviar el token a ningún servidor.

Las tres partes de un JWT

  • Cabecera: indica el tipo de token y el algoritmo de firma (por ejemplo, HS256).
  • Contenido (payload): los datos o «claims», como el usuario, los permisos o las fechas de validez.
  • Firma: garantiza que el token no se ha modificado. Se verifica en el servidor con una clave secreta.

Las tres piezas van pegadas y separadas por un punto, siempre en ese orden. Las dos primeras son JSON convertido a Base64URL, una variante del Base64 de toda la vida que cambia los dos símbolos que dan problemas dentro de una dirección web y suele prescindir del relleno final. Gracias a eso un token cabe en una cabecera HTTP o en un parámetro sin romper nada.

Los claims que casi siempre vas a ver

Cada dato del payload se llama claim y el estándar reserva unos cuantos nombres cortos con un significado fijo:

  • sub — el sujeto: quién es el titular del token, normalmente el identificador del usuario.
  • iss — el emisor: qué sistema lo generó.
  • aud — la audiencia: para qué servicio está destinado. Un token emitido para una API no debería aceptarse en otra.
  • iat — el momento en que se emitió.
  • exp — el momento en que deja de valer.
  • nbf — a partir de cuándo empieza a ser válido, útil para tokens programados.
  • jti — un identificador único, pensado para poder invalidar un token concreto.

Las tres fechas viajan como marcas de tiempo Unix, es decir, segundos contados desde 1970, así que a simple vista no dicen nada; la herramienta las traduce a fecha y hora legibles. Junto a estos claims registrados suele haber otros propios de cada aplicación, como el rol, los permisos o el correo.

Publicidad

HS256 y RS256: quién puede firmar y quién puede comprobar

El campo alg de la cabecera anuncia el algoritmo. Con HS256 existe una única clave secreta que sirve tanto para firmar como para verificar, algo práctico cuando el emisor y el validador son el mismo sistema, pero que obliga a compartir ese secreto con todo el que necesite comprobar tokens. Con RS256 hay dos claves: el emisor firma con la privada y cualquiera puede verificar con la pública, que es el modelo de los proveedores de identidad externos. Ver el algoritmo antes de depurar ahorra tiempo, porque un desajuste entre lo que firma y lo que valida es una causa frecuente de rechazos.

Codificado no es cifrado

Es un malentendido muy común: el contenido de un JWT no está cifrado, solo codificado en Base64URL. Eso significa que cualquiera que tenga el token puede leer su payload (esta herramienta lo demuestra). La firma no oculta los datos, solo certifica que no han sido alterados. La consecuencia práctica es clara: nunca guardes contraseñas ni datos sensibles dentro de un JWT.

Decodificar no es verificar

Conviene separar bien las dos operaciones. Decodificar es deshacer el Base64URL y leer el contenido: no necesita ninguna clave y por eso puede hacerse aquí mismo, en tu navegador. Verificar es recalcular la firma con la clave correspondiente y comprobar que coincide, además de revisar la caducidad y la audiencia. Eso solo puede hacerlo el servidor que custodia la clave. Un token bien formado y legible puede estar perfectamente falsificado; leerlo sirve para diagnosticar, jamás para conceder acceso.

Cuando el problema es la caducidad

Buena parte de los fallos de autenticación se explican mirando dos números. Si la fecha de exp ya ha pasado, el servidor rechazará el token por mucho que la firma sea correcta: toca renovarlo con el mecanismo de refresco que use tu sistema. Si en cambio el token parece recién emitido y aun así falla, revisa la fecha de iat y el reloj de la máquina, porque un desfase de unos minutos entre servidores basta para que un token se considere emitido en el futuro y se descarte.

Publicidad

Dónde pegas un token no da igual

Un token de acceso es una credencial en toda regla: quien lo tiene puede actuar en tu nombre hasta que caduque. Pegarlo en un servicio que lo envía a su servidor para decodificarlo equivale a entregarle las llaves a un desconocido, aunque prometa no guardarlas. Este decodificador funciona enteramente dentro de tu navegador: el token no se transmite ni se almacena, y al cerrar la pestaña desaparece. Aun así, la buena costumbre cuando trabajas con producción es usar tokens de prueba o revocar el que hayas manipulado.

Herramientas relacionadas

Como el JWT se apoya en Base64, te pueden interesar el codificador Base64, el formateador de JSON y el generador de hash. Para traducir los claims de fecha a mano tienes el conversor de timestamp. Más en herramientas de archivos.

Preguntas frecuentes

¿Qué es un JWT y para qué se usa?

Un JSON Web Token es un formato compacto para transportar información firmada entre dos partes, sobre todo en autenticación: el servidor lo emite al iniciar sesión y el cliente lo presenta en cada petición. Son tres bloques separados por puntos: cabecera, payload y firma.

¿El contenido de un JWT está cifrado?

No, y es el malentendido más peligroso: está codificado en Base64URL, que cualquiera puede revertir en milisegundos. La firma impide modificarlo sin ser detectado, pero no oculta nada. Nunca metas contraseñas ni datos sensibles en el payload.

¿Esta herramienta verifica la firma del token?

No, solo decodifica y muestra la cabecera y el payload. Verificar la firma exige la clave secreta o la clave pública del emisor, y esa comprobación corresponde siempre al servidor. Decodificar sin verificar sirve para inspeccionar, jamás para confiar.

¿Qué significan exp, iat, sub y compañía?

Son los claims registrados del estándar: sub identifica al usuario, iat indica cuándo se emitió el token, exp cuándo caduca y nbf desde cuándo es válido. Van como timestamps Unix, por eso la herramienta te los traduce a fechas legibles.

¿Por qué mi API rechaza un token que aquí se ve bien?

Que se decodifique no significa que sea válido. Lo más habitual es que haya caducado (mira el claim exp), que la firma no corresponda a la clave del servidor, o que falle algún claim como aud o iss. La decodificación solo confirma el formato.

¿Qué diferencia hay entre HS256 y RS256?

HS256 firma y verifica con una misma clave secreta compartida, lo que es cómodo cuando quien emite y quien valida son el mismo sistema. RS256 usa un par de claves: el emisor firma con la privada y cualquiera puede verificar con la pública, que es lo habitual en proveedores de identidad externos.

¿Puedo pegar aquí un token real sin riesgo?

El token se procesa en tu propio navegador y no se transmite a ningún servidor, a diferencia de otros decodificadores online. Aun así, aplica la regla general de no pegar tokens de producción vigentes en webs de terceros: quien tiene el token puede usarlo mientras no caduque.

Herramientas relacionadas

Publicidad