Ce qu’il fait
Décode un
JSON Web TokenJSON Web TokenA compact, URL-safe token that carries claims (like identity or expiry) between two parties, signed to prevent tampering.Learn more
et montre ce qu’il contient — en local, dans votre navigateur. Collez un JWT et l’en-tête et le payload s’ouvrent en JSON formaté dans des panneaux côte à côte, avec des chipsalg et typ au-dessus. Sous ces chips figurent jusqu’à trois avertissements de sécurité : alg none — jeton non signé (rouge, pour alg: none), symétrique — vérifiez côté serveur (info, pour HS256/HS384/HS512) et sans claim exp (accent, quand le payload n’a pas d’expiration). Les claims temporels (exp, iat, nbf) s’affichent humanisés — exp dans 43 jours, iat il y a 2 heures — et le panneau du payload porte un badge valide ou expiré piloté par exp.
Cet outil décode seulement — il ne vérifie jamais une signature. Vérifier une signature exige le secret ou la clé publique, qui vit côté serveur : chaque claim lu ici est donc une affirmation de l’émetteur, pas un fait vérifié.
Comment l’utiliser
- Choisissez une chip d’exemple — HS256, Expired, alg: none — ou collez votre propre jeton dans la zone
JWTJWTA compact, URL-safe token that carries claims (like identity or expiry) between two parties, signed to prevent tampering.Learn more
. Un jeton a trois parties séparées par des points ; moins de deux parties affiche une boîte d’erreur. - Lisez les panneaux : Header (métadonnées d’algorithme) à gauche, Payload (les claims) à droite. Copiez l’un ou l’autre en JSON.
- Parcourez les chips d’avertissement : elles signalent les jetons non signés, les algorithmes symétriques et l’absence d’expiration d’un coup d’œil.
- Vérifiez le badge à côté du Payload :
validtant queexpest dans le futur,expiredune fois passé. - Copiez un lien de partage qui transporte le jeton dans l’URL, ou lisez la signature brute affichée sous les panneaux.
Exemples
La chip HS256 remplit le jeton eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSIsImlhdCI6MTcwMDAwMDAwMH0.sig (signature factice). Il se décode en :
| Partie | Décodé |
|---|---|
| Header | { "alg": "HS256", "typ": "JWT" } |
| Payload | { "sub": "1234567890", "name": "Ada Lovelace", "iat": 1700000000 } |
Son payload n’a pas de exp, donc les avertissements lisent symétrique — vérifiez côté serveur et sans claim exp.
La chip Expired porte exp: 1700000000 (2023-11-14T22:13:20Z) plus un iat une seconde plus tôt — tous deux passés — donc le badge du payload lit expired et la chip humanisée lit exp il y a 1015 jours (le compteur croît avec le temps ; le badge ne revient pas en arrière).
La chip alg: none est eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0. — en-tête { "alg": "none" }, payload { "sub": "1" }, signature vide après le point final. Elle se décode comme tout autre jeton et affiche l’avertissement rouge alg none — jeton non signé plus sans claim exp ; la ligne de signature montre (none).
Un jeton en deux parties comme eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIn0 (en-tête et payload, sans troisième segment) se décode toujours — la signature manquante s’affiche (none). Une entrée avec moins de deux parties séparées par des points, comme abc, affiche la boîte d’erreur : A JWT has 3 dot-separated parts: header.payload.signature.
Bon à savoir
- Un
JWTJWTA compact, URL-safe token that carries claims (like identity or expiry) between two parties, signed to prevent tampering.Learn more
est trois parties base64url jointes par des points :header.payload.signature. Base64url remplace+→-et/→_et supprime le padding=pour qu’un jeton puisse vivre dans une URL ou un en-tête HTTP — c’est pourquoi unJWTJWTA compact, URL-safe token that carries claims (like identity or expiry) between two parties, signed to prevent tampering.Learn more
ne contient jamais+,/ni=. - La signature est calculée sur
base64url(header) + "." + base64url(payload)avec l’algorithme de l’en-tête —HMACHMACA construction that combines a hash function with a secret key to prove a message is intact and came from someone holding the key.
avec un secret partagé (HS256) ou une clé privée (RS256). Changez un octet d’une des parties encodées et elle ne correspond plus. N’importe qui peut écrire l’en-tête et le payload de son choix ; la signature est la seule partie que personne ne peut forger sans la clé. C’est exactement pourquoi cet outil décode mais ne vérifie jamais. - Les claims temporels sont des secondes Unix :
iat= émis à,nbf= pas valide avant,exp= expire. Un troisième segment manquant s’affiche(none); les jetons en deux parties se décodent toujours. - Privé : le décodage tourne en local dans votre navigateur. Un
JWTJWTA compact, URL-safe token that carries claims (like identity or expiry) between two parties, signed to prevent tampering.Learn more
est souvent un identifiant vivant — cet outil ne le transmet jamais. (Le lien de partage transporte le jeton ; ne partagez que des jetons que vous contrôlez.) - Outils liés : Générateur
HMACHMACA construction that combines a hash function with a secret key to prove a message is intact and came from someone holding the key.
, JSON Formatter, Encoder / Décoder enBase64Base64An encoding representing binary data as 64 safe ASCII characters, so it survives transport through text-only channels. It encodes — it does not encrypt.
.