Skip to content

Codificador y Generador JWT

Generador y codificador JWT gratis online. Construye el encabezado y la carga útil, firma con HS256, RS256 o ES256 al instante. 100% en el navegador — tu secreto y tu clave nunca salen de tu dispositivo.

Sin rastreo Se ejecuta en el navegador Gratis
Carga útil (Reclamaciones)
Insertar una reclamación registrada:
Secreto
Firmado localmente en tu navegador — tu secreto y clave privada nunca salen de tu dispositivo.
Sigue el comportamiento de firma de RFC 7515/7518 con la salida verificada de forma cruzada contra un verificador de clave pública independiente — Equipo de Seguridad de Go Tools · Jun 11, 2026

¿Qué es un Codificador JWT?

Un codificador JWT construye y firma criptográficamente un JSON Web Token a partir de un encabezado y una carga útil de reclamaciones. Un JWT, definido en RFC 7519, son tres secciones codificadas en Base64URL unidas por puntos: header.payload.signature. El encabezado nombra el algoritmo de firma; la carga útil transporta las reclamaciones (sobre quién es el token, qué puede hacer, cuándo expira); y la firma es una prueba criptográfica, calculada sobre el encabezado y la carga útil con un secreto o clave privada, que permite a un destinatario detectar manipulaciones.

«JSON Web Token (JWT) es un formato compacto de representación de reclamaciones destinado a entornos con limitaciones de espacio, como los encabezados HTTP Authorization y los parámetros de consulta URI.» — RFC 7519, Sección 1

Codificar es lo inverso de decodificar. Un decodificador JWT lee las reclamaciones de un token existente; un codificador toma las reclamaciones que proporcionas y produce un token firmado completamente nuevo. El paso de firma es lo que separa un JWT real de un Base64 arbitrario — sin una firma válida, ningún verificador aceptará el token. Esta herramienta firma usando la Web Crypto API nativa del navegador a través de las familias HMAC (HS), RSA (RS, PS) y ECDSA (ES), así que toda la operación ocurre en tu dispositivo con cero dependencias y cero llamadas de red.

Los desarrolladores recurren a un codificador JWT constantemente: para acuñar un token que ejercite un endpoint de API protegido, para reproducir la forma exacta de reclamación que emite un servidor OAuth y así depurar un error, para construir fixtures para pruebas de integración, o para entregar a un compañero un token Bearer listo para usar en un comando curl. Como la carga útil está codificada, no cifrada, un JWT es seguro de pasar por la red pero nunca debe transportar secretos — cualquiera con el token puede leer cada reclamación, y solo la firma impide que la cambien.

El trabajo con JWT se combina de forma natural con otras herramientas para desarrolladores. Después de firmar, decodifica el token para confirmar sus reclamaciones, convierte exp e iat entre tiempo Unix y fechas humanas, o calcula un hash SHA-256 cuando necesites la función hash subyacente sobre la que se construye el HMAC de HS256. Como cada segmento JWT está codificado en Base64URL, una herramienta Base64 es útil cuando inspeccionas un token a mano; para una mirada en profundidad a la codificación, consulta nuestra guía de fundamentos de Base64.

// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
  const b64url = (bytes) =>
    btoa(String.fromCharCode(...new Uint8Array(bytes)))
      .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
  const enc = (obj) =>
    b64url(new TextEncoder().encode(JSON.stringify(obj)));

  const header = { alg: 'HS256', typ: 'JWT' };
  const signingInput = `${enc(header)}.${enc(payload)}`;

  const key = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(secret),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
  const sig = await crypto.subtle.sign(
    'HMAC', key, new TextEncoder().encode(signingInput));

  return `${signingInput}.${b64url(sig)}`;
}

const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0....

Características Clave

Genera y Firma JWT al Instante

Edita la carga útil y observa cómo el token firmado se actualiza en tiempo real — encabezado, carga útil y firma calculados al vuelo. Sin botón de Generar, sin viaje de ida y vuelta a un servidor.

Cobertura Completa de Algoritmos

