JWT Decoder & Encoder · Sécurité
Décodez, vérifiez et signez des JSON Web Tokens dans votre navigateur.
Collez un jeton header.payload.signature pour lire ses revendications et vérifier la signature avec un secret, un PEM, un JWK ou un JWKS — ou changez d’onglet pour signer votre propre jeton et générer des clés de test. Rien ne quitte jamais l’onglet.
Atelier JWT Decoder & Encoder
Results update as you type — press Enter to run now.
Treat pasted keys and secrets as live credentials — clipboard history and screenshots can leak them.
Everything stays in your browser — nothing is sent anywhere. Verifies HS/RS/PS/ES 256–512 and EdDSA against a shared secret, a PEM BEGIN PUBLIC KEY, a JWK, or a full JWKS (matched by kid).
Snapshots save only the token (never keys) to this browser's localStorage — nothing leaves your machine.
No share links on this tool — inputs may be secrets.
Paste a JWT or pick an example to see its header, payload, claims, and signature decoded here.
Treat pasted keys and secrets as live credentials — clipboard history and screenshots can leak them.
Signing happens in your browser with the Web Crypto API — keys never leave this page. The token is built from minified JSON, so whitespace in the editors never changes the signature. Need a key? Use the Generate keys tab.
Fill in the header, payload, and key to see the signed token here.
Generated locally with the Web Crypto API — nothing leaves your browser. Great for tests and local development; production keys belong in your platform's KMS or secret manager.
Pick a key type and press Generate — the key appears here as PEM and JWK, with copy buttons.
Le manque
Un jeton n’est que trois chaînes — jusqu’à ce qu’une revendication soit erronée.
Déboguer l’authentification revient à fixer un bloc opaque eyJ… et à deviner. Le jeton est-il expiré ? L’audience est-elle correcte ? L’émetteur l’a-t-il bien signé avec la clé que vous croyez ? Les réponses sont toutes là-dedans — encodées en base64url, à un point de distance — mais les lire à l’œil est source d’erreurs, et de nombreux décodeurs en ligne envoient discrètement votre jeton par POST vers un serveur. Il en va de même pour les assistants IA : un jeton collé dans un chat atterrit dans l’historique de conversation d’un tiers — et peut-être dans son pipeline d’entraînement. Ne collez jamais un jeton de production dans un chat IA. Décodez-le plutôt localement.
Cet atelier JWT transforme le bloc en faits concrets dont vous avez besoin — l’algorithme du header, chaque revendication accompagnée d’une légende en langage clair, l’expiration lisible — et, lorsque vous fournissez le secret, la clé publique, le JWK ou le JWKS, confirme la signature avec la Web Crypto API pour les treize algorithmes JWS. L’outil fonctionne aussi dans l’autre sens : modifiez le JSON du header et du payload, signez un nouveau jeton ou générez une paire de clés de test RSA / EC / Ed25519 — le tout entièrement côté client, il est donc sûr à utiliser même avec des jetons de production.
Besoin plutôt des octets bruts ? L’ encodeur / décodeur Base64 prend en charge les payloads base64 et base64url arbitraires.
Le pipeline
Comment ça marche.
Cinq étapes déterministes s’exécutent à chaque frappe — toutes dans l’onglet de votre navigateur, la signature et la vérification étant assurées par la Web Crypto API.
-
Découper le jeton.
Le JWT compact est découpé sur ses deux points en segments header, payload et signature.
-
Décoder les parties.
Les segments header et payload sont décodés depuis le base64url vers leurs objets JSON d’origine.
-
Lire les revendications.
Les revendications standard sont mises en évidence avec des légendes en langage clair, et exp, nbf et iat sont converties en heures lisibles avec une vérification d’expiration.
-
Vérifier la signature.
Fournissez un secret, une clé publique PEM, un JWK ou un JWKS et la signature HS / RS / PS / ES / EdDSA est recalculée et vérifiée localement.
-
Signer le vôtre.
Passez à Encode & sign pour créer un jeton à partir d’un JSON modifiable — ou générez d’abord une nouvelle paire de clés de test.
Référence des jetons
Anatomie d’un JWT.
Trois segments base64url joints par des points. Le header et le payload sont du JSON ; la signature est calculée sur les deux premiers et c’est ce que la vérification revérifie.
header.payload.signature
Les deux points découpent le jeton en trois parties. La signature couvre les octets header.payload — modifiez l’un ou l’autre et elle ne correspond plus.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ← header (base64url JSON)
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6... ← payload (base64url JSON)
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQ ← signature (base64url bytes)
header . payload . signature
└─────── signed input ──────┘ ⇒ signature Revendications courantes
Une légende pour les champs enregistrés du header et du payload. Les heures telles que exp sont des NumericDate — secondes écoulées depuis l’epoch Unix.
alg header signing algorithm, e.g. HS256 / RS256
typ header token type, usually "JWT"
kid header key id — which key signed this token
iss payload issuer — who created the token
sub payload subject — who the token is about
aud payload audience — who the token is for
exp payload expiration time (NumericDate, seconds)
nbf payload not-before time (NumericDate, seconds)
iat payload issued-at time (NumericDate, seconds)
jti payload unique token id Étape suivante
Vous avez les octets ? Encodez-les, décodez-les et hachez-les.
Une fois qu’un jeton se lit correctement, descendez d’un niveau : l’ encodeur / décodeur Base64 prend en charge les payloads base64url à partir desquels les JWT sont construits, et le générateur de hachage calcule les empreintes SHA qui se cachent derrière la signature HMAC — le tout entièrement dans votre navigateur.
HMACSHA256(
base64url(header) + "." +
base64url(payload),
secret
) ⇒ signature ✓ FAQ
Vos questions, nos réponses.
Appuyez sur une question pour afficher la réponse.
Qu’est-ce qu’un JWT ?
Un JSON Web Token (JWT) est un identifiant compact et compatible avec les URL, composé de trois parties base64url séparées par des points : un header, un payload de revendications (claims) et une signature — écrit sous la forme header.payload.signature. Le header indique l’algorithme de signature, le payload porte des revendications telles que le destinataire du jeton et sa date d’expiration, et la signature permet au destinataire de confirmer que le jeton a été émis par une partie de confiance et qu’il n’a pas été altéré. Les JWT sont largement utilisés comme jetons d’accès et jetons d’identité dans OAuth 2.0 et OpenID Connect.
Mon jeton ou mon secret quitte-t-il un jour le navigateur ?
Non. Le décodage et toute vérification de signature s’exécutent à 100 % côté client dans votre onglet — il n’y a pas de serveur, pas de compte, pas de journalisation et aucune requête réseau. Le jeton que vous collez ainsi que le secret ou la clé publique que vous fournissez restent en mémoire dans cette page et ne sont jamais transmis. Vous pouvez décoder des jetons hors ligne.
La signature est-elle réellement vérifiée — et comment ?
Oui, de façon optionnelle et locale. Collez un secret partagé pour un jeton HMAC (HS256 / HS384 / HS512) ou une clé publique pour un jeton asymétrique — RS256–512, PS256–512, ES256–512 ou EdDSA — et l’outil recalcule la signature sur les octets header.payload à l’aide de la Web Crypto API, directement dans votre navigateur, puis indique si elle est valide ou invalide. La clé peut être un bloc PEM « BEGIN PUBLIC KEY », un JWK seul ou un JWKS complet (la bonne clé est choisie d’après le kid du header). Si vous laissez la clé vide, il décode simplement sans vérifier la signature.
Cet outil peut-il aussi créer et signer un JWT ?
Oui. Passez à l’onglet « Encode & sign », modifiez le JSON du header et du payload, choisissez un algorithme et fournissez un secret (pour HS256/384/512) ou une clé privée PKCS8 / un JWK privé (pour RS, PS, ES ou EdDSA). Le jeton est signé en direct dans votre navigateur avec la Web Crypto API — rien n’est généré sur un serveur. Un onglet « Generate keys » permet en outre de créer des secrets HMAC de test et des paires de clés RSA / EC / Ed25519, exportées à la fois en PEM et en JWK.
Quels algorithmes de signature sont pris en charge ?
Les treize algorithmes de signature JWS que les navigateurs savent exécuter nativement : HS256, HS384 et HS512 (HMAC), RS256, RS384 et RS512 (RSASSA-PKCS1-v1_5), PS256, PS384 et PS512 (RSA-PSS), ES256, ES384 et ES512 (ECDSA sur P-256, P-384 et P-521), et EdDSA (Ed25519, dans les navigateurs qui le prennent en charge). Les jetons non signés alg:"none" sont décodés — avec un avertissement — mais jamais créés ici, et ES256K (secp256k1) n’est pas disponible dans la Web Crypto API.
Est-il sûr de générer des clés de signature dans un navigateur ?
Pour le développement et les tests, oui : les clés proviennent du générateur cryptographiquement sûr de la Web Crypto API, sont créées entièrement sur votre machine et ne sont jamais transmises ni stockées par cette page. Pour la production, générez et conservez plutôt vos clés dans le KMS, le HSM ou le gestionnaire de secrets de votre plateforme — un onglet de navigateur n’offre aucun stockage sécurisé, et tout ce qui s’affiche à l’écran peut se retrouver dans des captures d’écran ou l’historique du presse-papiers.
Que signifient les revendications exp, nbf et iat ?
Ce sont des revendications enregistrées standard exprimées au format NumericDate (secondes écoulées depuis l’epoch Unix). exp (expiration time) est l’instant après lequel le jeton doit être rejeté ; nbf (not before) est l’instant avant lequel il ne doit pas être accepté ; iat (issued at) correspond au moment où le jeton a été créé. Le décodeur convertit chacune en une heure UTC lisible et signale si le jeton est actuellement expiré ou pas encore valide.
Est-il prudent de coller ici un jeton de production ?
Le décodage a lieu uniquement dans votre navigateur, donc rien n’est transmis — mais un JWT reste un identifiant actif. Traitez-le comme un mot de passe : ne collez qu’un jeton que vous contrôlez, privilégiez un jeton à courte durée de vie ou de test, et rappelez-vous que le payload est simplement encodé en base64url, et non chiffré : quiconque détient le jeton peut donc en lire les revendications. Faites tourner ou révoquez un jeton si vous soupçonnez qu’il a été exposé quelque part. Cette prudence vaut doublement pour les chatbots IA : considérez tout jeton collé dans une fenêtre de chat comme exposé, et effectuez-en la rotation.
Les jetons JWT sont-ils chiffrés, ou seulement encodés ?
Les JWT signés standard ne sont pas chiffrés — le header et le payload sont uniquement encodés en base64url, si bien que quiconque possède le jeton peut en lire les revendications sans aucune clé. La signature prouve que le jeton n’a pas été altéré, mais elle n’en masque pas le contenu. Pour cette raison, vous ne devez jamais stocker de mots de passe, de données personnelles ou de secrets dans les revendications d’un JWT.
Peut-on décoder un JWT sans la clé secrète ?
Oui. La lecture du header et du payload ne nécessite aucune clé, car les données sont seulement encodées en base64url. Le secret ou la clé publique n’est nécessaire que pour vérifier la signature — afin de confirmer que le jeton provient bien de l’émetteur attendu. Ce décodeur vous permet d’inspecter les revendications que vous fournissiez ou non une clé.
Comment vérifier en ligne si un jeton JWT est expiré ?
Collez le jeton dans le JWT Decoder et regardez la ligne de la revendication exp. L’outil convertit l’horodatage Unix brut en une date UTC lisible et signale automatiquement le jeton comme expiré si l’heure actuelle a dépassé la valeur exp. Les revendications iat (issued at) et nbf (not before) sont également affichées avec leurs dates lisibles.
Le décodage d’un JWT vérifie-t-il ou valide-t-il le jeton ?
Non. Le décodage ne fait que révéler le contenu du header et du payload — il ne prouve pas que le jeton est authentique. Pour valider un jeton, vous devez vérifier sa signature à l’aide du secret ou de la clé publique de l’émetteur. Cet outil peut effectuer cette vérification localement dans le navigateur, mais pour les décisions d’autorisation, la signature doit toujours être vérifiée côté serveur avant d’accorder confiance à une quelconque revendication.
More free, private DevOps tools.
Le JWT Decoder & Encoder est l’un des outils de OpsCanopy — une canopée grandissante de validateurs, de convertisseurs et de testeurs basés sur le navigateur qui ne touchent jamais à un serveur.
Plus dans Sécurité
29 outils gratuits, tous utilisables hors ligne — opscanopy.com fonctionne sans inscription et sans rien téléverser.
Plus de sécurité et d’encodage : le générateur de hachage et l’ encodeur / décodeur Base64, ou parcourez le répertoire complet des outils.
Fourni tel quel pour votre commodité ; un JWT est un identifiant actif, manipulez et stockez donc toujours vos jetons de manière sécurisée. OpsCanopy est gratuit et ouvert.