Skip to content

Encodeur & Générateur JWT

Générateur & encodeur JWT gratuit en ligne. Construisez l'en-tête et la charge utile, signez avec HS256, RS256 ou ES256 instantanément. 100 % navigateur — votre secret et votre clé ne quittent jamais votre appareil.

Sans pistage Fonctionne dans le navigateur Gratuit
Charge utile (réclamations)
Insérer une réclamation enregistrée:
Secret
Signé localement dans votre navigateur — votre secret et votre clé privée ne quittent jamais votre appareil.
Suit le comportement de signature des RFC 7515/7518 avec une sortie contre-vérifiée par un vérificateur à clé publique indépendant — Équipe sécurité Go Tools · 11 juin 2026

Qu'est-ce qu'un encodeur JWT ?

Un encodeur JWT construit et signe cryptographiquement un JSON Web Token à partir d'un en-tête et d'une charge utile de réclamations. Un JWT, défini dans la RFC 7519, est constitué de trois sections encodées en Base64URL et jointes par des points : header.payload.signature. L'en-tête nomme l'algorithme de signature ; la charge utile transporte les réclamations (qui concerne le jeton, ce qu'il peut faire, quand il expire) ; et la signature est une preuve cryptographique, calculée sur l'en-tête et la charge utile avec un secret ou une clé privée, qui permet à un destinataire de détecter toute altération.

« JSON Web Token (JWT) est un format compact de représentation de réclamations destiné aux environnements à espace contraint comme les en-têtes HTTP Authorization et les paramètres de requête URI. » — RFC 7519, section 1

L'encodage est l'inverse du décodage. Un décodeur JWT lit les réclamations d'un jeton existant ; un encodeur prend les réclamations que vous fournissez et produit un tout nouveau jeton signé. L'étape de signature est ce qui distingue un vrai JWT d'un Base64 arbitraire — sans signature valide, aucun vérificateur n'acceptera le jeton. Cet outil signe avec l'API Web Crypto native du navigateur pour les familles HMAC (HS), RSA (RS, PS) et ECDSA (ES), donc toute l'opération se déroule sur votre appareil avec zéro dépendance et zéro appel réseau.

Les développeurs recourent constamment à un encodeur JWT : pour émettre un jeton qui exerce un point d'accès d'API protégé, pour reproduire la forme exacte des réclamations qu'émet un serveur OAuth afin de déboguer une anomalie, pour construire des fixtures pour les tests d'intégration, ou pour remettre à un coéquipier un jeton Bearer prêt à l'emploi pour une commande curl. Comme la charge utile est encodée, pas chiffrée, un JWT peut être transmis sur le réseau en toute sécurité mais ne doit jamais transporter de secrets — quiconque possède le jeton peut lire chaque réclamation, et seule la signature les empêche d'en modifier une.

Le travail avec les JWT se combine naturellement à d'autres outils pour développeurs. Après la signature, décodez le jeton pour confirmer ses réclamations, convertissez exp et iat entre le temps Unix et les dates humaines, ou calculez un hash SHA-256 lorsque vous avez besoin de la fonction de hachage sous-jacente sur laquelle repose le HMAC de HS256. Comme chaque segment de JWT est encodé en Base64URL, un outil Base64 est pratique lorsque vous inspectez un jeton à la main ; pour un examen approfondi de l'encodage, consultez notre guide des fondamentaux de Base64.

// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
  const b64url = (bytes) =>
    btoa(String.fromCharCode(...new Uint8Array(bytes)))
      .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
  const enc = (obj) =>
    b64url(new TextEncoder().encode(JSON.stringify(obj)));

  const header = { alg: 'HS256', typ: 'JWT' };
  const signingInput = `${enc(header)}.${enc(payload)}`;

  const key = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(secret),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
  const sig = await crypto.subtle.sign(
    'HMAC', key, new TextEncoder().encode(signingInput));

  return `${signingInput}.${b64url(sig)}`;
}

const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0....

Fonctionnalités clés

Générez & signez des JWT instantanément

Modifiez la charge utile et regardez le jeton signé se mettre à jour en temps réel — en-tête, charge utile et signature calculés à la volée. Pas de bouton Générer, pas d'aller-retour vers un serveur.

Couverture complète des algorithmes

