Decodificador JWT
Pega un JSON Web Token para ver su cabecera, su payload y sus claims explicados con claridad, con fechas legibles y una cuenta regresiva de caducidad en vivo. Si quieres, verifica la firma con un secreto o una clave pública. Todo se queda en tu navegador.
Última actualización:
Cabecera
Payload
Claims
| Claim | Valor | Significado |
|---|
Verificar la firma opcional
Cómo usar Decodificador JWT
- Pega tu JWT en el cuadro. El prefijo
Bearerinicial se elimina automáticamente. - Lee las partes decodificadas: la cabecera muestra el algoritmo y el payload muestra cada claim como JSON formateado.
- Revisa la tabla de claims para ver las fechas de emisión, de inicio de validez y de caducidad en formato legible, y la cuenta regresiva en vivo.
- Verifica la firma (opcional): escribe el secreto compartido para HS256/384/512 o pega la clave pública para tokens RS, PS, ES o EdDSA, y pulsa Verificar firma.
- Copia el JSON de la cabecera o del payload con un clic.
Anatomía de un JSON Web Token
Un JWT firmado (un JWS en forma compacta) son tres cadenas base64url unidas por puntos: header.payload.signature. Base64url es base64 normal con - y _ en lugar de + y / y sin relleno =, lo que hace que el token sea seguro para URL y cabeceras HTTP.
| Parte | Contiene | Ejemplo (decodificado) |
|---|---|---|
| Cabecera | El algoritmo de firma (alg), el tipo de token (typ) y a veces un ID de clave (kid) | {"alg":"HS256","typ":"JWT"} |
| Payload | Los claims: de quién trata el token, quién lo emitió, para quién y cuándo es válido | {"sub":"42","exp":1767225600} |
| Firma | El algoritmo aplicado a base64url(header) + "." + base64url(payload) con un secreto o una clave privada | Bytes sin procesar, codificados en base64url |
Como la cabecera y el payload solo están codificados, nunca pongas contraseñas ni otros secretos en el payload de un JWT, salvo que el token también esté cifrado (JWE).
Claims registrados y valores de tiempo
El RFC 7519 define siete nombres de claims registrados. Los claims de tiempo son valores NumericDate: segundos enteros desde el 1 de enero de 1970 UTC, no milisegundos. Por ejemplo, exp: 1767225600 es el 1 de enero de 2026 a las 00:00:00 UTC.
| Claim | Nombre | Qué comprueban los servidores |
|---|---|---|
| iss | Emisor (issuer) | Coincide con el proveedor de identidad esperado |
| sub | Sujeto (subject) | El usuario o cliente al que representa el token |
| aud | Audiencia (audience) | Contiene el identificador de esta API; si no, se rechaza |
| exp | Hora de caducidad | La hora actual es anterior a exp (a menudo con un pequeño margen por desfase de reloj) |
| nbf | No antes de (not before) | La hora actual es igual o posterior a nbf |
| iat | Emitido en (issued at) | Se usa para calcular la antigüedad del token |
| jti | ID del JWT | ID único; se puede guardar para bloquear reutilizaciones |
Comparación de algoritmos de firma
| alg | Tipo | Clave necesaria para verificar | Uso típico |
|---|---|---|---|
| HS256 / HS384 / HS512 | HMAC con SHA-2 | El mismo secreto compartido usado para firmar | Un servicio que emite y comprueba los tokens |
| RS256 / RS384 / RS512 | RSA PKCS#1 v1.5 | Clave pública RSA | Proveedores de OAuth y OpenID Connect |
| PS256 / PS384 / PS512 | RSA-PSS | Clave pública RSA | Implementaciones RSA modernas |
| ES256 / ES384 / ES512 | ECDSA sobre P-256 / P-384 / P-521 | Clave pública EC | Firmas cortas, móviles e IoT |
| EdDSA | Ed25519 | Clave pública Ed25519 | Firmas rápidas y modernas |
| none | Sin firmar | Nada | Nunca lo aceptes en producción |
Un secreto HMAC para HS256 debe tener al menos 32 bytes aleatorios. Los secretos cortos o fáciles de adivinar se pueden descifrar por fuerza bruta sin conexión a partir de cualquier token capturado.
Preguntas frecuentes
¿Qué es un JWT?
Un JSON Web Token es una cadena compacta con tres partes en base64url separadas por puntos: una cabecera que indica el algoritmo de firma, un payload de claims como el ID de usuario y la hora de caducidad, y una firma que demuestra que las dos primeras partes no se modificaron.
¿Es seguro pegar mi token aquí?
Sí. El decodificador funciona completamente en tu navegador con JavaScript y la Web Crypto API. El token, el secreto y las claves nunca se suben, registran ni almacenan. Aun así, trata los tokens de producción activos como contraseñas y evita compartirlos.
¿Decodificar un JWT significa que es válido?
No. Cualquiera puede decodificar un JWT porque la cabecera y el payload solo están codificados en base64url, no cifrados. Un token solo es fiable después de verificar su firma con el secreto o la clave pública correctos y de comprobar sus claims exp, nbf, iss y aud.
¿Cómo sé cuándo caduca un JWT?
El claim exp contiene la hora de caducidad en segundos Unix. El decodificador la convierte a tu hora local y a UTC, muestra una cuenta regresiva en vivo y cambia a un indicador de Caducado cuando ha pasado la hora.
¿Cómo verifico una firma HS256?
Introduce el secreto compartido que usa el servidor para firmar los tokens. La herramienta calcula HMAC-SHA256 sobre la cabecera y el payload y lo compara con la firma. Marca la opción base64 si tu secreto está guardado codificado en base64.
¿Puede verificar tokens RS256?
Sí. Pega la clave pública del emisor como un bloque PEM que empiece por BEGIN PUBLIC KEY, o como JSON JWK o JWKS del endpoint jwks del proveedor. Se admiten tokens RS, PS, ES (P-256, P-384, P-521) y EdDSA siempre que tu navegador admita el algoritmo.
¿Por qué mi token muestra 'AÚN NO VÁLIDO'?
Su claim nbf (not before, no antes de) está en el futuro, así que los servidores deberían rechazarlo hasta entonces. Esto suele significar que el reloj del servidor emisor va adelantado respecto al tuyo.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.