Firma con HS256/384/512, RS256/384/512, PS256/384/512 y ES256/384/512 — toda familia JWS común, todas mediante la Web Crypto API nativa del navegador.

Las Claves Nunca Salen de tu Dispositivo

Tu secreto y clave privada PKCS8 se usan completamente en el navegador. Nada se sube, registra ni almacena — seguro para desarrollo y respuesta a incidentes.

Ayudantes de Reclamación Rápida

Inserta iss, sub, aud, iat, nbf o una exp de una hora con un solo clic — sin marcas de tiempo Unix manuales, sin deslices de sintaxis.

Salida Codificada por Color

El token firmado se segmenta en encabezado, carga útil y firma con colores distintos, así la estructura es obvia de un vistazo y fácil de copiar.

Cero Dependencias

Construido solo sobre la Web Crypto API y JSON del navegador — sin bibliotecas externas, sin telemetría, sin llamadas de red de ningún tipo.

Ejemplos

Token de Sesión HS256

{
  "sub": "user_123",
  "name": "Alice",
  "role": "admin",
  "iat": 1715000000,
  "exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>

Un token HMAC-SHA256 firmado con un secreto compartido — la configuración más común para la autenticación de sesión sin estado. Cualquiera que tenga el mismo secreto puede verificarlo.

Token de Acceso RS256

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "90087165",
  "scope": "read:user write:post",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8)
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>

Un token de acceso estilo OAuth firmado con RSA. El token se firma con tu clave privada y lo verifica cualquiera que tenga la clave pública correspondiente — ideal cuando el verificador no debe poder acuñar tokens.

Token Compacto ES256

