Decodificador / Inspector / Validador de JWT

Decodifica, inspecciona y verifica tokens JWT — header, payload, claims y firmas HMAC. Todo se procesa en tu navegador

Token JWT 0 caracteres
Ejemplos:
Este token ha sido decodificado pero NO verificado. Decodificar no demuestra autenticidad — cualquiera puede crear un JWT con cualquier payload.
Header

                    
Payload

                
Estado Temporal
Firma
Claims
Claim Valor Significado Status
Advertencias
Pega un token JWT arriba y haz clic en Decodificar para inspeccionar su contenido.
La validación comprueba la estructura, formato y claims temporales. NO verifica la firma criptográfica. Usa la pestaña Verificar para la verificación de firma.
Pega un token JWT arriba para validar su estructura y claims.

Verificación de firma RSA y EC

La verificación de firma RSA y EC requiere importar claves públicas a través de la Web Crypto API. Esta función está prevista para una actualización futura.

Para tokens basados en HMAC (HS256, HS384, HS512), la verificación completa de firma está disponible ahora usando la opción Secreto HMAC.

Verificación de firma RSA y EC

La verificación de firma RSA y EC requiere importar claves públicas a través de la Web Crypto API. Esta función está prevista para una actualización futura.

Para tokens basados en HMAC (HS256, HS384, HS512), la verificación completa de firma está disponible ahora usando la opción Secreto HMAC.

¿Qué es un JWT?

Un JSON Web Token (JWT) es un formato de token compacto y seguro para URL para transmitir información de forma segura entre partes. Consiste en tres partes codificadas en Base64URL separadas por puntos.

eyJhbGci...(Header).eyJzdWIi...(Payload).SflKxwRJ...(Firma)

Header

El header contiene típicamente dos campos: el algoritmo de firma (alg) y el tipo de token (typ).

{"alg": "HS256", "typ": "JWT"}

Payload (Claims)

El payload contiene claims — declaraciones sobre el usuario y metadatos. Los claims estándar incluyen:

ClaimNombreDescripción
issEmisorQuién emitió el token
subSujetoDe quién trata el token
audAudienciaDestinatario previsto del token
expExpiraciónCuándo expira el token (marca de tiempo Unix en segundos)
nbfNo Antes DeEl token no es válido antes de esta hora
iatEmitido EnCuándo se creó el token
jtiJWT IDIdentificador único del token

Firma

La firma se crea codificando el header y el payload, uniéndolos con un punto y firmando con el algoritmo especificado en el header.

HMAC-SHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  secret
)

Conceptos Erróneos Comunes

"JWTs are encrypted" — Standard JWTs (JWS) are only signed, not encrypted. The payload can be read by anyone who has the token.
"Decoding a JWT means it's trusted" — Decoding only reads the content. Without signature verification, the token could have been tampered with.
"alg: none is harmless" — The none algorithm means no signature. Accepting it can allow attackers to forge tokens. Always reject alg: none in production.

Mejores Prácticas de Seguridad

Siempre verifica la firma antes de confiar en cualquier claim
Comprueba los claims exp, nbf e iat para validez temporal
Valida los claims emisor (iss) y audiencia (aud)
Nunca almacenes datos sensibles (contraseñas, tarjetas de crédito) en el payload
Usa secretos fuertes para HMAC y rota las claves regularmente
Prefiere algoritmos asimétricos (RS256, ES256) para APIs públicas
Toda la decodificación, validación y verificación de firma se realiza en tu navegador. Tu JWT y secretos nunca se envían a ningún servidor.

Tips

Decodificar No Significa Confiar

Cualquiera puede decodificar un JWT — Base64URL no es cifrado. Decodificar revela el contenido, pero solo la verificación de firma demuestra que el token no ha sido manipulado.

Comprueba la Expiración Antes de Usar

El claim exp (expiración) es una marca de tiempo Unix en segundos. Siempre comprueba que está en el futuro antes de confiar en un token. Esta herramienta muestra el estado temporal al instante.

alg: none Es un Riesgo de Seguridad

El algoritmo "none" significa que el token no tiene firma. Aceptarlo en producción puede permitir a atacantes falsificar tokens. Siempre rechaza alg: none en tu servidor.

