Decodificador JWT

Decodifica e inspecciona JSON Web Tokens

Prueba un ejemplo

Token JWT

Se ejecuta localmente · Es seguro pegar secretos
También prueba:Codificador JWT

¿Qué es un JWT (JSON Web Token)?

Un JSON Web Token (JWT) es un formato de token compacto y seguro para URLs, definido en RFC 7519. Codifica un conjunto de claims como un objeto JSON, luego lo firma — y opcionalmente lo cifra — para que el destinatario pueda verificar que los datos no han sido alterados. Los JWT son el estándar de facto para la autenticación sin estado en REST APIs, sistemas de inicio de sesión único y autorización de microservicios.

Anatomía del JWT: Encabezado · Payload · Firma

Todo JWT está formado por tres segmentos codificados en base64url separados por puntos. El encabezado y el payload son JSON plano — legibles por cualquiera — mientras que la firma es un valor criptográfico que solo puede verificarse con la clave correcta.

Token codificado

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

EncabezadoPayloadFirma
Encabezado
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

¿Por qué usar un decodificador de JWT?

Los JWT sin procesar parecen texto aleatorio. Esta herramienta muestra al instante el encabezado y el payload como JSON formateado para que puedas inspeccionar los claims, verificar los tiempos de expiración y auditar las opciones de algoritmo sin escribir una sola línea de código.

🔍
Inspección instantánea de claims
Ve cada claim en el payload — sub, iss, aud, exp, roles personalizados, permisos — formateado y legible con un solo clic.
🔓
No se necesita clave secreta
El encabezado y el payload son públicos; solo la firma requiere el secreto. Esta herramienta decodifica ambos sin tu clave de firma.
⏱️
Análisis de expiración y marcas de tiempo
Las marcas de tiempo Unix (exp, iat, nbf) se convierten automáticamente a fechas legibles para que puedas ver de inmediato si un token ha expirado.
🔒
Se ejecuta completamente en tu navegador
Todo se procesa localmente — no se envía ningún dato del token a ningún servidor. Seguro para usar con tokens de producción mientras depuras.

Referencia de claims estándar de JWT

RFC 7519 define siete nombres de claims registrados. No son obligatorios, pero su uso es muy recomendado para la interoperabilidad. Puedes añadir cualquier claim personalizado al payload.

ClaimDescripciónTipo
issEmisorIdentifica quién emitió el token — p. ej. la URL de tu servidor de autenticación o el nombre de la aplicación.string
subSujetoIdentifica al principal sobre el que trata el JWT — típicamente un ID de usuario o cuenta de servicio.string
audAudienciaIdentifica a los destinatarios previstos. El receptor debe verificar que coincide con su identificador.string | string[]
expTiempo de expiraciónMarca de tiempo Unix después de la cual el token no debe ser aceptado. Siempre configúrala para limitar el daño de un token robado.number
nbfNo antes deMarca de tiempo Unix antes de la cual el token no debe ser aceptado. Útil para programar tokens con fecha futura.number
iatEmitido enMarca de tiempo Unix en la que se emitió el token. Se usa para calcular la antigüedad del token.number
jtiJWT IDUn identificador único para el token. Permite la revocación almacenando y verificando los valores JTI usados en el servidor.string

Algoritmos de firma de JWT

El claim de encabezado alg declara qué algoritmo firmó el token. La elección afecta la seguridad, el rendimiento y si los servicios de terceros pueden verificar tokens sin la clave privada.

AlgoritmoFamiliaTipo de claveNotas
HS256HMACSymmetricEl más común. Secreto compartido — cualquiera con el secreto puede firmar y verificar.
HS384HMACSymmetricVariante HMAC más robusta; coste de rendimiento moderado.
HS512HMACSymmetricVariante HMAC más fuerte.
RS256RSAAsymmetricAlgoritmo asimétrico más usado (Google, Auth0, Okta). La clave pública verifica sin necesitar la privada.
RS384RSAAsymmetricVariante RS de mayor seguridad.
RS512RSAAsymmetricVariante RS más robusta.
ES256ECDSAAsymmetricCurva elíptica — firmas más cortas que RSA, popular en móvil e IoT.
PS256RSA-PSSAsymmetricRSA-PSS: más moderno y seguro que RS256 basado en PKCS1v1.5.
noneSin firma — críticamente peligroso. Nunca aceptes tokens con alg: none en producción.

Consideraciones de seguridad