{
  "sub": "device-42",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>

Un token ECDSA sobre la curva P-256. Las firmas ES256 son mucho más cortas que las RSA ofreciendo seguridad equivalente, lo que mantiene el token pequeño para entornos con limitaciones.

Cómo Usar

  1. 1

    Edita las Reclamaciones de la Carga Útil

    Escribe las reclamaciones que tu token necesita como JSON en el editor de carga útil. Usa los chips de reclamación rápida para insertar iss, sub, aud, iat, nbf o una exp de una hora sin escribir marcas de tiempo.

  2. 2

    Elige el Algoritmo e Introduce la Clave

    Elige un algoritmo de firma. Para HS256/384/512 introduce un secreto; para los algoritmos RS, PS o ES pega una clave privada PKCS8 PEM. El token se firma localmente mientras escribes.

  3. 3

    Copia el JWT Firmado

    El token firmado aparece al instante, codificado por color por segmento. Haz clic en Copiar para llevarlo a un encabezado Authorization, un comando curl o una prueba. Tu clave nunca salió de tu navegador.

Common Errors

Usar un Secreto HMAC Débil

La seguridad de HS256 depende enteramente de la entropía del secreto. Un secreto corto o adivinable permite a los atacantes forzarlo por fuerza bruta y falsificar tokens. Usa al menos 256 bits de aleatoriedad.

✗ Incorrecto
secret: "password123"  // guessable, low entropy
✓ Correcto
secret: base64(crypto.randomBytes(32))  // >=256 random bits

Omitir la Reclamación exp

Un token sin exp nunca expira. Si se filtra, no hay un punto de revocación natural. Establece siempre una expiración apropiada para el tipo de token.

✗ Incorrecto
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Correcto
{ "sub": "user_123", "role": "admin", "exp": 1715003600 }

Pegar una Clave PKCS1 en Lugar de PKCS8

La Web Crypto API importa solo claves privadas PKCS8. Una clave RSA PKCS1 tradicional falla al importarse — conviértela primero.

✗ Incorrecto
-----BEGIN RSA PRIVATE KEY-----  // PKCS1, not supported
✓ Correcto
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem

Casos de Uso Comunes

Genera Tokens para Pruebas de API
Genera un token Bearer HS256 en segundos para ejercitar un endpoint protegido desde curl, Postman o una prueba de integración.
Reproduce Tokens OAuth y OIDC
Construye un token RS256 o ES256 que refleje lo que emite tu servidor de autorización, para depurar desajustes de reclamación y audiencia.
Crea Fixtures de Prueba
Produce tokens firmados deterministas para pruebas unitarias y de integración sin levantar un servidor de autenticación completo.
Depura Fallos de Autorización
Recrea la forma del token de un cliente — emisor, audiencia, scope, expiración — para encontrar por qué un backend lo rechaza.
Valida un Verificador
Firma tokens con una clave conocida para confirmar que tu middleware de verificación acepta tokens válidos y rechaza los manipulados.
Prototipa Flujos de Autenticación
Entrega a tus compañeros tokens listos para usar mientras configuráis un nuevo login, microservicio o llamada de servicio a servicio.

Detalles Técnicos

Conforme con RFC 7519 / 7515 / 7518
Produce tokens JWS conformes a RFC 7519 (JWT), RFC 7515 (JWS) y RFC 7518 (JWA), con los identificadores de algoritmo registrados en el encabezado.
Firma Nativa con Web Crypto
Firma mediante crypto.subtle para HMAC, RSASSA-PKCS1-v1_5, RSA-PSS y ECDSA. Las firmas ECDSA se emiten como r||s en bruto, exactamente como exige JWS.
Base64URL, Cero Dependencias
El encabezado y la carga útil se codifican en Base64URL con el alfabeto seguro para URL (RFC 4648), sin relleno. Sin bibliotecas externas, sin llamadas de red, sin telemetría.

Mejores Prácticas

Establece Siempre una Expiración
Incluye una reclamación exp para que un token filtrado deje de ser válido. Las vidas cortas reducen el radio de impacto — minutos para tokens de acceso, no días.
Mantén los Secretos Fuera de la Carga Útil
Una carga útil JWT es legible por cualquiera con el token. Pon identificadores y scopes en ella; nunca contraseñas, claves API o PII completa.
Firma del Lado del Servidor en Producción
Usa esta herramienta para pruebas y depuración. En sistemas reales, firma tokens en el servidor con una biblioteca mantenida y una clave de tu gestor de secretos.

Preguntas Frecuentes

¿Cómo genero un JWT online?
Edita el JSON de la carga útil en el cuadro de arriba, elige un algoritmo de firma (HS256 es el predeterminado y solo necesita un secreto) e introduce tu secreto o pega una clave privada PKCS8 PEM. El token firmado aparece al instante, con los segmentos de encabezado, carga útil y firma codificados por color para que puedas copiarlo todo con un clic. La firma se ejecuta completamente en tu navegador usando la Web Crypto API nativa — no hay botón de Generar que esperar ni petición a un servidor, por lo que es seguro firmar tokens con claves reales durante el desarrollo.
¿Qué es un generador JWT?
Un generador JWT es una herramienta que construye y firma criptográficamente un JSON Web Token a partir de un encabezado y una carga útil de reclamaciones, produciendo una cadena header.payload.signature que puedes usar como token Bearer. Es lo inverso de un decodificador JWT: en lugar de leer un token existente, crea uno nuevo firmado con tu secreto (HS256) o clave privada (RS256/ES256). Este generador se ejecuta completamente en tu navegador, así que el token se produce al instante y tu clave de firma nunca sale de tu dispositivo.
¿Es este generador JWT gratis y seguro de usar?
Sí — es completamente gratis, sin registro, sin anuncios y sin rastreo. Es seguro porque toda la firma ocurre localmente en tu navegador mediante la Web Crypto API: tu carga útil, secreto y clave privada nunca se suben, registran ni almacenan, y la herramienta no hace ninguna petición de red en absoluto. Eso lo hace adecuado incluso cuando trabajas con claves sensibles, aunque usar claves de prueba desechables siempre es el hábito más seguro.
¿Es seguro introducir mi secreto o clave privada aquí?
Sí. La firma ocurre localmente en tu navegador; tu secreto y clave privada nunca se envían a un servidor, nunca se registran, nunca se almacenan y nunca se usan para analítica. No hay cookies ni rastreo. Esto importa porque una clave de firma JWT puede acuñar credenciales válidas — pegarla en una herramienta remota equivaldría a entregar las llaves de tu sistema de autenticación. Como todo se ejecuta del lado del cliente, este codificador es seguro de usar con claves de producción, pero aun así deberías preferir claves desechables o de prueba siempre que sea posible.
¿Cuál es la diferencia entre HS256 y RS256?
HS256 (HMAC-SHA256) usa un único secreto compartido tanto para firmar como para verificar. Es simple y rápido, pero toda parte que pueda verificar el token también puede crearlo, así que el secreto debe permanecer solo en servidores de confianza. RS256 (RSA-SHA256) usa un par de claves: firmas con una clave privada y otros verifican con la clave pública. Esto te permite distribuir libremente la clave pública — a aplicaciones cliente, servicios asociados o un endpoint JWKS — sin dar a nadie la capacidad de falsificar tokens. Usa HS256 para sistemas simétricos de un solo propietario; usa RS256 o ES256 cuando los verificadores no deban poder acuñar tokens.
¿Qué algoritmos soporta este codificador JWT?
Firma con HS256, HS384, HS512 (HMAC con un secreto compartido), RS256, RS384, RS512 (RSA PKCS#1 v1.5), PS256, PS384, PS512 (RSA-PSS) y ES256, ES384, ES512 (ECDSA sobre P-256, P-384 y P-521). Todos se producen con la Web Crypto API nativa del navegador, así que no hay bibliotecas de terceros y nada sale de tu máquina. Los algoritmos HMAC toman un secreto en texto o Base64; las familias RSA y ECDSA toman una clave privada PKCS8 PEM.
¿Cómo establezco la reclamación exp (expiración)?
Añade una reclamación exp a la carga útil como una marca de tiempo Unix en segundos — por ejemplo "exp": 1999999999. La forma más rápida es el chip exp +1h debajo de la carga útil, que inserta una expiración una hora desde ahora. También puedes añadir iat (emitido en) y nbf (no antes de) de la misma forma. Recuerda que exp está en segundos, no en milisegundos, y que los verificadores lo comparan con su propio reloj, así que mantén las horas del servidor sincronizadas para evitar rechazos prematuros. Para convertir una fecha humana a una marca de tiempo Unix, usa nuestro convertidor de timestamp Unix.
¿Cómo obtengo una clave privada PKCS8 PEM para RS256 o ES256?
Para RSA: openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Para ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Ambos comandos emiten un bloque PKCS8 PEM que comienza con -----BEGIN PRIVATE KEY-----, que es exactamente lo que esta herramienta espera. Pega el bloque completo, incluyendo las líneas de encabezado y pie. La clave pública correspondiente — usada para verificar el token — se puede derivar con openssl pkey -in private.pem -pubout.
¿Cómo verifico el token que acabo de generar?
Pégalo en nuestro decodificador JWT para confirmar que el encabezado y la carga útil se decodifican como esperas. Para verificar la firma, usa tu servidor o un SDK con la clave correcta: jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) en Node.js, PyJWT.decode(token, key, algorithms=['RS256']) en Python, o jwt.Parse(token, keyFunc) en Go. Nunca verifiques con una lista de algoritmos vacía ni con verify_signature=False en producción — fija siempre el algoritmo exacto que esperas.
¿Qué debería poner en la carga útil?
Mantenla ligera. Las reclamaciones registradas de RFC 7519 son iss (emisor), sub (sujeto — normalmente un ID de usuario), aud (audiencia), exp (expiración), nbf (no antes de), iat (emitido en) y jti (ID de token). Junto a estas puedes añadir reclamaciones de aplicación como role, scope o email. No pongas secretos en la carga útil — un JWT está codificado, no cifrado, así que cualquiera con el token puede leer cada reclamación. Mantén los tokens por debajo de unos 4 KB para que quepan en encabezados Authorization y cookies.
¿Está cifrado un JWT?
No. Un JWT firmado estándar (un JWS) está codificado en Base64URL, no cifrado. La firma demuestra que el token no ha sido manipulado y que fue emitido por alguien que tiene la clave, pero el encabezado y la carga útil son totalmente legibles para cualquiera que tenga el token. Si necesitas que la propia carga útil sea confidencial, necesitas un JWE (JWT cifrado), que es un formato diferente. Esta herramienta produce tokens JWS firmados, el tipo usado para la gran mayoría de flujos de autenticación y autorización.
¿Por qué falla mi firma RS256 o ES256?
Las causas más comunes son: (1) la clave no está en formato PKCS8 — convierte una clave tradicional -----BEGIN RSA PRIVATE KEY----- (PKCS1) con openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) la curva no coincide con el algoritmo — ES256 necesita una clave P-256, ES384 necesita P-384, ES512 necesita P-521; (3) pegaste una clave pública o un certificado en lugar de la clave privada; o (4) la clave está cifrada con una frase de contraseña, que la Web Crypto API no puede importar directamente. Descífrala primero con openssl pkey y pega el bloque PKCS8 sin cifrar.
¿Esta herramienta soporta el token sin firmar alg:none?
No, y deliberadamente. Un token alg:none no tiene firma, lo que significa que cualquiera puede falsificar uno — es la raíz de una clásica vulnerabilidad de bypass de autenticación JWT. Como el propósito mismo de un codificador es producir un token firmado, esta herramienta solo ofrece algoritmos de firma reales. Si estás estudiando alg:none para investigación de seguridad, puedes construir uno a mano codificando en Base64URL el encabezado y la carga útil y dejando vacío el segmento de firma — el token aún termina con un punto final (header.payload.) — pero nunca deberías aceptar tal token en producción.
¿Puedo generar un JWT en código en su lugar?
Sí. En Node.js: jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). En Python: jwt.encode(payload, key, algorithm='RS256') con PyJWT. En Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Esta herramienta es la forma más rápida de producir un token para una prueba rápida, una petición curl o un fixture — pero en código de aplicación deberías generar tokens del lado del servidor con una biblioteca mantenida y una clave cargada desde tu gestor de secretos, nunca codificada de forma fija.

