Encodeur et décodeur d'URL
Encodez une valeur, une URL entière, ou décodez l'un ou l'autre.
Paramètres de requête
- Entièrement gratuitSans compte, sans quota quotidien, sans offre payante.
- Rien n'est envoyéLes fichiers sont traités sur votre appareil et n'atteignent jamais un serveur.
- Aucune contrepartieSans filigrane, sans réduction imposée, sans limite de taille.
- Changements consignésChaque correction et chaque nouvel outil sont notés sur la page des nouveautés.
Ce que fait cet outil
Les URL ne peuvent contenir qu'un ensemble limité de caractères ASCII. Tout le reste — espaces, caractères chinois, &, =, ?, # et la plupart des signes de ponctuation — doit être encodé en pourcentage sous forme d'octets %XX avant de pouvoir circuler sans risque dans un lien, un envoi de formulaire ou un appel d'API. Cette page réalise cet encodage dans les deux sens et, contrairement à la plupart des encodeurs, décompose aussi le résultat : collez n'importe quelle URL ou chaîne de requête et les paramètres apparaissent dans un tableau clé–valeur décodé, pour lire d'un coup d'œil un lien de suivi ou une redirection OAuth.
Le texte est traité en UTF-8, si bien que 中文 devient %E4%B8%AD%E6%96%87, exactement comme l'attendent navigateurs et serveurs. Le décodage est tolérant : un % isolé qui ne forme pas une séquence d'échappement valide est laissé tel quel au lieu de provoquer une erreur, et + est traité comme une espace lorsque vous décodez des données de formulaire.
Encodage d'un composant ou d'une URL complète
Encoder un composant correspond à encodeURIComponent en JavaScript : il échappe tout sauf les lettres, les chiffres et -_.!~*'(). Utilisez-le pour une valeur isolée destinée à un paramètre de requête, un segment de chemin ou un champ de formulaire. Encoder une URL correspond à encodeURI : il laisse intacts les caractères structurels :/?#[]@!$&'()*+,;= pour qu'une adresse complète reste une adresse valide, et n'échappe que les espaces et le texte non ASCII. Se tromper de mode est le bug classique — encodeURIComponent sur une URL complète transforme chaque / en %2F et casse le lien, tandis qu'encodeURI sur une valeur contenant & la scinde silencieusement en deux paramètres.
L'option Espace en + bascule entre %20 (RFC 3986, utilisé dans les URL) et + (application/x-www-form-urlencoded, utilisé dans les corps de formulaires HTML et de nombreuses chaînes de requête héritées). Les deux se décodent correctement ici ; choisissez l'encodage attendu par votre cible.
Erreurs fréquentes
Le double encodage : encoder une valeur déjà encodée transforme %20 en %2520 et le serveur voit un %20 littéral. Si votre sortie décodée contient encore des séquences %XX, décodez une fois de plus. Oublier d'encoder & ou # dans une valeur tronque le paramètre. Encoder l'URL entière avec encodeURIComponent casse le schéma et les barres obliques. Mélanger les conventions + et %20 entre client et serveur fait apparaître des signes plus dans les noms d'utilisateurs. Enfin, l'encodage en pourcentage n'est ni un chiffrement ni une obfuscation — une valeur est parfaitement lisible après décodage, ne comptez donc jamais dessus pour cacher des jetons ; si vous avez besoin d'opacifier une charge utile, le Base64 est l'encodage de transport habituel, et lui aussi est trivialement réversible.
Contexte : d'où vient l'encodage en pourcentage
L'encodage en pourcentage a été défini avec la première spécification des URL, la RFC 1738 (1994), rédigée par Tim Berners-Lee et ses collègues, puis affiné dans la RFC 3986 (2005), qui est la norme actuelle de la syntaxe des URI. Le mécanisme d'échappement % est antérieur à la domination de l'UTF-8, ce qui explique pourquoi d'anciens systèmes encodent parfois les octets en Latin-1 ou en Shift-JIS et produisent des caractères illisibles une fois décodés en UTF-8 — le URL Standard de HTML5 (WHATWG) a fini par imposer l'UTF-8 pour tout nouvel encodage. La convention du + pour l'espace vient de la spécification distincte des formulaires HTML, et non de la norme des URL : c'est la raison historique pour laquelle deux encodages de l'espace coexistent aujourd'hui.
Où on l'utilise
Construire des requêtes d'API à la main (termes de recherche, filtres, URL de rappel), déboguer des liens de suivi issus des plateformes publicitaires (utm_source, gclid, fbclid), lire des redirections OAuth et SSO (redirect_uri, state, scope), composer des liens mailto: et tel: avec objet et corps de message, partager des liens contenant des chemins en chinois ou en japonais, et inspecter des charges utiles de webhooks envoyées sous forme de données de formulaire. Le tableau des paramètres est pratique pour coller une longue URL provenant d'un ticket de support et voir exactement ce qui a été demandé. Les valeurs d'une chaîne de requête sont souvent du JSON ou du Base64 — décodez-les d'abord ici, puis collez la valeur dans l'outil correspondant.
Questions fréquentes
Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURIComponent échappe tout sauf les caractères non réservés et sert pour les valeurs individuelles. encodeURI conserve les caractères de structure des URL (/ ? & = # :) et sert donc pour les adresses complètes. N'appliquez jamais encodeURIComponent à une URL entière.
Une espace doit-elle être %20 ou + ?
%20 dans les URL (RFC 3986). + uniquement dans les corps de formulaires application/x-www-form-urlencoded et les chaînes de requête qui suivent la convention des formulaires HTML. Les deux se décodent en espace ici.
Pourquoi mon texte décodé contient-il %2520 ?
La valeur a été encodée deux fois. Décodez-la à nouveau pour retrouver le texte d'origine.
Le chinois et les emojis sont-ils gérés ?
Oui. Le texte est encodé en octets UTF-8 : chaque caractère chinois devient trois séquences %XX et la plupart des emojis en deviennent quatre.
Quelque chose est-il envoyé à un serveur ?
Non. L'encodage, le décodage et l'analyse de la requête s'exécutent entièrement dans votre navigateur.