Los JWT No Están Cifrados por Defecto

Los JWT estándar (JWS) solo están firmados, no cifrados. El payload es legible por cualquiera con el token. Nunca almacenes contraseñas, números de tarjeta de crédito u otros secretos en un payload JWT.

Casos de uso comunes

🔌

Depuración de API

Pega tokens de acceso de respuestas API para inspeccionar rápidamente claims, comprobar expiración y verificar el emisor sin salir de tu navegador.

🔐

Pruebas de Flujo de Autenticación

Decodifica tokens en cada paso de los flujos OAuth2 u OpenID Connect para verificar que los scopes, audiencia y claims correctos están presentes.

⏱️

Monitoreo de Expiración de Tokens

Comprueba cuándo expiran los tokens para depurar problemas de timeout de sesión. La herramienta muestra diferencias de tiempo legibles como "expira en 14 minutos".

⚙️

Verificación de Pipeline CI/CD

Verifica que los tokens de servicio a servicio contienen los claims esperados antes de desplegar. Pega tokens de logs del pipeline para inspeccionarlos.

🛡️

Auditoría de Seguridad

Inspecciona tokens en busca de fugas de datos sensibles (PII en payload), algoritmos débiles (alg: none) o claims de seguridad faltantes (exp, aud, iss).

Preguntas frecuentes

¿Qué es un JWT?
Un JSON Web Token (JWT) es un formato compacto y seguro para URL para transmitir información entre partes como un objeto JSON. Consiste en tres partes codificadas en Base64URL: header, payload y firma, separados por puntos.
¿Está cifrado un JWT?
Los JWT estándar (JWS — JSON Web Signature) están firmados pero NO cifrados. El payload puede ser leído por cualquiera. Los tokens JWE (JSON Web Encryption) están cifrados, pero son un formato diferente con 5 segmentos en lugar de 3.
¿Puedo confiar en un JWT decodificado?
No. Decodificar solo revela el contenido — no verifica la autenticidad. Cualquiera puede crear un JWT con cualquier payload. Debes verificar la firma criptográfica para confiar en los claims.
¿Cuál es la diferencia entre decodificar y verificar?
Decodificar lee el header y payload codificados en Base64URL. Verificar comprueba la firma criptográfica para asegurar que el token fue emitido por una parte confiable y no ha sido manipulado. Siempre verifica antes de confiar.
¿Por qué mi token aparece como expirado?
El claim exp es una marca de tiempo Unix en segundos. Si esta hora está en el pasado, el token ha expirado. Comprueba el valor de exp y compáralo con la hora actual. Las diferencias de zona horaria no afectan — las marcas de tiempo Unix son siempre UTC.
¿Qué significa el campo alg?
El campo alg (algoritmo) en el header especifica el algoritmo criptográfico usado para firmar el token. Valores comunes: HS256 (HMAC con SHA-256), RS256 (RSA con SHA-256), ES256 (ECDSA con P-256 y SHA-256).
¿Qué es la codificación Base64URL?
Base64URL es una variante de Base64 que reemplaza + por - y / por _, y elimina el relleno (=). Esto hace la salida segura para URLs y nombres de archivo. JWT usa Base64URL para ambos segmentos header y payload.
¿Se envía mi token o secreto a algún servidor?
No. Toda la decodificación, validación y verificación de firma se realiza completamente en tu navegador usando JavaScript y la Web Crypto API. Tu JWT y secretos nunca salen de tu dispositivo.
¿Puedo verificar tokens HS256 aquí?
Sí. Esta herramienta es totalmente compatible con la verificación de firma HMAC (HS256, HS384, HS512) usando la Web Crypto API. Introduce tu secreto en la pestaña Verificar para comprobar si la firma es válida.
¿Por qué no se admiten los tokens JWE?
Los tokens JWE (JSON Web Encryption) tienen 5 segmentos y requieren una clave de desencriptación para leer el payload. Esta herramienta se enfoca en tokens JWS (firmados) que tienen 3 segmentos. El soporte JWE podría añadirse en una actualización futura.