TK TaskKit
Comparatifs

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 tiers100
SDK de consentement OneTrustChargé (5 appels)Non
Adobe Experience Platform / DTMChargé (3 appels)Non
Google Tag ManagerChargéNon
Geo-lookupEndpoint geo de onetrust.comNon
Bannière de consentement cookiesOui, bloque le paint initial jusqu'à confirmationAucune
Login obligatoire pour les fonctionnalités avancéesNonNon

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 / 512OuiOui
RS256 / 384 / 512OuiOui
PS256 / 384 / 512OuiOui
ES256 / 384 / 512OuiOui
EdDSA (Ed25519)OuiOui (via @noble/ed25519)
Formats de clé
JWK (isolé)OuiOui
JWKS avec lookup par kidOuiOui
PEM SPKI (BEGIN PUBLIC KEY)OuiOui
PEM PKCS#1 RSA (BEGIN RSA PUBLIC KEY)PartielOui (lecteur ASN.1 maison)
Certificat X.509 (BEGIN CERTIFICATE)OuiOui (SPKI extrait automatiquement)
Header x5c utilisé automatiquementOuiOui (chaîne non validée, indiqué explicitement)
EdDSA brute en hex / base64urlNonOui (64 hex ou 43 base64url)
Sécurité de la vérification
Isolement Web WorkerNonOui
Timeout contre le backtracking catastrophiqueNonOui (2s)
alg:none rejeté avec explicationOuiOui
Encodeur
Édition header / payloadOuiOui
Champs de formulaire pour les claims enregistrésNonOui
Clés privées PKCS#1 acceptées directementNonOui (enveloppées automatiquement en PKCS#8)
EdDSA privée en hex / base64urlNonOui
Token d'exemple en un clicOuiOui (iat/exp courants calculés en direct)
Confidentialité / Runtime
Traitement intégral dans le navigateurOuiOui
Zéro requête tierceNonOui
Bannière de consentement cookiesOuiAucune
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 header x5c d'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é oct d'un JWKS avec un champ k). 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-configuration pour 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 curl d'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

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.