Tutorial
Cómo decodificar un JWT sin filtrarlo
Un token JWT lleva datos reales: el usuario para el que se emitió, los permisos que concede y su fecha de caducidad. Pegarlo en un decodificador en línea cualquiera supone entregar esos datos, y a menudo una sesión todavía válida, a un servidor que no controlas. El decodificador de abajo se ejecuta por completo en tu navegador, así que puedes leer lo que hay dentro de un token, comprobar si ha caducado y confirmar una firma HMAC cuando conoces el secreto, todo ello sin que una sola petición de red salga de tu pestaña.
Paso a paso
- Abre el decodificador de JWT y pega tu token en el cuadro de entrada. Un JWT son tres bloques en Base64Url unidos por puntos: la cabecera, la carga útil y la firma. Puedes pegarlo con el prefijo Bearer o sin él; la herramienta lee la estructura en ambos casos y te avisa de inmediato si el formato es incorrecto.
- Lee la cabecera y la carga útil decodificadas. La cabecera muestra el algoritmo de firma (por ejemplo HS256 o RS256) y el identificador de clave cuando existe. La carga útil enumera los claims: para quién se emitió el token (sub), quién lo emitió (iss) y las marcas de tiempo. La herramienta convierte los campos numéricos iat, nbf y exp en fechas legibles e indica si el token sigue siendo válido o ya ha caducado.

- Si el token usa HS256 y posees el secreto compartido, pega ese secreto en el campo de verificación y haz clic en Verificar. La herramienta recalcula el HMAC sobre la cabecera y la carga útil y lo compara con la firma, de modo que sabrás si el token es auténtico o se ha manipulado. Para los tokens RS256 o ES256, la firma depende de una clave privada que no tienes; por eso la herramienta inspecciona los claims pero no pretende verificar la firma.

Por qué nunca debes pegar un token en un sitio cualquiera
Un JWT no está cifrado. La cabecera y la carga útil solo están codificadas en Base64Url, lo que significa que cualquiera que reciba el token puede leer todos los claims que contiene: correo, identificador de usuario, roles, indicadores internos. Si el token es un token de acceso que aún no ha caducado, quien lo tenga puede reutilizarlo y actuar en tu nombre hasta que expire. Al pegar un token activo en un decodificador alojado, envías todo eso a los registros de ese servidor. Decodificar el token en tu propia máquina, sin ninguna subida, es la única forma de inspeccionarlo sin ampliar el círculo de quienes pueden verlo. Puedes confirmar que no hay tráfico abriendo el panel de red mientras decodificas.
Qué puede y qué no puede decirte la firma
La firma es lo que impide que alguien modifique los claims y salga impune. En un token HS256, el mismo secreto firma y verifica, así que si conoces el secreto puedes confirmar plenamente la autenticidad del token aquí mismo. En los tokens RS256 y ES256, una clave privada firma el token y solo la clave pública correspondiente lo verifica; la clave privada nunca sale del emisor, de modo que una herramienta del lado del cliente puede leer los claims pero no puede probar honestamente la firma sin esa clave pública. Trata la carga útil decodificada como una afirmación hecha por el emisor, no como una prueba, hasta que la firma la compruebe quien posee la clave de verificación. Para hashear o comparar secretos por separado, el generador de hash de este sitio también funciona en local.
Estructura JWT y qué revela cada parte
Un JWT son tres segmentos codificados en Base64url separados por puntos: cabecera, carga útil y firma. La cabecera declara el tipo de token ("JWT") y el algoritmo: HS256 (HMAC-SHA-256, un secreto compartido) o RS256 (RSA-SHA-256, un par de claves pública/privada) son los más comunes. La carga útil contiene reclamaciones como `sub` (sujeto, normalmente un ID de usuario), `iat` (marca de tiempo Unix de emisión), `exp` (marca de tiempo Unix de expiración), `aud` (audiencia prevista) y reclamaciones personalizadas de la aplicación como roles o ámbitos. Base64url no es cifrado: es una variante de Base64 segura para URL que reemplaza `+` con `-` y `/` con `_`, y omite el relleno. Cualquiera que tenga la cadena de token bruta puede decodificar la cabecera y la carga útil sin la clave de firma. Solo el segmento de firma requiere la clave para verificar. Por eso pegar un token de producción activo en un decodificador en línea externo es un riesgo de seguridad: si el `exp` del token sigue siendo futuro y el servicio registra la entrada, la sesión que representa puede verse comprometida.
Las herramientas usadas en esta guía
- Decodificador JWTDecodifica un JWT (encabezado, payload, caducidad) sin enviarlo a ningún lado. Sin verificación de firma.
- Generador de hashGenera hashes MD5, SHA-1, SHA-256, SHA-512 a partir de texto o archivos. Sin subida.
- Formateador JSONFormatea, valida y minifica JSON directamente en tu navegador. Sin subida.
Preguntas frecuentes
¿Se envía mi token a algún servidor al decodificarlo?
No. El decodificador divide el token, decodifica la cabecera y la carga útil en Base64Url y las muestra en memoria. La comprobación HMAC opcional usa la API Web Crypto integrada en tu navegador. Nada viaja por la red, lo cual importa porque un JWT suele contener datos personales y una sesión todavía activa. Abre el panel de red de tu navegador mientras decodificas y no verás salir ninguna petición.
¿Puede esta herramienta verificar una firma RS256 o ES256?
No del todo, y no fingirá hacerlo. HS256 usa un único secreto compartido para firmar y verificar, así que pegar ese secreto permite a la herramienta confirmar la firma en tu navegador. RS256 y ES256 usan una clave privada para firmar y una clave pública distinta para verificar; la herramienta lee y valida los claims y la caducidad, pero no llega a afirmar una firma que no puede comprobar. Para esos tokens, verifica en el servicio que posee la clave pública.