Cómo generar un JWT
Pega tu entrada en la caja usando esta convención de marcadores, una sección por línea === NOMBRE ===,
seguida de su propio contenido:
=== HEADER ===
{"alg":"HS256","typ":"JWT"}
=== PAYLOAD ===
{"sub":"1234567890","name":"John Doe"}
=== SECRET ===
your-256-bit-secret
=== HEADER ===es opcional, omítela por completo y se genera automáticamente un header mínimo{"alg": "...", "typ": "JWT"}a partir del algoritmo que elijas abajo.=== PAYLOAD ===es obligatoria, cualquier objeto JSON válido, con los claims que quieras.=== SECRET ===es obligatoria, el secreto compartido usado para firmar el token.=== SUBJECT ===es una sección de conveniencia opcional, si está presente, su valor sobrescribe el claimsubdel payload, así no tienes que editar a mano el JSON solo para fijar para quién es el token.
El analizador tolera espacios alrededor de los marcadores y descarta cualquier cosa que escribas por encima del primero. Si el mismo marcador aparece dos veces, gana la sección posterior sin más: el analizador arranca un búfer nuevo cada vez que ve un marcador, así que el contenido anterior se descarta en lugar de concatenarse.
Firmar un token desde cero son seis pasos:
- Pega tus secciones en la caja usando las líneas de marcador de arriba.
- Elige un algoritmo de firma. HS256 (recomendado) es el valor por defecto y el que espera casi cualquier backend; HS384 y HS512 solo cambian el tamaño del resumen.
- Opcionalmente elige una duración en Añadir “exp” automáticamente (caduca en). Empieza en No añadir automáticamente, así que no se inventa ninguna caducidad salvo que la pidas.
- Deja marcado Añadir “iat” automáticamente (emitido ahora) para estampar la hora actual en el payload, o desmárcalo si quieres que el payload quede exactamente como lo escribiste.
- Pulsa el botón de generar. Toma su etiqueta del título de la página, igual que todas las herramientas de pegar y leer de este sitio.
- Copia el resultado. La salida lleva primero el token completo, y después el JSON de header y payload que realmente se firmó, en un bloque etiquetado listo para copiar.
Qué es realmente un JWT
Un JSON Web Token son tres segmentos Base64URL pegados con puntos,
header.payload.signature, donde la firma es un HMAC (para HS256/HS384/HS512) calculado sobre
la cadena literal base64url(header) + "." + base64url(payload), con clave un secreto compartido. Esta
herramienta construye y firma exactamente esa estructura: codifica en JSON tu header y payload, codifica cada
segmento en Base64URL, calcula el digest HMAC-SHA256/384/512 del resultado unido a través de la propia
Web Crypto API nativa del navegador, codifica el digest en Base64URL, y une los tres segmentos con puntos en
el token final.
Por qué generar un JWT de prueba
Recurrir a un backend real solo para conseguir un token firmado que pegar en una cabecera
Authorization: Bearer, una petición de Postman/Insomnia, o un arnés de pruebas de webhook suele ser más
configuración de la que la tarea real necesita. Razones habituales para generar uno a mano:
- Probar la autenticación JWT del endpoint de una API sin levantar un servidor de autenticación real.
- Reproducir un caso límite específico, un token ya caducado, un token al que le falta un claim esperado, un token firmado con el algoritmo equivocado, para verificar que tu backend lo rechaza correctamente.
- Entender exactamente cómo es un JWT firmado y cómo se relacionan sus tres segmentos, construyendo uno tú mismo en lugar de solo consumir tokens emitidos por el sistema de otra persona.
- Generar rápidamente un token de corta duración durante desarrollo local contra un servicio que ya conoce tu secreto de prueba.
Corrección de la firma, verificada contra vectores de referencia reales
Un alfabeto Base64URL sutilmente incorrecto, un recorte de relleno olvidado, o una codificación de bytes
equivocada del secreto producirían un token que parece plausible pero falla en cualquier verificador real. En lugar de
confiar en la implementación solo por inspección, el pipeline exacto de firma de esta herramienta se comprobó contra el
famoso token de ejemplo de jwt.io, comprobable de forma independiente (y más vectores de HS384/HS512/UTF-8
calculados con el propio crypto.createHmac de Node.js), ve la FAQ de abajo para el ejemplo completo resuelto.
Privado, porque tu clave secreta no debería salir de tu dispositivo
Un secreto de firma de JWT es una credencial real, cualquiera que lo tenga puede falsificar tokens en los que tu backend confiará. Esta herramienta calcula toda la firma usando la propia Web Crypto API del navegador, enteramente dentro de tu pestaña; el secreto nunca se transmite, registra ni almacena, y la pantalla de resultado ni siquiera lo repite entero (solo su longitud en bytes), así que no puede quedar en pantalla más tiempo del necesario.
Usos habituales
- Generar un token de prueba firmado para pegar en una cabecera
Authorization: Bearer <token>mientras pruebas una API localmente. - Reproducir una combinación de claims específica (un token caducado, un rol ausente, un subject equivocado) para verificar que la lógica de validación de tu backend realmente lo rechaza.
- Construir un token de corta duración con la ayuda Añadir “exp” automáticamente sin calcular a mano un timestamp Unix.
- Combinarlo con el Decodificador de JWT, decodifica el header/payload de un token existente, edita los claims, y luego vuelve a firmar un token nuevo aquí usando exactamente el mismo formato de marcadores de sección.
- Recalcular de forma independiente la firma de un token generado con el Generador de HMAC
sobre su propio segmento
header.payload, para comprobar tú mismo las cuentas. - Codificar una cadena en bruto en el mismo alfabeto Base64URL a mano con Codificar Base64 cuando solo necesitas un segmento, no un token completo.