Herramientas relacionadas

Ver todas las herramientas →

Decodificador JWT

Herramientas de Seguridad

Decodifica tokens JWT online con nuestro decodificador JWT gratis. Inspecciona encabezado, carga útil, firma, expiración y reclamaciones al instante. 100% navegador — tu token nunca sale del dispositivo. Sin registro ni rastreo.

Generador de Hash MD5 Online y Verificador de Checksum

Herramientas de Seguridad

Genera hashes MD5, SHA-256, SHA-1 y SHA-512 gratis — 100% en tu navegador, sin registro. Hashea texto o archivos, verifica checksums y compara hashes con un clic. Tus datos permanecen privados.

Generador de Contraseñas Aleatorias y Seguras

Herramientas de Seguridad

Genera contraseñas seguras al instante — gratis, sin registro, 100% en tu navegador. Personaliza la longitud y los tipos de caracteres, genera hasta 50 contraseñas. Medidor de fortaleza con análisis de entropía.

Generador de Hash SHA-1 (Legado de 160 bits)

Herramientas de Seguridad

Genera hashes SHA-1 en tu navegador — salida hex de 40 caracteres, sin subidas. Herramienta para huellas Git, comprobación de certificados antiguos y auditorías de migración. Datos nunca salen de tu dispositivo.

Generador de Hash SHA-256 y Verificador de Checksum

Herramientas de Seguridad

Genera hashes SHA-256 online gratis. Hashea texto o archivos en tu navegador, verifica checksums y copia la salida hex de 64 caracteres. Sin registro; los datos nunca salen de la página.

Generador de Hash SHA-3 (Keccak SHA3-256)

Herramientas de Seguridad

Genera hashes SHA-3 online gratis. Construcción de esponja NIST FIPS 202 — el estándar posterior a SHA-2. Salida SHA3-256 en 64 caracteres hex. Solo en navegador vía js-sha3; sin subidas.