Codificador JWT

Crea y firma JWT con HS256, HS384 o HS512 en tu navegador. Edita el JSON del header y del payload; se conservan el orden de claims y campos como kid.

Tus datos de entrada y archivos no salen del navegador

Encabezado, carga útil y firma

Firma

Corrija el JSON del encabezado y de la carga útil: el token firmado aparecerá aquí mientras escribe.

En esta página

Genera un JSON Web Token firmado para probar APIs y flujos de autenticación: edita el JSON del header y del payload, elige HS256, HS384 o HS512, escribe un secreto y copia el token, que se actualiza con cada pulsación.

Funcionalidad detallada

El header y el payload deben ser objetos JSON; un JSON inválido o algo que no sea un objeto, como un array, se señala bajo su campo y no se genera token. El JSON se compacta (sin espacios) y se codifica en base64url sin relleno, conservando el orden de tus claims y los campos extra del header como kid o cty. El valor alg del header se sustituye por el algoritmo elegido en la lista o, si falta, se añade en primer lugar.

La firma HMAC (SHA-256, SHA-384 o SHA-512) la calcula un módulo criptográfico de Rust compilado a WebAssembly; el secreto se usa como texto UTF-8. Solo hay algoritmos HMAC simétricos: aquí no se pueden crear tokens RS256 o ES256, que requieren una clave privada. Un secreto vacío también genera un token, firmado con una clave vacía, que solo sirve para experimentar.

El secreto y los claims se quedan en la página y no se guardan. La herramienta no añade iat ni exp por su cuenta: escribe tú los valores NumericDate (tiempo Unix en segundos) en el payload.

Ejemplos prácticos

Vector de prueba de jwt.io: el header por defecto {"alg":"HS256","typ":"JWT"} y el payload {"sub":"1234567890","name":"John Doe","iat":1516239022} con el secreto your-256-bit-secret dan un token que termina en SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, igual que en jwt.io.

ID de clave y caducidad: header {"alg":"HS256","typ":"JWT","kid":"key-2026"}, payload {"sub":"42","role":"admin","exp":1767225600} y algoritmo HS384: el header codificado pasa a ser {"alg":"HS384","typ":"JWT","kid":"key-2026"} con el orden de campos intacto, y la firma tiene 64 caracteres.

No es un objeto: un payload [1,2] muestra «Debe ser un objeto JSON» bajo el campo y el token se borra.

Cómo usar esta herramienta

  1. Edita el header

    Ajusta el JSON en Encabezado; añade kid si tu verificador lo necesita; alg se toma de la lista de algoritmos.

  2. Escribe los claims

    Pon tus claims (sub, role, exp …) en Carga útil como objeto JSON.

  3. Elige algoritmo y secreto

    Selecciona HS256, HS384 o HS512 en Algoritmo y escribe el secreto compartido en Clave secreta.

  4. Copia el token

    El token de Token codificado se actualiza con cada cambio; pulsa Copiar token para copiarlo.

Consejos y mejores prácticas

  • Usa un secreto aleatorio al menos tan largo como el hash: 32 bytes para HS256, 48 para HS384, 64 para HS512.
  • exp, nbf e iat van en segundos, no en milisegundos: 1767225600, no 1767225600000.
  • Cuenta cada carácter del secreto, incluido un espacio o salto de línea al final.
  • El payload solo está codificado en base64url, no cifrado: cualquiera con el token puede leerlo.
  • Comprueba el resultado en el decodificador JWT con el mismo secreto.