Validator and Analizador of JWT (Decode + Exp + Firma)

Decodifica header/payload, validate expiración (exp) and verifica la firma (HS256/384/512) si introduces el secret. Todo in tu navegador.

Online Free
← Tools Use now

Validador / Analizador de JWT

Paste your JWT para decodificar header y payload, comprobar expiración y, si lo deseas, verificar la firma introduciendo el secret (HS256/HS384/HS512).

🧩 Decode header/payload ⏱️ Validation exp 🔐 Verificación firma 🧠 100% local

Nota: Para verificar firma se soportan HS256/HS384/HS512. Si tu token es RS256/ES256 necesitarás clave pública/cert.

Resultado

Header

(vacío)

Payload

(vacío)

Checks

Estructura JWT
Algoritmo (alg)
Expiración (exp)
Firma

JWT decoder online: cómo analizar un token sin liarla en producción

Un JWT (JSON Web Token) es una cadena compacta formada por tres partes separadas por puntos: header.payload.signature. En el día a día (microservicios, APIs, SPA, mobile) los JWT se usan para transportar claims (usuario, roles, expiración, audiencia) de forma verificable. El problema: cuando algo falla en producción, necesitas un jwt decoder online rápido para ver qué contiene el token, si está caducado o si la firma coincide con tu secret.

Esta herramienta te ayuda en 3 pasos: 1) decodificar header y payload, 2) validar expiración y 3) verificar firma (si introduces el secret). Todo ocurre en tu navegador: no se envía el token a servidores externos. Aun así, como buena práctica, evita pegar tokens reales con datos sensibles si estás en un equipo compartido.

1) Decodificar header y payload

El header suele incluir alg (algoritmo de firma) y typ. El payload contiene claims como sub, iat, exp, aud, iss. La herramienta te muestra ambos en JSON legible y te permite copiarlos. Si el JSON te da dudas, puedes contrastarlo con el Validador de JSON o revisar si el token viene envuelto/transportado en Base64 con el Conversor Base64.

2) Validar expiración (exp) con tolerancia

La claim exp es un timestamp (segundos desde epoch). Si exp ya pasó, el token debe considerarse inválido. En sistemas distribuidos es normal tener desfase de reloj (clock skew). Por eso incluimos un campo de tolerancia (por defecto 60s). Si tu API rechaza tokens “válidos” a veces, revisa NTP y considera tolerancia en validación.

3) Verificar firma (HS256/HS384/HS512) introduciendo el secret

Para algoritmos HMAC (HS256/384/512), la firma se calcula con tu secret y el contenido base64url(header) + '.' + base64url(payload). La herramienta recalcula la firma y compara con la del token. Si no coincide, suele ser por: secret incorrecto, token alterado, algoritmo distinto, o encoding base64url mal aplicado.

Tabla comparativa rápida

Enfoque Ventajas Riesgos / límites Cuándo usar
JWT stateless Escala fácil, no requiere sesión en servidor Revocación más compleja, tamaño en headers APIs, microservicios, mobile
Sesión server-side Revocación simple, control centralizado Escalado requiere store compartido Apps monolíticas, backoffice
JWT + refresh token Balance entre UX y seguridad Más piezas (rotación, storage seguro) SPAs y apps con login persistente

Examples prácticos

Node.js (jsonwebtoken) — verificar HS256

import jwt from 'jsonwebtoken';

const token = process.env.TOKEN;
const secret = process.env.JWT_SECRET;

try {
  const payload = jwt.verify(token, secret, { algorithms: ['HS256'] });
  console.log('OK payload:', payload);
} catch (e) {
  console.error('JWT inválido:', e.message);
}

PHP — verificar con firebase/php-jwt

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$token = $_GET['token'];
$secret = getenv('JWT_SECRET');

try {
  $decoded = JWT::decode($token, new Key($secret, 'HS256'));
  var_dump($decoded);
} catch (Exception $e) {
  echo 'JWT inválido: ' . $e->getMessage();
}

Python (PyJWT) — validar exp y aud

import jwt, os, time

token = os.environ['TOKEN']
secret = os.environ['JWT_SECRET']

payload = jwt.decode(
  token,
  secret,
  algorithms=['HS256'],
  audience='api-mi-servicio',
  options={'require': ['exp']}
)
print(payload)

Tip para depurar: si estás generando secrets o claves, apóyate en el Generador de Password Segura y, si necesitas comparar firmas o checksums, usa el Generador de Hash. Para inspeccionar estructuras XML/JSON alrededor del auth (por ejemplo, gateways que envuelven claims), tienes Validador XML y Validador JSON.

Checklist de seguridad (rápido)

  • No guardes JWT en localStorage si puedes evitarlo; considera cookies httpOnly + CSRF.
  • Valida iss, aud, exp y el algoritmo permitido (lista blanca).
  • Evita tokens excesivamente largos (headers) y no metas datos sensibles en el payload.
  • Rota secrets y usa refresh tokens con rotación si necesitas sesiones largas.