Encoder decoder URL
Percent-encodez ou décodez des chaînes URL dans votre navigateur, avec un mode URL complète et un mode composant pour traiter correctement query strings et chemins.
Ce que fait l'outil
- Encodage et décodage percent dans les deux sens
- Mode URL complète : slashs, ? et & restent fonctionnels
- Mode composant : tout est encodé sauf lettres, chiffres et - . _ ~
- Accents, alphabets non latins et emoji encodés en UTF-8
- Traitement côté client, aucune donnée envoyée à un serveur
Un espace, une esperluette ou une lettre accentuée laissés tels quels dans une query string cassent les paramètres. Cet outil encode du texte en percent-encoding et le décode dans l'autre sens. Tapez café & crème, choisissez le mode Component, et vous obtenez caf%C3%A9%20%26%20cr%C3%A8me, prêt à placer dans un paramètre d'URL. Collez une chaîne encodée et décodez-la pour lire la vraie valeur. Les deux sens tournent dans un module Rust compilé en WebAssembly, dans votre navigateur.
Qu'est-ce que l'encodage d'URL ?
Une URL ne peut contenir qu'un jeu restreint de caractères ASCII. Tout le reste doit être encodé : chaque octet est remplacé par un signe % suivi de deux chiffres hexadécimaux. Un espace devient %20, une esperluette %26. Les caractères hors ASCII sont d'abord convertis en octets UTF-8, si bien que é devient %C3%A9. Ce mécanisme, appelé percent-encoding, est défini par la RFC 3986. C'est lui qui produit les %C3%A9 que l'on voit dans les liens vers des pages françaises.
Encoder ou décoder une URL, étape par étape
- Choisissez le mode : Full URL (par défaut) ou Component. La différence est détaillée plus bas.
- Pour encoder, tapez ou collez le texte brut dans la zone Decoded et cliquez sur Encode. Le résultat s'affiche dans la zone Encoded.
- Pour décoder, collez la chaîne encodée dans la zone Encoded et cliquez sur Decode. Le texte lisible apparaît dans la zone Decoded.
- Le bouton de copie à côté de chaque zone copie son contenu.
Mode URL complète ou mode composant
Certains caractères sont réservés car ils structurent l'URL : / ? # [ ] @ ! $ & ' ( ) * + , ; =. L'esperluette sépare les paramètres, le point d'interrogation ouvre la query string, le dièse marque un fragment. Faut-il les encoder ? Tout dépend s'ils font partie de la structure ou de la donnée.
- Mode Full URL : pour une adresse complète. Les caractères réservés et les séquences
%existantes sont conservés, donchttps://example.com/a b?q=x&y=1devienthttps://example.com/a%20b?q=x&y=1. Sont encodés : espaces, caractères de contrôle, caractères non ASCII et caractères à risque" < > ` { } ^ | \. - Mode Component : pour un seul morceau d'URL, comme la valeur d'un paramètre ou un segment de chemin. Tout est encodé sauf les lettres, les chiffres et
- . _ ~, y compris&,=,/,?et%. À utiliser pour une saisie utilisateur, un terme de recherche, un nom de fichier ou une URL passée en paramètre (unredirect_uri, par exemple).
Test rapide : si le texte à encoder peut contenir une esperluette qui appartient à la valeur, prenez le mode Component. Encoder une valeur isolée en mode URL complète est la cause classique des paramètres tronqués.
Détails et cas particuliers
- Un espace devient
%20, pas+: l'encodeur suit la RFC 3986. Les formulaires HTML (application/x-www-form-urlencoded) codent l'espace en+, et le décodeur laisse le+intact. Remplacez les+par des espaces avant de décoder des données de formulaire. - Plus strict que JavaScript :
encodeURIComponentlaisse! ' ( ) *en clair. Le mode Component les encode aussi, ce qui reste toujours valide et plus sûr pour les analyseurs stricts (signatures OAuth, par exemple). - Double encodage : une valeur encodée deux fois affiche
%2520au lieu de%20, car le%lui-même est devenu%25. Cliquez sur Decode plusieurs fois jusqu'à ce que le texte ne change plus. Le mode URL complète ne réencode pas un%existant et ne double donc pas l'encodage d'une URL déjà encodée. - Entrée invalide : si le décodage produit des octets qui ne forment pas de l'UTF-8 valide, l'outil affiche une erreur plutôt qu'un texte corrompu. Un
%isolé non suivi de deux chiffres hexadécimaux est conservé tel quel. - Même décodeur dans les deux modes : le décodage remplace chaque séquence
%XXpar son caractère, quel que soit le mode choisi.
Cas d'usage
- Construire des liens fiables : encoder une saisie utilisateur, un terme de recherche ou un nom de fichier avant de l'insérer dans une query string.
- Déboguer une API : décoder une URL de requête relevée dans les logs pour lire les vraies valeurs, ou encoder une valeur pour rejouer un appel avec curl.
- OAuth et redirections : encoder une URL de retour complète en mode Component pour le paramètre
redirect_uri. - Liens de suivi : décoder les paramètres UTM et les URL imbriquées d'un lien marketing pour voir où il mène réellement.
Comparé au code et à la ligne de commande
En JavaScript, on appelle encodeURIComponent() ou encodeURI(), en Python urllib.parse.quote(), en shell curl --data-urlencode ou jq -rR @uri. Chacun a son propre jeu de caractères conservés par défaut, et c'est là que naissent les bugs. Cette page affiche le résultat à côté de l'original, avec deux modes clairement définis et sans une ligne de code.
Encodage local, sans envoi
Les URL transportent souvent des jetons de session, des clés d'API dans la query string, des noms d'hôtes internes ou des données personnelles comme une adresse e-mail. L'encodage et le décodage se font entièrement côté client en WebAssembly : le texte collé n'est ni envoyé, ni journalisé, ni stocké sur un serveur. Vos données restent sous votre contrôle, sans transfert à un tiers au sens du RGPD. L'outil fonctionne hors ligne une fois la page chargée.
Questions fréquentes
- Quelle différence entre encodage d'URL et percent-encoding ?
- Aucune. Percent-encoding est le nom technique de la RFC 3986, encodage d'URL ou « URL encode » le nom courant.
- Un espace doit-il devenir
%20ou+? %20est correct partout dans une URL. Le+ne vaut espace que dans les query strings encodées par un formulaire. L'outil produit toujours%20.- Quel mode pour la valeur d'un paramètre ?
- Le mode Component. Il encode
&,=et?pour qu'ils restent dans la valeur au lieu de la découper. - Pourquoi mon URL contient-elle
%2520? - Elle a été encodée deux fois :
%20a été réencodé et son%est devenu%25. Décodez deux fois pour retrouver le texte d'origine. - Les accents et les emoji sont-ils pris en charge ?
- Oui. Les caractères sont encodés en octets UTF-8 :
édevient%C3%A9, un emoji quatre octets encodés, et le décodage restitue le caractère d'origine. - Mes données sont-elles envoyées à un serveur ?
- Non. L'encodage et le décodage s'exécutent dans votre navigateur via WebAssembly.
Outils connexes : pour échapper des caractères dans du HTML plutôt que dans une URL, utilisez l'encodeur et décodeur d'entités HTML. Pour encoder des données quelconques en texte, l'encodeur et décodeur Base64 est plus adapté, et le décodeur JWT complète l'outil quand un jeton apparaît dans une query string. Pour partager un lien encodé sur papier ou à l'écran, le générateur de QR code le transforme en code scannable.