Qué hace esta herramienta
Este codificador de JWT firma un JSON Web Token en tu navegador. Eliges el algoritmo, editas el header y el payload como JSON, pegas la clave de firma y obtienes un token compacto JWS (header.payload.firma) listo para enviar a una API.
Los algoritmos cubiertos son los mismos que el decodificador: HS256/384/512 (HMAC con secreto compartido), RS256/384/512 (RSA-PKCS#1 v1.5), PS256/384/512 (RSA-PSS), ES256/384/512 (ECDSA sobre P-256/P-384/P-521) y EdDSA (Ed25519). Las claves privadas se aceptan como JWK con d, PKCS#8 PEM (BEGIN PRIVATE KEY), PEM PKCS#1 RSA (BEGIN RSA PRIVATE KEY) o — para Ed25519 — 64 hex / 43 base64url.
Cuándo la usarías
- Generar un token de prueba para llamar a tu propia API en local.
- Reproducir un escenario de cliente sin levantar todo tu emisor de auth.
- Crear tokens de ejemplo para tests de integración o documentación.
- Validar que tu verificador rechaza correctamente un token con
expen el pasado o unalginesperado.
Cómo funciona
La firma se produce íntegramente con crypto.subtle.sign (HS, RS, PS, ES) o @noble/ed25519 (EdDSA). El header se serializa como JSON canónico con alg y typ, el payload como JSON normal, ambos se codifican en base64url y se concatenan con un punto. Ese mensaje canónico se firma; la firma se anexa también en base64url.
Los campos del payload con valores temporales (iat, nbf, exp) se introducen como segundos Unix, con accesos rápidos para "ahora", "+1h", "+24h" y "+7d". Cualquier claim personalizado se añade como pares clave/valor; si pegas JSON crudo en el campo Payload, ese contenido manda y los campos estructurados se ignoran.
Nada de esto va a un servidor. La clave privada que pegues se queda en memoria de la pestaña hasta que cierres o limpies. No hay logging.
Notas
¿Es seguro pegar mi clave privada aquí? Es tan seguro como cualquier otra cosa que ejecutes en tu navegador. La clave nunca sale de la pestaña. Si te incomoda, usa solo claves de desarrollo desechables — buena práctica en general.
¿Por qué alg: none muestra una advertencia? Porque produce un token sin firma, cuyo payload puede modificar cualquiera. Lo permitimos para reproducir bugs concretos, pero la advertencia es deliberada.
¿Y RS256 vs PS256? RS256 usa relleno PKCS#1 v1.5 (heredado, ampliamente compatible). PS256 usa PSS con hashing aleatorio (recomendación moderna NIST). Salvo que tu verificador sea antiguo, PS256 es la mejor opción.
¿Soporta JWE? No. Esta herramienta solo emite JWS. JWE (tokens cifrados) tiene un perfil de uso muy distinto y no encaja con el resto de la suite.
Herramientas relacionadas
- Decodificador JWT — verifica el token que acabas de firmar
- Generador UUID — para rellenar el claim
jti - Conversor de timestamp — para ver
iat/expen formato legible