Comparatif · Mis à jour le 2026-05-05
Les outils JWT de TaskKit vs jwt.io
Les deux outils décodent et vérifient des JSON Web Tokens entièrement dans le navigateur. Les différences pratiques sont dans ce que chacun charge à côté de l'éditeur, dans la manière dont ils se comportent face à une signature lente ou malveillante, et dans une poignée de fonctionnalités que l'un a et que l'autre n'a pas. Le résumé ci-dessous est mesuré ; le reste de la page montre le tableau complet.
Résumé
- Confidentialité : TaskKit fait 0 requête tierce au premier paint. jwt.io en fait 10 (consent OneTrust, Adobe Experience Platform, Google Tag Manager).
- Algorithmes et formats de clé : identiques sur les deux pour la spec JWT — HS / RS / PS / ES / EdDSA, JWK et JWKS complet (avec correspondance par
kid),x5c, PEM PKCS#1 / PKCS#8 / X.509. TaskKit accepte en plus une clé EdDSA en hex brut ou en string base64url. - Sécurité runtime : TaskKit vérifie les signatures dans un Web Worker avec un timeout de 2 secondes ; un token hostile ne peut pas bloquer la page. jwt.io vérifie sur la thread principale.
- Là où jwt.io est plus fort : un répertoire de bibliothèques curé, une page d'introduction extensive et des liens par claim vers les RFCs correspondants.
- Ce que TaskKit laisse de côté délibérément : le téléchargement automatique d'un JWKS depuis une URL (ce serait un appel sortant). Ouvrir le décodeur de TaskKit.
La confidentialité, mesurée
Les deux outils affirment faire leur travail dans le navigateur. Cette affirmation ne vaut quelque chose que si tu peux la vérifier. Chaque page ci-dessous a été chargée le 2026-05-05 dans un profil Chrome propre avec le cache effacé, et toutes les requêtes réseau sortantes ont été comptées avant la moindre frappe au clavier. Le même test tourne contre le décodeur JWT de TaskKit.
| Réseau au premier paint | jwt.io | TaskKit |
|---|---|---|
| Requêtes vers des tiers | 10 | 0 |
| SDK de consentement OneTrust | Chargé (5 appels) | Non |
| Adobe Experience Platform / DTM | Chargé (3 appels) | Non |
| Google Tag Manager | Chargé | Non |
| Geo-lookup | Endpoint geo de onetrust.com | Non |
| Bannière de consentement cookies | Oui, bloque le paint initial jusqu'à confirmation | Aucune |
| Login obligatoire pour les fonctionnalités avancées | Non | Non |
Chacun de ces appels se déclenche avant que tu colles un token. Aucun n'est nécessaire pour que la page décode un JWT — c'est de l'analytics, du tag management et du flux de consentement. TaskKit n'envoie rien de tout ça. Plus sur la manière dont TaskKit traite tes données.
Matrice de fonctionnalités
Les deux outils couvrent quasiment toute la spec JWT. Ci-dessous, ce que chacun accepte aujourd'hui, regroupé par catégorie.
| Capacité | jwt.io | TaskKit |
|---|---|---|
| Algorithmes | ||
| HS256 / 384 / 512 | Oui | Oui |
| RS256 / 384 / 512 | Oui | Oui |
| PS256 / 384 / 512 | Oui | Oui |
| ES256 / 384 / 512 | Oui | Oui |
| EdDSA (Ed25519) | Oui | Oui (via @noble/ed25519) |
| Formats de clé | ||
| JWK (isolé) | Oui | Oui |
| JWKS avec lookup par kid | Oui | Oui |
| PEM SPKI (BEGIN PUBLIC KEY) | Oui | Oui |
| PEM PKCS#1 RSA (BEGIN RSA PUBLIC KEY) | Partiel | Oui (lecteur ASN.1 maison) |
| Certificat X.509 (BEGIN CERTIFICATE) | Oui | Oui (SPKI extrait automatiquement) |
| Header x5c utilisé automatiquement | Oui | Oui (chaîne non validée, indiqué explicitement) |
| EdDSA brute en hex / base64url | Non | Oui (64 hex ou 43 base64url) |
| Sécurité de la vérification | ||
| Isolement Web Worker | Non | Oui |
| Timeout contre le backtracking catastrophique | Non | Oui (2s) |
| alg:none rejeté avec explication | Oui | Oui |
| Encodeur | ||
| Édition header / payload | Oui | Oui |
| Champs de formulaire pour les claims enregistrés | Non | Oui |
| Clés privées PKCS#1 acceptées directement | Non | Oui (enveloppées automatiquement en PKCS#8) |
| EdDSA privée en hex / base64url | Non | Oui |
| Token d'exemple en un clic | Oui | Oui (iat/exp courants calculés en direct) |
| Confidentialité / Runtime | ||
| Traitement intégral dans le navigateur | Oui | Oui |
| Zéro requête tierce | Non | Oui |
| Bannière de consentement cookies | Oui | Aucune |
| Cloudflare Web Analytics optionnel (privacy-preserving, désactivé par défaut) | — | Off sauf si l'opérateur l'active avec un token |
Sécurité runtime
Le verify de WebCrypto est rapide avec des signatures bien
formées. Avec une entrée hostile, il ne l'est pas. Des exposants RSA
pathologiques, des clés surdimensionnées, des signatures Ed25519
corrompues ou un JWKS construit avec mauvaise intention peuvent occuper
le vérificateur assez longtemps pour bloquer l'onglet — un risque réel
quand le token devant toi vient d'une source non fiable.
TaskKit exécute la vérification de signature dans un Web Worker dédié
avec un timeout wall-clock de 2 secondes. Si le worker dépasse le
budget, il est terminé et la page affiche une erreur au lieu de figer.
jwt.io vérifie sur la thread principale, donc une signature lente est
une page lente. La même architecture protège le testeur de regex de
TaskKit (contre le backtracking type (a+)+b) et le
formateur JSON (contre les parses de plusieurs mégaoctets).
Détails de l'éditeur qui comptent au quotidien
- Coloration tricolore dans l'entrée. Les deux outils colorent les trois segments du token, mais jwt.io ne le fait que dans un panneau « Decoded » en lecture seule. TaskKit colore les segments directement dans le textarea où tu édites, ce qui rend plus facile de repérer un point mal collé.
- Étiquettes de claim toujours visibles. Les noms
lisibles de jwt.io (
iat → "Issued at") sont derrière un onglet « Claims Breakdown ». TaskKit les affiche en ligne, sous le payload, pour que les données et les descriptions soient visibles d'un seul coup d'œil. - Traitement honnête de
x5c. Quand le headerx5cd'un token est utilisé pour vérifier, le chip de résultat de TaskKit dit « vérifié avec le certificat x5c du header du token (chaîne non validée) », sans suggérer de confiance bout-en-bout. Valider la chaîne jusqu'à une autorité racine demanderait de télécharger les racines CA et reste hors du périmètre d'un outil purement navigateur. - Toggle base64url pour HMAC. Certaines clés HMAC sont
stockées comme bytes encodés en base64url (par exemple, une clé
octd'un JWKS avec un champk). Un petit toggle à côté du chip d'algorithme bascule l'entrée du secret entre string littérale et bytes base64url, pour que tu n'aies pas à décoder à la main. - Saisie de clé EdDSA brute. Colle un Ed25519 en 64 caractères hex, 43 caractères base64url, JWK ou PEM. jwt.io n'attend que PEM ou JWK.
Là où jwt.io est plus fort
Un comparatif utile n'est pas un pitch unilatéral. Trois choses que jwt.io fait clairement mieux aujourd'hui :
- Répertoire de bibliothèques. Un index curé et cherchable de bibliothèques JWT par langage. Si tu cherches une implémentation pour un service, le répertoire de jwt.io est la bonne adresse.
- Introduction extensive. Une page canonique « Qu'est-ce qu'un JWT » qui explique le concept avec assez de profondeur pour la transmettre de bout en bout. Le texte explicatif sous le décodeur de TaskKit est plus court et centré sur l'outil.
- Liens par claim vers le RFC. Chaque claim enregistré renvoie à la section du RFC qui le définit. Un détail, mais utile quand tu vérifies la conformité avec la spec.
Ce que TaskKit laisse de côté délibérément
Une garantie de privacy est plus facile à tenir s'il n'y a pas de portes dérobées installées. Quelques fonctionnalités proposées par d'autres outils manquent ici exprès.
- Auto-discovery OIDC. Certains outils te laissent
coller une URL d'issuer et téléchargent silencieusement
.well-known/openid-configurationpour récupérer les clés. C'est une requête sortante depuis ton navigateur vers un tiers — et l'URL elle-même peut révéler des détails du déploiement. TaskKit exige que tu colles toi-même le JWKS. - Champ « JWKS par URL ». Même justification. Un
curld'une ligne dans ton terminal bat un fetch sortant depuis la page que tu es en train de déboguer. - Analytics par défaut. Le code supporte un token Cloudflare Web Analytics optionnel (privacy-preserving), mais il est désactivé sauf si l'opérateur l'active explicitement. La version hébergée sur taskkit.net l'a aussi désactivé.
- Comptes et historique côté serveur. Sauvegarder et partager passent par des fragments d'URL quand c'est supporté. Rien n'est stocké sur un serveur parce qu'il n'y a pas de serveur.
Essaie les outils JWT de TaskKit
Décodeur JWT
Colle un token, inspecte les claims et vérifie la signature contre une clé, un JWKS ou un certificat x5c embarqué.
Encodeur JWT
Signe des tokens en local avec HS, RS, PS, ES ou EdDSA. La clé privée reste dans l'onglet.
Méthodologie
Testé le 2026-05-05 sur Chrome avec cache et cookies first-party effacés. Les requêtes réseau ont été comptées entre le chargement de la page et la première frappe au clavier. La matrice de fonctionnalités reflète le comportement des deux outils à cette date et est revisitée quand l'un d'eux publie un changement notable.
jwt.io est une marque de son détenteur respectif. Cette page n'est affiliée ni soutenue par jwt.io.