Décoder ne fait que lire le token : il n’est vérifié qu’une fois la signature contrôlée avec la bonne clé.

Ce décodeur JWT sépare un JSON Web Token en en-tête, payload et signature, puis affiche les claims en JSON lisible, avec exp, iat et nbf convertis en dates locales. Il vérifie aussi les signatures HS, RS, PS et ES et signe de nouveaux jetons HS256. Tout se passe dans votre navigateur, via l’API Web Crypto.

Mode d’emploi

  1. Collez un JWT. L’en-tête, le payload et la signature sont colorés et décodés immédiatement.
  2. Lisez les claims : exp, iat et nbf s’affichent à votre heure locale, avec « dans 3 heures » ou « il y a 2 jours ».
  3. Pour vérifier la signature, saisissez le secret (HS256/384/512) ou collez la clé publique en PEM, un certificat X.509 ou un JWK (algorithmes RS, PS et ES).
  4. Touchez l’en-tête ou le payload pour le copier en JSON formaté.
  5. Passez à Créer pour signer un nouveau token HS256/384/512 avec votre payload et votre secret.
  • Rien ne quitte votre navigateur : le décodage et la vérification utilisent l’API Web Crypto intégrée, et les tokens et clés ne sont jamais enregistrés ni envoyés.
  • N’importe qui peut décoder un JWT : le payload est seulement encodé en Base64URL, pas chiffré. N’y mettez jamais de secret.
  • Un token avec alg « none » n’a aucune signature. Les serveurs doivent le refuser.
  • Algorithmes pris en charge : HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 et ES512. Un JWKS ({"keys": […]}) fonctionne aussi ; la clé est choisie par kid.
  • Activez « Secret Base64 » si votre secret est stocké encodé en Base64, comme chez certains fournisseurs.

Comment un JWT est construit

Un JWT (RFC 7519) se compose de trois chaînes Base64URL séparées par des points : en-tête.payload.signature. L’en-tête indique l’algorithme, par exemple {"alg":"HS256","typ":"JWT"}. Le payload contient des claims comme sub (sujet), iss (émetteur), aud (audience), exp (expiration), iat (émis le) et nbf (pas avant). Les dates sont des secondes depuis le 1er janvier 1970 UTC : exp 1767225600 correspond au 1er janvier 2026 à 00:00 UTC.

La signature porte sur les deux premières parties. En HS256, c’est un HMAC-SHA256 avec un secret partagé ; en RS256 ou PS256, une signature RSA ; en ES256, une signature ECDSA sur la courbe P-256 (RFC 7518).

Décoder n’est pas vérifier

N’importe qui peut lire un JWT : le Base64URL est un encodage, pas un chiffrement. Ne mettez donc ni mot de passe ni donnée personnelle dans le payload. Un jeton n’est fiable que si la signature est valide avec la bonne clé et si exp et nbf sont respectés. Un jeton en alg none n’a aucune signature et doit être refusé par le serveur. Pour HS256, prévoyez un secret d’au moins 32 octets aléatoires.

Clés acceptées

Pour HS256, HS384 et HS512, saisissez le secret partagé, en texte ou en Base64. Pour RS, PS et ES, collez la clé publique en PEM, un certificat X.509, un JWK ou un JWKS complet ; avec un JWKS, la clé est choisie d’après le kid de l’en-tête. Jetons et clés ne sont ni enregistrés ni envoyés.

Questions fréquentes

Puis-je coller un JWT ici sans risque ?

Oui. Le jeton est décodé et vérifié dans votre navigateur, sans envoi ni enregistrement. Traitez quand même les jetons de production comme des mots de passe et préférez des jetons expirés ou de test.

Peut-on décoder un JWT sans la clé ?

Oui. L’en-tête et le payload sont seulement encodés en Base64URL, donc lisibles par tous. Le secret ou la clé publique ne servent qu’à vérifier la signature.

Que signifie le claim exp ?

exp est la date d’expiration en secondes depuis le 1er janvier 1970 UTC. Passé ce moment, le jeton doit être refusé. Il est affiché ici à votre heure locale, avec une mention comme expiré il y a 2 jours.

Quelle différence entre HS256 et RS256 ?

HS256 signe avec un secret unique que l’émetteur et le vérificateur doivent connaître. RS256 signe avec une clé privée RSA et se vérifie avec la clé publique : le vérificateur ne détient jamais la clé de signature.

Pourquoi la vérification de la signature échoue-t-elle ?

Le plus souvent : un secret erroné ou stocké en Base64, une clé publique qui ne correspond pas au kid, ou un jeton modifié après signature. Activez Secret Base64 si votre fournisseur le stocke ainsi.

Puis-je créer un JWT ici ?

Oui. L’onglet Créer signe un jeton en HS256, HS384 ou HS512 à partir de votre payload et de votre secret. La signature RSA ou EC n’est pas proposée, car elle exige une clé privée.

Souvent utilisé avec

Mode d’emploi

Étapes

  1. Collez un JWT. L’en-tête, le payload et la signature sont colorés et décodés immédiatement.
  2. Lisez les claims : exp, iat et nbf s’affichent à votre heure locale, avec « dans 3 heures » ou « il y a 2 jours ».
  3. Pour vérifier la signature, saisissez le secret (HS256/384/512) ou collez la clé publique en PEM, un certificat X.509 ou un JWK (algorithmes RS, PS et ES).
  4. Touchez l’en-tête ou le payload pour le copier en JSON formaté.
  5. Passez à Créer pour signer un nouveau token HS256/384/512 avec votre payload et votre secret.

Raccourcis

Ctrl + EntréeCopier le payload (Décoder) ou le token (Créer)

Bon à savoir

Fonctionne dans votre navigateur. Vos fichiers et textes ne quittent jamais votre appareil.