Décodeur JWT

Décodez et inspectez des jetons JWT

Vérifié dans votre navigateur avec WebCrypto ; la clé et le jeton ne sont pas envoyés à nos serveurs. HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512 et EdDSA (Ed25519, dans les navigateurs qui le prennent en charge).

Créer un jeton signé

Signé dans votre navigateur avec WebCrypto ; la clé n’est pas envoyée à nos serveurs. Signez avec une clé de test : une clé privée de production doit rester sur son serveur.

À propos de l’outil Décodeur JWT

Le Décodeur JWT affiche l’en-tête et la charge utile d’un JSON Web Token signé en JSON indenté, en gardant les grands nombres tels qu’ils sont écrits, et transforme les claims exp, iat et nbf en dates UTC avec une mention expiré ou pas encore valide. Il vérifie aussi la signature sur place avec WebCrypto : un secret partagé pour HS256, HS384 et HS512, ou, pour les jetons RS, PS, ES et EdDSA (Ed25519), une clé publique au format PEM ou JWK, un JWK Set, un certificat X.509 ou une clé privée, dont seule la partie publique sert. Il signe de nouveaux jetons avec un secret ou une clé privée. Les jetons non signés (alg none) et une clé publique proposée pour un jeton HS sont refusés. D’un jeton chiffré (JWE, cinq parties), seul l’en-tête est affiché.

Exemple

Un jeton HS256 décodé, puis vérifié avec le secret my-secret (la mention sur exp dépend de la date du jour ; ce jeton a expiré le 1er janvier 2026) :

Jeton

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MiIsIm5hbWUiOiJBZGEiLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc2NzIyOTIwMH0.tSbItJNpja-KxR9Sew4UseTRkf2DxToP11X65NZgLJw

Décoder et Vérifier la signature

EN-TÊTE
{
  "alg": "HS256",
  "typ": "JWT"
}

CHARGE UTILE
{
  "sub": "42",
  "name": "Ada",
  "iat": 1767225600,
  "exp": 1767229200
}
exp : 1er janvier 2026 à 01:00:00 (UTC) — expiré
iat : 1er janvier 2026 à 00:00:00 (UTC)

Signature vérifiée (HS256) : ce jeton a été signé avec cette clé et n’a pas été modifié. Vérifiez aussi exp / nbf dans la charge utile décodée.

Comment décoder et vérifier un JWT

  1. 1Collez le jeton, trois parties en base64url séparées par des points, et cliquez sur « Décoder ».
  2. 2Lisez l’en-tête, la charge utile et, en dessous, les dates exp, iat et nbf en UTC.
  3. 3Pour vérifier la signature, collez le secret ou la clé publique sous « Vérification de la signature » ; pour un jeton HS, réglez « Format du secret » sur texte ou base64 / base64url.
  4. 4Cliquez sur « Vérifier la signature » pour obtenir « Signature vérifiée » ou « Signature non valide » avec la raison.
  5. 5Pour créer un jeton, écrivez son en-tête et sa charge utile sous « Créer un jeton signé », collez le secret ou la clé privée, et cliquez sur « Signer ».

Formats et limites

Format du jeton
JWT signé en forme compacte (trois parties) ; d’un jeton chiffré (JWE, cinq parties), seul l’en-tête est affiché ; les charges utiles non encodées ne sont pas prises en charge
Algorithmes
HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512 et EdDSA (Ed25519, dans les navigateurs dont WebCrypto le prend en charge)
Clés acceptées
Un secret en texte ou en base64/base64url, une JWK oct, une clé publique PEM (aussi PKCS#1 RSA), un certificat X.509, une clé privée PEM (PKCS#8, PKCS#1 RSA ou SEC1 EC), une JWK RSA, EC ou OKP, ou un JWK Set (la clé dont le kid est celui de l’en-tête)
Clés refusées, avec la raison
Une clé publique pour un jeton HS, et les clés privées protégées par une phrase secrète ; pour vérifier, une clé privée est réduite à sa partie publique
Signature
Les mêmes algorithmes, avec un secret ou une clé privée (PEM ou JWK) ; l’en-tête et la charge utile sont gardés tels qu’ils sont écrits
Non vérifié à votre place
exp, nbf, iss et aud : les dates sont affichées, la décision revient à votre application

Où votre jeton est traité

Le décodage, la signature et la vérification des signatures se font dans cette page avec atob et WebCrypto de votre navigateur ; le jeton et la clé ne sont pas envoyés à nos serveurs. Si vous activez une traduction dans le menu des langues, Google reçoit le texte affiché sur la page, y compris l’en-tête et la charge utile décodés : laissez la traduction désactivée pour de vrais jetons. Un décodage qui échoue nous envoie le message Jeton JWT non valide, le nom de l’outil, ainsi que le nom et la version de votre navigateur.

Questions fréquentes

Cet outil vérifie-t-il la signature du JWT ?

Oui. Collez le secret partagé pour HS256, HS384 ou HS512, ou la clé publique de l’émetteur en PEM ou JWK pour RS, PS, ES ou EdDSA, puis cliquez sur « Vérifier la signature ». L’algorithme est lu dans l’en-tête du jeton, et alg none est refusé.

Un jeton vérifié peut-il être accepté sans risque ?

Pas à lui seul. Une signature vérifiée prouve que le jeton a été signé avec cette clé et n’a pas changé depuis. Votre application doit encore vérifier exp, nbf, l’émetteur (iss) et l’audience (aud) ; cette page ne fait que les afficher.

Pourquoi ma clé publique est-elle refusée pour un jeton HS256 ?

L’accepter permettrait l’attaque par confusion d’algorithme, où une clé publique sert de secret HMAC. Un jeton HS doit être vérifié avec son secret partagé : une clé PEM ou une JWK autre que oct est donc refusée pour HS256, HS384 et HS512.

Puis-je coller un JWK Set ou un certificat ?

Oui. D’un JWK Set, la clé dont le kid est celui de l’en-tête du jeton est utilisée ; sans kid, le Set doit contenir une seule clé pour l’algorithme du jeton. D’un certificat X.509, sa clé publique est utilisée : les dates et la chaîne du certificat ne sont pas vérifiées.

Puis-je créer un JWT ici ?

Oui. Sous « Créer un jeton signé », écrivez l’en-tête (son alg choisit l’algorithme) et la charge utile, collez le secret partagé ou la clé privée (PEM ou JWK), et cliquez sur « Signer ». La clé reste dans votre navigateur ; signez avec une clé de test plutôt qu’avec une clé de production.

Pourquoi « Décoder » indique-t-il Jeton JWT non valide ?

Le texte n’a pas trois parties séparées par des points, ou une partie n’est pas du JSON encodé en base64url. Un jeton chiffré (JWE, cinq parties) n’est pas refusé : son en-tête est affiché, sa charge utile reste chiffrée. « Décoder » ne regarde jamais la signature : une mauvaise signature ne peut donc pas provoquer ce message.

Trucs et astuces

  • ✓Un secret copié depuis un fichier .env peut finir par un retour à la ligne ; avec « Format du secret » sur texte, le verdict le signale quand le secret correspond sans lui.
  • ✓Si un jeton PS256 a été signé avec une autre longueur de sel, le verdict indique cette longueur et explique pourquoi les bibliothèques conformes le refusent.