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.
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
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
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
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.
secret: "password123" // guessable, low entropy
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.
{ "sub": "user_123", "role": "admin" } // no exp { "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.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
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 ?
Qu'est-ce qu'un générateur de JWT ?
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 ?
Est-il sûr de saisir mon secret ou ma clé privée ici ?
Quelle est la différence entre HS256 et RS256 ?
Quels algorithmes cet encodeur JWT prend-il en charge ?
Comment définir la réclamation exp (expiration) ?
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 ?
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 ?
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 ?
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é ?
Pourquoi ma signature RS256 ou ES256 échoue-t-elle ?
-----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 ?
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 ?
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. Outils connexes
Voir tous les outils →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.