Saltar al contenido

Decodificador de JWTBeta

Pega un JWT (JSON Web Token) y verás su header y su payload. La firma nunca se verifica y todo se procesa en tu navegador.

Firma NO verificada

Esta herramienta solo lee el contenido; nunca verifica la firma. No pegues aquí un token de producción ni un secreto en el que no confíes.

Pega un JWT para ver su header y su payload decodificados.

Cómo usarlo

Pega una cadena JWT en el campo de entrada y su header y su payload aparecerán como JSON bien formateado. También verás el algoritmo de firma, la fecha y hora reales de cada claim registrado (exp, iat, nbf) y si el token ha caducado o todavía no es válido. Los botones de copiar te permiten llevarte el resultado del header o del payload. Nada de lo que pegues se envía a ningún sitio: todo se procesa dentro de este navegador.

Las tres partes de un JWT

Un JWT está formado por tres partes separadas por puntos: header.payload.signature. El header lleva metadatos como el algoritmo de firma (alg) y el tipo de token (typ), mientras que el payload lleva los claims reales, como un ID de usuario, permisos o una fecha de caducidad. Ambas partes son solo JSON codificado en Base64URL, no cifrado, así que cualquiera puede decodificarlas y leerlas. Solo la última parte, la signature, está firmada con una clave secreta (o privada), y existe para confirmar que el header y el payload no se han modificado desde que se emitieron.

Decodificar no es lo mismo que verificar

Esta herramienta solo lee y muestra el header y el payload; nunca verifica la firma. Verificar una firma requiere la clave secreta (para algoritmos basados en HMAC) o la clave pública (para algoritmos basados en RSA/ECDSA) de quien emitió el token, y esta herramienta ni acepta esa clave ni realiza ninguna comunicación fuera de tu navegador. Por eso, que el contenido se muestre correctamente no significa que el token sea auténtico ni que siga siendo válido. Nunca pegues un token de producción, ni una clave secreta en la que no confíes plenamente, en esta ni en ninguna otra herramienta en línea.

Claims registrados (exp, iat, nbf)

El estándar JWT (RFC 7519) define algunos nombres de claim habituales, entre ellos exp (fecha de caducidad), iat (fecha de emisión) y nbf (válido a partir de). Los tres se guardan como NumericDate: el número de segundos transcurridos desde el 1 de enero de 1970. Esta herramienta convierte ese número en una fecha y hora según tu configuración regional y la compara con el momento actual: si exp ya pasó, se marca como «Caducado», y si nbf todavía no ha llegado, se marca como «Aún no válido». Este estado se muestra solo como referencia; el control de acceso real siempre debe aplicarse mediante verificación en el servidor.

Privacidad

El token que pegas y su resultado decodificado se calculan por completo dentro de este navegador y nunca se envían a un servidor. Aun así, ten en cuenta que el payload de un JWT nunca estuvo cifrado: cualquier información que contenga, como un correo electrónico, un rol o un ID interno, puede leerla cualquiera, con o sin esta herramienta.

Fuentes

Preguntas frecuentes

¿Decodificar un JWT también verifica su firma?

No. Decodificar solo convierte el header y el payload, codificados en Base64URL, en texto legible. Para comprobar si la firma es auténtica hace falta la clave secreta (o pública) del emisor, y esta herramienta no tiene función de verificación: nunca acepta una clave secreta.

Veo un token con alg en "none" en el header. ¿Es peligroso?

Sí, muy peligroso. Con alg en none, cualquiera puede crear un token con el contenido que quiera y sin ninguna firma. Si un servidor confía ciegamente en un token así, la autenticación puede saltarse por completo. Comprueba que tu servidor rechace explícitamente el algoritmo none.

Si pego un token caducado (exp en el pasado), ¿esta herramienta lo bloquea?

No. Esta herramienta solo muestra si un token ha caducado; no lo bloquea ni lo invalida. Rechazar tokens caducados es algo que debe hacer el servidor que usa el token durante su propia verificación.

¿Es seguro compartir un token decodificado con otra persona?

No se recomienda. El payload de un JWT no está cifrado, solo codificado en Base64URL, así que cualquiera puede leerlo con o sin esta herramienta. Si contiene datos personales como un correo electrónico o un ID de usuario, o detalles de permisos internos, compartir el token significa compartir también esa información.