Decodificar un JWT siempre es seguro. Confiar en un JWT sin la verificación adecuada de la firma no lo es. Ten en cuenta estas reglas siempre que consumas tokens en tu aplicación.

Siempre seguro
  • Decodificar e inspeccionar un JWT en las herramientas de desarrollador o en esta herramienta
  • Usar exp, iat y nbf para entender el tiempo de vida del token
  • Registrar claims del payload para depuración (omitir PII sensible)
  • Leer el encabezado alg para entender cómo se firmó el token
Nunca hagas esto
  • Confiar en los claims del payload sin verificar la firma en el servidor
  • Aceptar tokens con alg: none — esto significa que no hay firma en absoluto
  • Almacenar tokens de acceso en localStorage en aplicaciones de alta seguridad (preferir cookies httpOnly)
  • Establecer exp muy en el futuro para tokens que llevan permisos sensibles

Casos de uso comunes

Depuración de flujos de autenticación
Pega un token de la pestaña de red de tu navegador para inspeccionar claims, verificar roles y comprobar la expiración sin tocar el código de producción.
Inspección de tokens de terceros
Lee rápidamente tokens de Google, Auth0, Okta o Azure AD para ver qué claims incluye tu proveedor y compararlos con tu esquema esperado.
Desarrollo y pruebas de API
Al escribir o probar endpoints de API, decodifica el encabezado de autorización para confirmar que tu lógica de generación de tokens establece los valores correctos de sub, aud y scope.
Autorización de microservicios
En mallas de servicios, cada servicio valida el JWT del llamador upstream. Decodifica tokens para rastrear qué servicio emitió el token y qué permisos afirma.
Soporte y respuesta a incidentes
Cuando un usuario reporta un error de autenticación, decodifica su token para verificar si ha expirado, si la audiencia es incorrecta o si falta un claim requerido.
Auditoría de seguridad
Audita el uso de JWT en los servicios comprobando las elecciones de algoritmo, las ventanas de expiración y si se almacenan accidentalmente datos sensibles en el payload no cifrado.

Decodificando JWT en código

El encabezado y el payload están codificados en base64url — simplemente invierte la codificación. Base64url reemplaza + por - y / por _, y omite el relleno =. Solo la firma requiere la clave secreta.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Preguntas frecuentes

¿Puedo decodificar un JWT sin la clave secreta?
Sí. El encabezado y el payload de un JWT son simplemente JSON codificado en base64url — no cifrado. Cualquiera puede decodificarlos y leerlos. El secreto (o clave privada para algoritmos RS/ES) solo se necesita para verificar la firma, confirmando que el token no fue alterado.
¿Decodificar un JWT significa que la firma está verificada?
No. Decodificar solo lee los claims. La verificación es un paso separado que comprueba la firma criptográfica usando la clave correcta. Siempre verifica la firma antes de confiar en cualquier claim en tu aplicación.
¿Cuál es la diferencia entre HS256 y RS256?
HS256 usa un único secreto simétrico compartido entre el emisor y el verificador — cualquiera con el secreto puede crear y verificar tokens. RS256 usa un par de claves asimétricas: la clave privada firma, la clave pública verifica. Con RS256 puedes distribuir la clave pública para que servicios externos puedan verificar tokens sin poder falsificarlos.
¿Por qué a veces falla la decodificación base64?
Los JWT usan codificación base64url, que usa - en lugar de + y _ en lugar de /, y omite los caracteres de relleno =. Los decodificadores base64 estándar requieren + y / y pueden necesitar relleno. Añade el relleno (hasta un múltiplo de 4 con =) e intercambia los caracteres antes de decodificar manualmente.
¿Es seguro pegar un JWT de producción en esta herramienta?
Sí — esta herramienta se ejecuta completamente en tu navegador y no envía datos a ningún servidor. Sin embargo, ten en cuenta quién puede ver tu pantalla o el historial del navegador. Para tokens muy sensibles, decodifícalos localmente en tu terminal.
¿Qué significa alg: none y es peligroso?
alg: none significa que el token no tiene firma criptográfica — cualquiera puede crear un token con claims arbitrarios y establecer alg en none. Algunas bibliotecas JWT antiguas aceptaban estos tokens, creando una vulnerabilidad crítica. Una biblioteca JWT segura siempre rechaza tokens con alg: none a menos que esté configurado explícitamente de otra manera. Nunca deshabilites esta comprobación.