Decodificar un JWT
Pegue un JWT y lea lo que lleva dentro: un token de ejemplo firmado con HS256 muestra su sujeto, su nombre y una caducidad del 13 de septiembre de 2020, por lo que aparece como caducado. Decodificar nunca verifica la firma. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
lee los claims y verifica la firma
Leer un token no es confiar en él
Un JWT es una forma compacta de pasar datos entre sistemas sin consultar cada vez un almacén central de sesiones. Su cabecera y sus datos solo están codificados, no cifrados, así que cualquier decodificador los muestra en cuanto usted pega el token. Esa comodidad es también la trampa. Un token que se decodifica sin problemas puede estar caducado, haber sido emitido por quien no debía o estar firmado con un algoritmo que su servicio nunca pensó aceptar. Decodificar responde qué dice el token; solo comprobar la firma con la clave correcta responde si hay que creerle.
Qué le muestra el resultado decodificado
Verá la cabecera con el algoritmo de firma y el tipo, y los datos con valores como el sujeto, un nombre, la hora de emisión y la de caducidad. El token de ejemplo, firmado con HS256, caducó en 1600000000, que la herramienta traduce al 13 de septiembre de 2020 a las 12:26 UTC y marca como caducado. Así puede atender rápido un caso de soporte por un acceso rechazado, confirmar que una versión emite tokens con la audiencia, el emisor y el rol correctos, o sacar el identificador de un usuario de una línea de registro.
El origen del formato, en breve
Los JWT se estandarizaron en el RFC 7519 en 2015 para darle a los sistemas distribuidos una forma compacta y autocontenida de pasar claims entre partes sin ir y volver a un almacén central de sesiones. Esa característica sin estado también es su principal trampa: un token que se decodifica sin problemas puede estar expirado, emitido por la parte equivocada o firmado con un algoritmo que su servicio nunca debería aceptar, por lo que decodificar solo nunca debe confundirse con autenticar.
Qué puede hacer con ella
Depuración de tickets de soporte
Pegue el token expirado o rechazado de un cliente para ver sus claims exactos y su expiración sin escribir un script desechable.
Validación de tokens entre servicios
Verifique tokens emitidos por un proveedor de identidad externo antes de que su backend confíe en los claims que contienen.
Aserciones automatizadas en pruebas
Compruebe en CI que los tokens emitidos llevan los claims correctos de audience, issuer y role antes de publicar un release.
Enriquecimiento de logs y analítica
Extraiga un ID de usuario o de tenant de un access token durante el procesamiento de logs sin cargar una librería de autenticación completa.
Preguntas frecuentes
¿Qué algoritmos de firma puede verificar este decodificador de JWT?
HS256 con secreto compartido, y RS256 o ES256 con clave pública, lo que cubre los algoritmos que emiten por defecto la mayoría de los proveedores de identidad.
¿Puede indicarme si mi token ya expiró?
Sí, la respuesta incluye el estado de expiración junto con los claims decodificados, así que no necesita calcularlo usted mismo a partir del campo exp.
¿Decodificar un JWT demuestra que es auténtico?
No. Un token solo está codificado, no cifrado, así que cualquiera puede leer sus datos. Uno que se decodifica sin problemas puede estar caducado, venir de un emisor equivocado o estar firmado con un algoritmo en el que usted nunca quiso confiar.
¿Para qué sirve decodificar un token?
Por ejemplo, para soporte: pegue el token rechazado de un cliente y vea sus datos exactos y su caducidad sin escribir un programa desechable. También ayuda a comprobar audiencia, emisor y rol antes de publicar, o a sacar el identificador de un usuario de un registro.
¿Cuáles son las tres partes de un JWT?
Van separadas por puntos. La primera es la cabecera, que indica el algoritmo, como HS256, y el tipo. La segunda contiene los datos, como el sujeto, el nombre y la caducidad. La tercera es la firma, que solo puede comprobarse con la clave.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/jwt-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"}'const res = await fetch("https://api.kit.forhosting.com/dev/jwt-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/jwt-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/jwt-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/jwt-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2ln"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.jwt_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Un JWT parece legible en cuanto lo pega en cualquier decodificador — así fue diseñado el formato — pero leer el encabezado y el payload no dice nada sobre si el token es genuino. Esta API separa ambas tareas: decodifica los claims al instante y, aparte, confirma si la firma realmente se emitió con su clave, y no solo se copió de un token que parecía legítimo.
Decodificar y verificar son dos preguntas distintas
La verificación es la pregunta real: ¿coincide la firma con lo que su emisor habría producido con su clave privada o compartida? Como un JSON Web Token solo está codificado en base64url, no cifrado, cualquiera puede pegar la sección central en la consola del navegador y leer los claims; eso no requiere ningún secreto ni demuestra nada. Confundir ambas cosas es una fuente común de errores de autenticación, y por eso este endpoint las trata como entradas separadas y explícitas.
Cómo funciona la solicitud
Envíe POST /dev/jwt-decode con el token y, si quiere verificación de firma, el secreto correspondiente (para HS256) o la clave pública (para RS256/ES256). La tarea corre de forma asíncrona y devuelve un task_id de inmediato; el encabezado decodificado, los claims del payload, el estado de expiración y un veredicto claro de firma válida o inválida llegan por webhook firmado o por un enlace firmado disponible durante 24 horas.
Dónde lo usan los equipos
Este endpoint se llama desde herramientas de depuración que necesitan inspeccionar el token de un cliente durante un ticket de soporte, desde servicios backend que validan tokens emitidos por un proveedor de identidad externo, desde suites de pruebas que verifican que claims como exp, aud y role estén correctos, y desde pipelines de logs que necesitan extraer un ID de usuario de un access token sin levantar toda la capa de autenticación.
Qué llega de vuelta
Los tokens malformados, las claves faltantes o los algoritmos no soportados devuelven un error claro en lugar de un fallo silencioso, y como las tareas fallidas nunca se cobran, puede probar entradas malformadas durante la depuración sin preocuparse por el costo. La respuesta separa el encabezado, el payload y el resultado de verificación para que su código nunca tenga que adivinar qué parte es cuál.
Preguntas técnicas
¿Decodificar un JWT requiere la clave secreta?
No, leer el encabezado y el payload solo requiere el token; el secreto o la clave pública únicamente se necesitan si además quiere verificar la firma.
¿Es gratuita la API para decodificar JWT?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuánto cuesta decodificar o verificar un token?
$0.002 por solicitud, ya sea que solo decodifique los claims o también verifique la firma, y las tareas fallidas nunca se cobran.
¿Es seguro enviar tokens de producción a esta API?
Los tokens y las claves se usan solo para procesar esa solicitud puntual y se eliminan después del período de retención, nunca se usan para entrenar modelos.
¿Qué pasa con un token malformado o truncado?
La API devuelve un error claro y específico que indica qué parte no se pudo analizar, en lugar de un fallo genérico.
¿Cómo se entrega el resultado?
Por webhook firmado, recomendado para flujos automatizados, o por un enlace firmado que permanece válido durante 24 horas.