
Voici un fait qui surprend beaucoup de développeurs : chaque JWT reçu d’un serveur d’authentification n’est pas chiffré par défaut — il est seulement signé. Ça signifie que le header et le payload sont du texte en clair encodé en Base64, lisible par n’importe qui. La seule chose qui protège l’intégrité du token, c’est la signature, qui prouve qu’il n’a pas été altéré.
En sachant ça, on pourrait s’attendre à ce que chaque développeur ait un moyen rapide d’inspecter un JWT à tout moment. Et pourtant, quand un mystérieux 401 Unauthorized surgit à 2h du matin, le réflexe le plus courant, c’est d’ouvrir un nouveau fichier, écrire un atob(), splitter sur les points et essayer de parser le JSON manuellement — alors qu’une option bien plus rapide existe.
JWT.io est précisément cette option. Un outil d’une seule page qui fait une seule chose bien : tu colles un JWT et tu vois immédiatement son contenu, tu vérifies sa signature et tu comprends sa structure. Pas de compte. Pas d’installation. Tout le décodage se passe dans ton navigateur.
C’est quoi un JSON Web Token ?
Avant de regarder l’outil, autant comprendre ce qu’on décode exactement.
Un JSON Web Token est une chaîne compacte et compatible URL qui représente des claims entre deux parties. En pratique, c’est ce que ton serveur te donne après le login, et que tu inclus dans chaque requête suivante comme preuve d’identité. La plupart des APIs REST et des single-page apps les utilisent.
Un JWT a exactement trois parties, séparées par des points :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
- Header (premier segment) : algorithme et type de token — ex.
{"alg": "HS256", "typ": "JWT"} - Payload (deuxième segment) : les claims eux-mêmes — ID utilisateur, rôles, expiration, tout ce que ton app y met
- Signature (troisième segment) : signature HMAC ou RSA sur les deux premiers segments
Le header et le payload sont encodés en Base64URL, pas chiffrés. N’importe qui qui intercepte le token peut lire ces deux parties. C’est la signature qui empêche la falsification — sans la clé secrète, impossible de forger une signature valide.
C’est pourquoi pouvoir lire rapidement un JWT pendant le développement et le débogage est important : tu veux confirmer que les bons claims sont dans le payload, vérifier le timestamp d’expiration (exp), confirmer que l’algorithme correspond à ce que ton backend attend, et plus encore.
Comment fonctionne JWT.io
Visite jwt.io et tu arrives directement sur le debugger — pas de landing page, pas de marketing, pas de formulaire d’inscription. À gauche, une grande zone de texte pour ton token encodé. À droite, trois panneaux colorés qui affichent le header décodé, le payload et la section de vérification de signature.
Colle un JWT dans le panneau gauche et le résultat décodé apparaît instantanément. Les panneaux utilisent un code couleur : rouge/rose pour la partie header, violet pour le payload, bleu pour la signature — correspondant à la couleur de chaque segment séparé par un point dans l’entrée.
Le panneau payload affiche tes claims en JSON formaté, lisible d’un coup d’œil :
{
"sub": "user_8f3a2c",
"email": "[email protected]",
"role": "admin",
"iat": 1742568000,
"exp": 1742654400
}
Pour la vérification de signature, tu entres ton secret (pour les algorithmes HMAC comme HS256) ou tu colles une clé publique (pour RS256, ES256). L’outil affiche un indicateur « Signature Verified » ou « Invalid Signature ». C’est vraiment utile en travail d’intégration — si tu débogues un appel entre services et dois confirmer qu’un token a été signé avec la bonne clé, c’est fait en quelques secondes.
Pourquoi le traitement côté client est important
Coller des tokens d’authentification dans des outils web aléatoires, c’est un vrai risque de sécurité — et les développeurs ont raison d’être prudents. Beaucoup d’« outils en ligne » pour décoder les JWTs envoient ton token à un serveur, le logguent et l’exposent potentiellement.
JWT.io, c’est différent. Tout le décodage et la vérification s’exécutent dans ton navigateur en JavaScript. Aucune donnée n’est transmise à un serveur externe quand tu décoders un token. Tu peux le vérifier toi-même : ouvre l’onglet réseau du navigateur, colle un token et observe — aucune requête réseau ne part.
Ce n’est pas une affirmation marketing ; c’est un comportement vérifiable. L’outil est open source, et l’architecture de traitement côté client signifie que tes tokens restent sur ta machine.
Cela dit, il y a une note de sécurité pratique à garder en tête : évite de coller des tokens de production contenant des données sensibles d’utilisateurs dans n’importe quel outil web depuis un ordinateur partagé ou non de confiance. Pour les tokens de développement, staging ou test, JWT.io est parfaitement sûr.
Algorithmes supportés
JWT.io supporte toute la gamme d’algorithmes que tu rencontreras dans les systèmes réels :
| Algorithme | Type | Usage courant |
|---|---|---|
| HS256 / HS384 / HS512 | HMAC + SHA | Apps mono-service, secret partagé |
| RS256 / RS384 / RS512 | Signature RSA | Systèmes distribués, vérification par clé publique |
| ES256 / ES384 / ES512 | ECDSA | Tokens compacts, IoT |
| PS256 / PS384 / PS512 | RSA-PSS | Exigences de haute sécurité |
Pour les algorithmes HMAC, tu fournis le secret partagé pour vérifier la signature. Pour les algorithmes asymétriques (RS*, ES*, PS*), tu colles la clé publique au format PEM. L’outil gère le parsing et affiche le résultat immédiatement.
Cas d’usage pratiques
Débogage des échecs d’auth : Quand un utilisateur signale qu’il ne peut pas accéder à une route protégée, la première question est souvent « qu’est-ce que son token dit vraiment ? » Le décoder sur JWT.io prend trois secondes. Tu peux vérifier si le token a expiré, si le claim de rôle est correctement défini et si l’audience (aud) correspond à ce qu’attend ton API.
Tests d’intégration : Si tu te connectes à un fournisseur d’identité tiers — Auth0, Okta, Cognito, Keycloak — les tokens qu’ils émettent peuvent contenir des claims que tu dois mapper à ton propre modèle utilisateur. Décoder un token exemple te permet de voir exactement quels champs sont présents avant d’écrire la moindre ligne de code.
Apprentissage et onboarding : Pour les développeurs qui découvrent l’authentification, JWT.io est un excellent outil pédagogique. Voir le payload décodé à côté de la chaîne encodée rend l’encodage Base64URL concret plutôt qu’abstrait. C’est l’un de ces outils où le moment « ah, je comprends ! » arrive dès la première utilisation.
Vérifications rapides : Avant de déployer une modification dans ton code de génération de tokens, colle un exemple de sortie dans JWT.io pour confirmer que le payload contient les bons champs dans le bon format.
Pour les équipes faisant du travail API intensif — créer des requêtes, tester des endpoints, gérer des collections — Hoppscotch se marie bien avec JWT.io. Tu peux récupérer un token d’un endpoint d’auth dans Hoppscotch, le décoder dans JWT.io pour vérifier les claims, puis utiliser le token dans les requêtes suivantes. Les deux outils se complètent dans un workflow entièrement basé sur le navigateur.
Comparer les approches
Avant que JWT.io existe (ou quand les développeurs ne le connaissent pas), plusieurs alternatives émergent :
Décodage Base64 manuel : Splitter le token sur ., exécuter atob() sur chaque segment dans la console du navigateur, parser le JSON. Ça marche, mais c’est plus long, gérer les variantes Base64 compatibles URL est maladroit, et il n’y a pas de vérification de signature.
Écrire un script rapide : Importer une lib JWT et écrire un appel de vérification, c’est bien pour du code de production, mais excessif pour une session de débogage rapide. Ça nécessite aussi un environnement local configuré.
Autres décodeurs en ligne : Plusieurs existent, mais beaucoup ne vérifient pas les signatures, ne supportent pas la gamme complète d’algorithmes, ou envoient ton token à un backend. La combinaison de JWT.io — support complet des algorithmes, traitement côté client, sortie visuelle claire — est difficile à battre.
Pour les tâches d’encodage et de transformation de données polyvalentes — Base64, hexadécimal, encodage URL, et des centaines d’autres — IT Tools mérite d’être dans tes favoris aux côtés de JWT.io. C’est un autre outil sans login, basé sur le navigateur, avec une large gamme d’utilitaires utiles pour le développement quotidien.
Une note sur la spécification JWT
JWT est défini dans RFC 7519, avec les algorithmes de signature couverts dans RFC 7515 (JWS). Si tu dois comprendre pourquoi un claim particulier existe ou comment l’encodage fonctionne au niveau des octets, ces documents sont la source de référence.
La spécification est claire sur un point : JWT est un format, pas un protocole de sécurité. Utiliser des JWTs ne rend pas automatiquement ton authentification sécurisée. Les durées d’expiration courtes, la vérification correcte de la signature et la gestion prudente du champ alg (pour prévenir les attaques par confusion d’algorithme) restent de ta responsabilité. JWT.io t’aide à inspecter et vérifier les tokens rapidement, mais c’est comprendre la spec qui prévient les bugs qui comptent.
Au-delà du debugger
Le site JWT.io maintient également une liste de bibliothèques JWT pour tous les principaux langages de programmation — Node.js, Python, Go, Java, Ruby, PHP, .NET et bien d’autres. Chaque entrée de bibliothèque inclut des informations vérifiées sur les algorithmes supportés. Si tu choisis une bibliothèque pour un nouveau projet, cette page de référence peut t’éviter des allers-retours vers la documentation.
Le debugger est l’attraction principale, mais le répertoire de bibliothèques est une ressource secondaire utile quand tu mets en place la gestion JWT de zéro.
La prochaine fois que tu fixes une chaîne de token opaque en te demandant ce qu’il y a dedans, colle-la dans jwt.io. Le résultat décodé répond généralement à ta question en moins de dix secondes. Pas de compte, rien à installer, rien d’envoyé à un serveur.
À mesure que les services migrent vers l’authentification par token et les systèmes distribués où la confiance doit être établie sans sessions partagées, des outils comme JWT.io deviennent une partie du kit de travail quotidien plutôt qu’une référence occasionnelle. Mets-le en favoris maintenant — tu l’utiliseras plus tôt que tu ne le penses.