Codificador / decodificador JWT
Pega un token para leer su cabecera y su payload, o firma uno con tus propios claims — sin botones, sin subidas.
Opcional al decodificar (rellénalo para verificar), obligatorio para firmar.
Firma:
Token
Cabecera
Payload
Cómo se usa
- Pega un token: la cabecera y el payload aparecen al instante, sin pulsar ningún botón. Todo lo que venga del token se muestra tal y como se firmó — la entrada nunca se reescribe.
- Añade el secreto bajo la entrada para comprobar la firma. Dejarlo vacío significa simplemente «sin verificar»: puedes leer los claims igualmente.
- Cambia a Codificar, escribe tus claims como JSON, elige HS256/384/512 y un secreto, y copia el token resultante. Cambiar de modo nunca borra lo que has escrito.
- Los claims estándar exp / iat / nbf se muestran en tu idioma y zona horaria, con marcas de caducado y aún no válido.
Ejemplo
Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiSmFuZSBDb29wZXIiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jCqliF6m-TAglXcHrjuXj7kYIjjsRO7kv6_8O1yb_7Q
Cabecera y payload
Cabecera
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"sub": "u-1024",
"name": "Jane Cooper",
"role": "editor",
"iss": "https://api.example.com",
"iat": 1767225600,
"exp": 1798761600
}Firmado con el secreto «dev-secret-change-me»; escríbelo en Secreto y la línea de estado cambiará a «Firma verificada». Cambia a Codificar y pulsa Ejemplo para obtener el mismo payload: con el mismo secreto reconstruye este token exacto, carácter a carácter.
Reglas, límites y problemas conocidos
- Solo se admiten HS256, HS384 y HS512, tanto para firmar como para verificar. Los tokens RS*, ES* y PS* se decodifican y se muestran tal cual, pero su firma nunca se comprueba — eso requiere una clave pública, así que la línea de estado lo indica en lugar de adivinar.
- Los tokens sin firmar (alg: none) se decodifican y se marcan claramente, pero nunca se generan: pedir una firma sin secreto da un error en lugar de un token sin firmar.
- La codificación construye la cabecera por sí misma (`{"alg": … ,"typ": "JWT"}`). Campos de cabecera como kid, jku, x5c o cty no se conservan — esta herramienta firma claims, no cadenas de certificados.
- Tu JSON de claims se vuelve a serializar de forma compacta antes de firmar, así que la indentación y los comentarios no llegan al token. El orden de las claves sigue el de los objetos de JavaScript: las claves repetidas se colapsan en la última y las que parecen números pasan al principio.
- Los enteros muy grandes pierden precisión — `12345678901234567890` vuelve redondeado, porque eso es lo que hacen los números de JavaScript. Nada se corrige en silencio; usa cadenas cuando los dígitos exactos importen.
- Los claims se muestran indentados para leerlos, mientras que la firma cubre los segmentos en bruto tal y como aparecen en el token. Nada se recodifica a tus espaldas, así que un token que se verifica aquí también se verifica en tu propio código.
- Base64url es estricto: `+`, `/` y `=` se notifican como errores en lugar de aceptarse en silencio, y los bytes que no son UTF-8 se notifican en vez de sustituirse por caracteres de reemplazo. Los espacios dentro de un token pegado se ignoran, ya que los tokens nunca los contienen.
- Los JWE cifrados (cinco partes) no se descifran — se te indica que eso es lo que has pegado.
- Límite de tamaño: 10.000 caracteres. No se sube, guarda, escribe en la URL ni comparte nada: el botón de compartir solo comparte la dirección de esta página, nunca tu token ni tu secreto.
Herramientas relacionadas
Una vez leídos los claims, estos suelen ser los siguientes pasos.