Saltar al contenido

JWT Tool

Decodifica e inspecciona tokens JWT: cabecera, payload y firma.

Gratis y sin registro · Última revisión:

JWT Tool

Decodifica e inspecciona tokens JWT — o genera un payload de ejemplo

¿Qué es un JWT (JSON Web Token)?

Un JWT es un formato estándar para representar información de forma compacta y verificable, muy usado para autenticación en APIs y aplicaciones web. Se compone de tres partes separadas por puntos: cabecera (header), datos (payload) y firma (signature) — las dos primeras están codificadas en Base64 (legibles por cualquiera), pero la firma garantiza que el contenido no se ha modificado.

Cómo usar esta herramienta

  1. Pega el token JWT completo en el campo de entrada.
  2. La herramienta separa y decodifica automáticamente la cabecera y el payload.
  3. Revisa los datos del token: algoritmo usado, fecha de expiración, y cualquier dato incluido (ej. ID de usuario, rol).

Ejemplo práctico

Un token con payload {"sub":"1234","role":"admin","exp":1735689600} indica que pertenece al usuario con ID 1234, con rol admin, y que expira en la fecha codificada en exp (formato Unix timestamp). Si la fecha ya pasó, ese token debería ser rechazado por cualquier sistema que lo verifique correctamente.

Conceptos clave

Un JWT (JSON Web Token) está formado por tres partes separadas por puntos: header.payload.signature. Cada parte se codifica en Base64url, una variante de Base64 que sustituye los caracteres + y / por - y _ para que el token sea seguro dentro de URLs, cabeceras HTTP y cookies sin necesidad de escapar caracteres especiales. El header suele contener el algoritmo de firma y el tipo de token, el payload contiene los claims (datos), y la signature es el resultado de firmar criptográficamente la unión del header y el payload codificados.

El algoritmo de firma puede ser simétrico o asimétrico. Con HS256 (HMAC-SHA256) se usa una única clave secreta compartida tanto para firmar como para verificar el token, por lo que cualquier sistema que pueda verificar también podría falsificar tokens si conoce esa clave. Con RS256 (RSA-SHA256) se usa un par de claves: una privada para firmar y una pública para verificar, lo que permite que múltiples servicios validen tokens sin poder emitir nuevos, un patrón habitual en arquitecturas de microservicios y en proveedores de identidad como los usados en SSO.

Entre los claims estándar más comunes están exp (fecha de expiración, en timestamp Unix), iat (fecha de emisión, "issued at"), sub (subject, el identificador del usuario o entidad a la que se refiere el token) e iss (issuer, quién emitió el token). Estos campos están definidos en el estándar (RFC 7519) y permiten que distintos sistemas interpreten el token de forma consistente sin depender de convenciones propias.

Es fundamental entender que un JWT normal no está cifrado, solo firmado: cualquiera que tenga el token puede decodificar el header y el payload sin necesidad de ninguna clave, ya que Base64url es reversible por cualquiera, no un mecanismo de seguridad. La firma solo garantiza que el contenido no ha sido alterado desde que se emitió, pero no oculta su contenido. Por eso nunca se deben incluir datos sensibles (contraseñas, números de tarjeta, información personal delicada) en el payload. Este diseño hace que los JWT sean muy útiles para autenticación stateless: el servidor no necesita guardar sesión en una base de datos, solo verificar la firma en cada petición, lo que encaja bien con arquitecturas distribuidas y con flujos de inicio de sesión único (SSO) entre varias aplicaciones.

Preguntas frecuentes

¿Es seguro pegar un JWT aquí?

La decodificación ocurre en tu navegador, no se envía el token a ningún servidor. Aun así, evita pegar tokens de producción con datos sensibles en herramientas de terceros como norma general.

¿Puedo verificar la firma con esta herramienta?

Sí, en la pestaña "Verificar": si conoces el secret usado para firmar un token HS256/384/512, la herramienta recalcula la firma en tu navegador con Web Crypto y comprueba que coincide. Para tokens RS256 (firma asimétrica) no se puede verificar aquí porque requeriría la clave pública del emisor.

¿Por qué cualquiera puede leer el contenido de un JWT?

Porque solo está codificado en Base64, no cifrado — es intencional, para que cualquier cliente pueda leer los datos. La seguridad del JWT está en la firma, no en ocultar su contenido.