URL : JSON Decode

Décodez et formatez du JSON depuis une chaîne URL encodée.

URL Encodée

Décodage

Options

Résultat

JSON Décodé

Guide complet du décodage JSON URL : transformer l'illisible en clair

Pourquoi j'ai besoin de décoder du JSON depuis les URLs

Chaque jour, je débogue des applications web où des données JSON circulent encodées dans les URLs. Query strings de recherche avancée, paramètres state des flux OAuth, callbacks de webhooks, deep links d'applications mobiles — partout, ces chaînes cryptiques %7B%22name%22%3A%22value%22%7D qui sont illisibles à l'œil nu. Cet outil transforme instantanément ce charabia en JSON propre et formaté, me permettant de comprendre ce qui se passe réellement dans mes applications.

Comprendre le percent-encoding (URL encoding)

Le percent-encoding (RFC 3986) permet d'inclure des caractères spéciaux dans les URLs. Chaque caractère réservé est remplacé par % suivi de son code hexadécimal ASCII. C'est nécessaire car les URLs ont une syntaxe stricte : les accolades, crochets, guillemets et deux-points ont des significations spéciales ou sont interdits. Le JSON, qui utilise tous ces caractères, doit donc être entièrement encodé pour voyager dans une URL.

Fonctionnalités de cet outil

🔓 Décodage intelligent

Transforme les séquences %XX en caractères originaux. Supporte UTF-8 complet pour les caractères internationaux (accents, idéogrammes, emojis).

🔗 Extraction depuis URL complète

Collez une URL entière — l'outil parse automatiquement les query parameters et identifie ceux contenant du JSON pour les décoder.

📐 Formatage automatique

Le JSON décodé est automatiquement indenté avec coloration syntaxique pour une lecture immédiate et confortable.

✅ Validation intégrée

Vérifie que le résultat est du JSON valide. Les erreurs de syntaxe sont signalées avec leur position exacte.

Comment utiliser cet outil

  1. Collez votre donnée — Soit du JSON URL-encodé brut (%7B%22...), soit une URL complète contenant des paramètres JSON
  2. Cliquez « Décoder JSON » — Pour décoder directement la chaîne encodée
  3. Ou « Extraire de l'URL » — Pour parser une URL complète et extraire automatiquement les paramètres JSON
  4. Examinez le résultat — JSON formaté avec indentation, prêt à être analysé
  5. Copiez ou téléchargez — Exportez le JSON décodé pour l'utiliser ailleurs

Référence des encodages courants

  • %20 → Espace (ou + dans application/x-www-form-urlencoded)
  • %22 → Guillemet double "
  • %27 → Apostrophe '
  • %7B %7D → Accolades { }
  • %5B %5D → Crochets [ ]
  • %3A → Deux-points :
  • %2C → Virgule ,
  • %3D → Signe égal =
  • %26 → Esperluette &
  • %25 → Signe pourcent % (indique souvent un double encodage)

Cas d'usage fréquents

Je utilise cet outil quotidiennement pour déboguer les paramètres de recherche avancée (filtres complexes passés en JSON), analyser les paramètres state OAuth lors des authentifications, inspecter les données de webhooks dans les logs, et décoder les deep links d'applications mobiles. C'est devenu indispensable pour comprendre ce qui transite réellement dans mes applications.

Questions fréquentes

Comment extraire automatiquement le JSON d'une URL complète avec plusieurs paramètres ?

