Cómo se construye un JWT
Un JSON Web Token (RFC 7519), en su forma firmada habitual (JWS, RFC 7515), consta de tres segmentos base64url separados por puntos: header.payload.signature. La cabecera indica el algoritmo de firma (alg, por ejemplo HS256 o RS256) y el tipo de token. La carga útil contiene los claims: de quién trata el token (sub), quién lo emitió (iss), para quién es (aud) y cuándo caduca (exp).
Ejemplo
El token que aparece al cargar esta página tiene la cabecera {"alg":"HS256","typ":"JWT"} y la carga útil {"sub":"user-42","name":"Jane Doe","iat":1767225600,"exp":1767229200}. iat y exp son NumericDates, segundos desde 1970-01-01 00:00 UTC: el token se emitió el 2026-01-01 a las 00:00 UTC y caducó una hora después. Su firma es un marcador de posición. El decodificador lee el token igualmente, porque para decodificar no hace falta la firma.
Decodificar no es verificar
La cabecera y la carga útil solo están codificadas en base64url, no cifradas. Cualquiera que tenga un token puede leerlas, así que una carga útil JWT nunca debe contener secretos. Si un token es auténtico lo decide su firma, que solo puede comprobar quien tiene la clave o, con RS256 y ES256, cualquiera con la clave pública. Una aplicación tiene que verificar la firma, el algoritmo esperado y el claim exp con una biblioteca JWT antes de fiarse de cualquier claim.
¿Cinco segmentos?
Un token con cinco segmentos es un JWE cifrado. Su carga útil no se puede leer sin la clave de descifrado, por eso esta herramienta no lo decodifica.
Para decodificar un segmento a mano, usa el decodificador Base64, que acepta el alfabeto seguro para URL sin relleno.