Signez avec HS256/384/512, RS256/384/512, PS256/384/512 et ES256/384/512 — toutes les familles JWS courantes, toutes via l'API Web Crypto native du navigateur.

Les clés ne quittent jamais votre appareil

Votre secret et votre clé privée PKCS8 sont utilisés entièrement dans le navigateur. Rien n'est téléversé, journalisé ou stocké — sûr pour le développement et la réponse à un incident.

Assistants de réclamation rapide

Insérez iss, sub, aud, iat, nbf ou une exp d'une heure d'un seul clic — pas d'horodatages Unix manuels, pas d'erreurs de syntaxe.

Sortie codée par couleur

Le jeton signé est segmenté en en-tête, charge utile et signature avec des couleurs distinctes, afin que la structure soit évidente d'un coup d'œil et facile à copier.

Zéro dépendance

Construit uniquement sur l'API Web Crypto du navigateur et JSON — aucune bibliothèque externe, aucune télémétrie, aucun appel réseau d'aucune sorte.

Exemples

HS256 Session Token

{
  "sub": "user_123",
  "name": "Alice",
  "role": "admin",
  "iat": 1715000000,
  "exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>

Un jeton HMAC-SHA256 signé avec un secret partagé — la configuration la plus courante pour l'authentification de session sans état. Toute partie possédant le même secret peut le vérifier.

RS256 Access Token

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "90087165",
  "scope": "read:user write:post",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8)
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>

Un jeton d'accès de style OAuth signé avec RSA. Le jeton est signé avec votre clé privée et vérifié par quiconque possède la clé publique correspondante — idéal lorsque le vérificateur ne doit pas pouvoir émettre de jetons.

ES256 Compact Token