Collez l'URL complète et cliquez sur « Extraire de l'URL ». L'outil :

  • Parse tous les query parameters après le ?
  • Décode chaque valeur avec decodeURIComponent()
  • Identifie ceux qui commencent par { ou [ (signature JSON)
  • Affiche le premier JSON trouvé avec le nom du paramètre

Exemple : https://api.example.com/search?filters=%7B%22status%22%3A%22active%22%7D&page=1 → extraira et décodera le paramètre "filters".

Le décodage produit des caractères bizarres ou des %25 — que se passe-t-il ?

C'est le signe d'un double encodage — le JSON a été encodé deux fois. Le % lui-même devient %25, donc %7B devient %257B.

Solution :

  • Décodez une première fois avec cet outil
  • Prenez le résultat (qui sera encore encodé une fois)
  • Décodez à nouveau

Cause fréquente : certains frameworks (notamment ASP.NET, certaines configs Java) encodent automatiquement les query strings déjà encodées. Vérifiez votre chaîne de traitement côté serveur.

Le résultat n'est pas du JSON valide — comment diagnostiquer ?

Plusieurs causes possibles :

  • Ce n'est pas du JSON — Désactivez « Valider JSON » pour voir le contenu brut. C'est peut-être du texte, du XML, du form-urlencoded
  • JSON tronqué — L'URL a peut-être été coupée (limite de longueur). Vérifiez que vous avez la chaîne complète
  • Encodage partiel — Certains caractères n'ont pas été encodés correctement à la source
  • JSON invalide à l'origine — L'erreur vient du producteur, pas du décodage

Le message d'erreur indique la position approximative du problème dans le JSON.

Comment décoder les paramètres state OAuth ou les callbacks d'authentification ?

Les paramètres state OAuth utilisent souvent plusieurs couches d'encodage :

  • URL encoding seul — Utilisez directement cet outil
  • Base64 + URL encoding — Décodez d'abord l'URL, puis utilisez notre outil Base64→JSON
  • JSON stringifié + URL encoding — Le résultat peut être une chaîne JSON échappée (avec \"), utilisez JSON.parse() dessus

Astuce : si le résultat ressemble à eyJhbG... (commence par ey), c'est du Base64 (probablement un JWT). Utilisez notre décodeur JWT.

Quelle est la différence entre decodeURI() et decodeURIComponent() ?

Cet outil utilise decodeURIComponent(), qui est le bon choix pour décoder des valeurs de paramètres :

  • decodeURIComponent() — Décode TOUS les caractères encodés, y compris / : ? # @ qui font partie de la structure URL. À utiliser pour les valeurs.
  • decodeURI() — Préserve les caractères structurels de l'URL (/ : ? #). À utiliser pour des URLs complètes où vous voulez garder la structure.

Pour du JSON dans un paramètre, decodeURIComponent() est toujours correct car le JSON est une valeur opaque qui doit être entièrement décodée.

Le + devient un espace — est-ce normal ?

Cela dépend du contexte d'encodage :

  • application/x-www-form-urlencoded (formulaires HTML) — Le + représente un espace, c'est la convention historique
  • RFC 3986 (URLs modernes) — Le + est un caractère littéral, l'espace est %20

JavaScript decodeURIComponent() suit RFC 3986 et ne convertit PAS le + en espace. Si vos + deviennent des espaces alors qu'ils ne devraient pas, le problème est côté encodage (utilisation de application/x-www-form-urlencoded pour du JSON, ce qui est incorrect).

Puis-je décoder du JSON qui contient des caractères Unicode (emojis, chinois, arabe) ?

Oui ! Le décodage supporte UTF-8 complet. Les caractères non-ASCII sont encodés en plusieurs octets :

  • é → %C3%A9 (2 octets UTF-8)
  • 中 → %E4%B8%AD (3 octets UTF-8)
  • 🎉 → %F0%9F%8E%89 (4 octets UTF-8)

decodeURIComponent() reconstruit correctement ces séquences multi-octets en caractères Unicode. Si vous voyez des caractères corrompus (é, 中), c'est généralement un problème d'encodage à la source (Latin-1 au lieu d'UTF-8).

Mes données sont-elles sécurisées ? Sont-elles envoyées quelque part ?

Vos données restent 100% locales et privées :

  • Tout le traitement se fait dans votre navigateur via JavaScript
  • Aucune donnée n'est transmise à un serveur
  • Aucun log, aucune analytics sur le contenu que vous décodez
  • Fonctionne même hors ligne une fois la page chargée

Vous pouvez vérifier dans les DevTools (onglet Network) : aucune requête n'est émise lors du décodage. C'est particulièrement important quand vous déboguez des tokens OAuth ou des données sensibles.