{
  "sub": "device-42",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>

Un jeton ECDSA sur la courbe P-256. Les signatures ES256 sont bien plus courtes que celles de RSA tout en offrant une sécurité équivalente, ce qui garde le jeton petit pour les environnements contraints.

Comment utiliser

  1. 1

    Modifiez les réclamations de la charge utile

    Écrivez les réclamations dont votre jeton a besoin en JSON dans l'éditeur de charge utile. Utilisez les puces de réclamation rapide pour insérer iss, sub, aud, iat, nbf ou une exp d'une heure sans taper d'horodatages.

  2. 2

    Choisissez l'algorithme & saisissez la clé

    Choisissez un algorithme de signature. Pour HS256/384/512, saisissez un secret ; pour les algorithmes RS, PS ou ES, collez une clé privée PEM PKCS8. Le jeton est signé localement à mesure que vous tapez.

  3. 3

    Copiez le JWT signé

    Le jeton signé apparaît instantanément, codé par couleur par segment. Cliquez sur Copier pour l'insérer dans un en-tête Authorization, une commande curl ou un test. Votre clé n'a jamais quitté votre navigateur.

Common Errors

Utiliser un secret HMAC faible

La sécurité de HS256 dépend entièrement de l'entropie du secret. Un secret court ou devinable permet aux attaquants de le forcer par force brute et de forger des jetons. Utilisez au moins 256 bits d'aléa.

✗ Incorrect
secret: "password123"  // guessable, low entropy
✓ Correct
secret: base64(crypto.randomBytes(32))  // >=256 random bits

Omettre la réclamation exp

Un jeton sans exp n'expire jamais. S'il fuit, il n'y a pas de point de révocation naturel. Définissez toujours une expiration adaptée au type de jeton.

✗ Incorrect
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Correct
{ "sub": "user_123", "role": "admin", "exp": 1715003600 }

Coller une clé PKCS1 au lieu de PKCS8

L'API Web Crypto n'importe que les clés privées PKCS8. Une clé RSA PKCS1 traditionnelle échoue à l'importation — convertissez-la d'abord.

✗ Incorrect
-----BEGIN RSA PRIVATE KEY-----  // PKCS1, not supported
✓ Correct
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem

Cas d'usage courants

Générer des jetons pour les tests d'API
Générez un jeton Bearer HS256 en quelques secondes pour exercer un point d'accès protégé depuis curl, Postman ou un test d'intégration.
Reproduire des jetons OAuth & OIDC
Construisez un jeton RS256 ou ES256 qui reflète celui qu'émet votre serveur d'autorisation, afin de déboguer les incohérences de réclamation et d'audience.
Créer des fixtures de test
Produisez des jetons signés déterministes pour les tests unitaires et d'intégration sans mettre en place un serveur d'authentification complet.
Déboguer les échecs d'autorisation
Recréez la forme du jeton d'un client — émetteur, audience, scope, expiration — pour trouver pourquoi un backend le rejette.
Valider un vérificateur
Signez des jetons avec une clé connue pour confirmer que votre middleware de vérification accepte les jetons valides et rejette ceux qui ont été altérés.
Prototyper des flux d'authentification
Remettez à vos coéquipiers des jetons prêts à l'emploi pendant la mise en place d'une nouvelle connexion, d'un microservice ou d'un appel de service à service.

Détails techniques

Conforme aux RFC 7519 / 7515 / 7518
Produit des jetons JWS conformes à la RFC 7519 (JWT), à la RFC 7515 (JWS) et à la RFC 7518 (JWA), avec les identifiants d'algorithme enregistrés dans l'en-tête.
Signature native Web Crypto
Signe via crypto.subtle pour HMAC, RSASSA-PKCS1-v1_5, RSA-PSS et ECDSA. Les signatures ECDSA sont émises sous forme de r||s brut, exactement comme JWS l'exige.
Base64URL, zéro dépendance
L'en-tête et la charge utile sont encodés en Base64URL avec l'alphabet sûr pour les URL (RFC 4648), sans remplissage. Aucune bibliothèque externe, aucun appel réseau, aucune télémétrie.

Bonnes pratiques

Toujours définir une expiration
Incluez une réclamation exp afin qu'un jeton ayant fuité cesse d'être valide. Des durées de vie courtes réduisent le rayon d'impact — des minutes pour les jetons d'accès, pas des jours.
Garder les secrets hors de la charge utile
Une charge utile JWT est lisible par quiconque possède le jeton. Mettez-y des identifiants et des scopes ; jamais de mots de passe, de clés d'API ni d'informations personnelles complètes.
Signer côté serveur en production
Utilisez cet outil pour les tests et le débogage. Dans les vrais systèmes, signez les jetons sur le serveur avec une bibliothèque maintenue et une clé issue de votre gestionnaire de secrets.

Questions fréquentes

Comment générer un JWT en ligne ?
Modifiez le JSON de la charge utile dans la zone ci-dessus, choisissez un algorithme de signature (HS256 est la valeur par défaut et ne nécessite qu'un secret), et saisissez votre secret ou collez une clé privée PEM PKCS8. Le jeton signé apparaît instantanément, avec les segments en-tête, charge utile et signature codés par couleur, afin que vous puissiez copier l'ensemble d'un seul clic. La signature s'exécute entièrement dans votre navigateur grâce à l'API Web Crypto native — il n'y a pas de bouton Générer à attendre ni de requête vers un serveur, donc il est sûr de signer des jetons avec de vraies clés pendant le développement.
Qu'est-ce qu'un générateur de JWT ?
Un générateur de JWT est un outil qui construit et signe cryptographiquement un JSON Web Token à partir d'un en-tête et d'une charge utile de réclamations, produisant une chaîne header.payload.signature que vous pouvez utiliser comme jeton Bearer. C'est l'inverse d'un décodeur JWT : au lieu de lire un jeton existant, il en crée un nouveau signé avec votre secret (HS256) ou votre clé privée (RS256/ES256). Ce générateur s'exécute entièrement dans votre navigateur, donc le jeton est produit instantanément et votre clé de signature ne quitte jamais votre appareil.
Ce générateur de JWT est-il gratuit et sûr à utiliser ?
Oui — il est entièrement gratuit, sans inscription, sans publicité et sans suivi. Il est sûr car toute la signature s'effectue localement dans votre navigateur via l'API Web Crypto : votre charge utile, votre secret et votre clé privée ne sont jamais téléversés, journalisés ou stockés, et l'outil n'effectue aucune requête réseau. Cela le rend adapté même lorsque vous travaillez avec des clés sensibles, bien que l'utilisation de clés de test jetables reste l'habitude la plus sûre.
Est-il sûr de saisir mon secret ou ma clé privée ici ?
Oui. La signature s'effectue localement dans votre navigateur ; votre secret et votre clé privée ne sont jamais envoyés à un serveur, jamais journalisés, jamais stockés, et jamais utilisés à des fins analytiques. Il n'y a ni cookies ni suivi. C'est important car une clé de signature JWT peut émettre des informations d'identification valides — la coller dans un outil distant équivaudrait à remettre les clés de votre système d'authentification. Comme tout s'exécute côté client, cet encodeur peut être utilisé en toute sécurité avec des clés de production, mais vous devriez toujours préférer des clés jetables ou de test lorsque c'est possible.
Quelle est la différence entre HS256 et RS256 ?
HS256 (HMAC-SHA256) utilise un seul secret partagé pour à la fois signer et vérifier. C'est simple et rapide, mais toute partie capable de vérifier le jeton peut aussi en créer un, donc le secret doit rester uniquement sur des serveurs de confiance. RS256 (RSA-SHA256) utilise une paire de clés : vous signez avec une clé privée et les autres vérifient avec la clé publique. Cela vous permet de distribuer la clé publique librement — aux applications clientes, aux services partenaires ou à un point d'accès JWKS — sans donner à quiconque la possibilité de forger des jetons. Utilisez HS256 pour les systèmes symétriques à propriétaire unique ; utilisez RS256 ou ES256 lorsque les vérificateurs ne doivent pas pouvoir émettre de jetons.
Quels algorithmes cet encodeur JWT prend-il en charge ?
Il signe avec HS256, HS384, HS512 (HMAC avec un secret partagé), RS256, RS384, RS512 (RSA PKCS#1 v1.5), PS256, PS384, PS512 (RSA-PSS) et ES256, ES384, ES512 (ECDSA sur P-256, P-384 et P-521). Tous sont produits avec l'API Web Crypto native du navigateur, donc il n'y a aucune bibliothèque tierce et rien ne quitte votre machine. Les algorithmes HMAC prennent un secret en texte ou en Base64 ; les familles RSA et ECDSA prennent une clé privée PEM PKCS8.
Comment définir la réclamation exp (expiration) ?
Ajoutez une réclamation exp à la charge utile sous forme d'horodatage Unix en secondes — par exemple "exp": 1999999999. Le moyen le plus rapide est la puce exp +1h sous la charge utile, qui insère une expiration une heure à partir de maintenant. Vous pouvez aussi ajouter iat (issued-at) et nbf (not-before) de la même façon. Rappelez-vous que exp est en secondes, pas en millisecondes, et que les vérificateurs le comparent à leur propre horloge, donc gardez les heures des serveurs synchronisées pour éviter les rejets prématurés. Pour convertir une date humaine en horodatage Unix, utilisez notre convertisseur de timestamp Unix.
Comment obtenir une clé privée PEM PKCS8 pour RS256 ou ES256 ?
Pour RSA : openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Pour ECDSA P-256 : openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Les deux commandes émettent un bloc PEM PKCS8 commençant par -----BEGIN PRIVATE KEY-----, ce qui est exactement ce que cet outil attend. Collez le bloc entier, y compris les lignes d'en-tête et de pied de page. La clé publique correspondante — utilisée pour vérifier le jeton — peut être dérivée avec openssl pkey -in private.pem -pubout.
Comment vérifier le jeton que je viens de générer ?
Collez-le dans notre décodeur JWT pour confirmer que l'en-tête et la charge utile se décodent comme prévu. Pour vérifier la signature, utilisez votre serveur ou un SDK avec la bonne clé : jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) dans Node.js, PyJWT.decode(token, key, algorithms=['RS256']) dans Python, ou jwt.Parse(token, keyFunc) dans Go. Ne vérifiez jamais avec une liste d'algorithmes vide ni avec verify_signature=False en production — épinglez toujours l'algorithme exact que vous attendez.
Que dois-je mettre dans la charge utile ?
Gardez-la minimale. Les réclamations enregistrées de la RFC 7519 sont iss (émetteur), sub (sujet — généralement un identifiant utilisateur), aud (audience), exp (expiration), nbf (not before), iat (issued at) et jti (identifiant de jeton). À côté de celles-ci, vous pouvez ajouter des réclamations d'application comme role, scope ou email. Ne mettez pas de secrets dans la charge utile — un JWT est encodé, pas chiffré, donc quiconque possède le jeton peut lire chaque réclamation. Gardez les jetons sous environ 4 Ko pour qu'ils tiennent dans les en-têtes Authorization et les cookies.
Un JWT est-il chiffré ?
Non. Un JWT signé standard (un JWS) est encodé en Base64URL, pas chiffré. La signature prouve que le jeton n'a pas été altéré et qu'il a été émis par quelqu'un possédant la clé, mais l'en-tête et la charge utile sont entièrement lisibles par quiconque possède le jeton. Si vous avez besoin que la charge utile elle-même soit confidentielle, il vous faut un JWE (JWT chiffré), qui est un format différent. Cet outil produit des jetons JWS signés, le type utilisé pour la grande majorité des flux d'authentification et d'autorisation.
Pourquoi ma signature RS256 ou ES256 échoue-t-elle ?
Les causes les plus courantes sont : (1) la clé n'est pas au format PKCS8 — convertissez une clé traditionnelle -----BEGIN RSA PRIVATE KEY----- (PKCS1) avec openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem ; (2) la courbe ne correspond pas à l'algorithme — ES256 a besoin d'une clé P-256, ES384 a besoin de P-384, ES512 a besoin de P-521 ; (3) vous avez collé une clé publique ou un certificat au lieu de la clé privée ; ou (4) la clé est chiffrée avec une phrase secrète, que l'API Web Crypto ne peut pas importer directement. Déchiffrez-la d'abord avec openssl pkey et collez le bloc PKCS8 non chiffré.
Cet outil prend-il en charge le jeton non signé alg:none ?
Non, et délibérément. Un jeton alg:none n'a pas de signature, ce qui signifie que n'importe qui peut en forger un — c'est la racine d'une vulnérabilité classique de contournement d'authentification JWT. Comme tout l'intérêt d'un encodeur est de produire un jeton signé, cet outil ne propose que de vrais algorithmes de signature. Si vous étudiez alg:none pour de la recherche en sécurité, vous pouvez en construire un à la main en encodant l'en-tête et la charge utile en Base64URL et en laissant le segment de signature vide — le jeton se termine quand même par un point final (header.payload.) — mais vous ne devez jamais accepter un tel jeton en production.
Puis-je générer un JWT dans le code à la place ?
Oui. Dans Node.js : jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). Dans Python : jwt.encode(payload, key, algorithm='RS256') avec PyJWT. Dans Go : jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Cet outil est le moyen le plus rapide de produire un jeton pour un test rapide, une requête curl ou une fixture — mais dans le code applicatif, vous devriez générer les jetons côté serveur avec une bibliothèque maintenue et une clé chargée depuis votre gestionnaire de secrets, jamais codée en dur.

Décodeur JWT

Outils de sécurité

Décodez des jetons JWT en ligne avec notre décodeur JWT gratuit. Inspectez en-tête, charge utile, signature, expiration et revendications. 100 % navigateur — votre jeton ne quitte jamais votre appareil. Sans inscription ni suivi.

Générateur de Hash MD5 en Ligne et Vérificateur de Checksum

Outils de sécurité

Générez des hashes MD5, SHA-256, SHA-1 et SHA-512 dans votre navigateur. Hachez texte ou fichiers, vérifiez les checksums en un clic. 100 % privé.

Générateur de Mot de Passe — Sécurisé & Personnalisable

Outils de sécurité

Générez des mots de passe forts et sécurisés — gratuit, 100 % dans votre navigateur. Personnalisez longueur et caractères, générez jusqu'à 50.

Générateur SHA-1 (160 bits, usage hérité)

Outils de sécurité

Générez des hashes SHA-1 dans votre navigateur — sortie hex de 40 caractères, sans envoi. Outil hérité pour les empreintes Git, contrôles de certificats anciens et audits de migration. Données jamais transmises.

Générateur de Hash SHA-256 & Outil Checksum

Outils de sécurité

Générez des hashes SHA-256 en ligne gratuitement. Hachez texte ou fichiers dans votre navigateur, vérifiez les checksums, copiez la sortie hex de 64 caractères. Sans inscription ; données jamais transmises.

Générateur SHA-3 (Keccak SHA3-256 NIST)

Outils de sécurité

Générez des hashes SHA-3 en ligne gratuitement. Construction sponge NIST FIPS 202 — la norme post-SHA-2. Sortie SHA3-256 en 64 hex. Navigateur uniquement via js-sha3 en chargement différé ; zéro envoi.