Code Gratuit

Encodeur/décodeur URL

Encodez ou décodez du texte pour une adresse web (percent-encoding) en mode paramètre, adresse complète ou formulaire, et analysez les composants d'une URL.

Mis à jour le 8 octobre 2026
Type d'encodage

Saisissez un texte à gauche pour l'encoder, ou un texte encodé à droite pour le décoder.

Vos données restent dans votre navigateur : aucune saisie n'est envoyée à nos serveurs.

À propos de cet outil

Cet outil encode une chaîne au format « pourcentage » (percent-encoding) pour l'utiliser sans risque dans une adresse web, ou décode une adresse encodée pour retrouver un texte lisible. Trois modes couvrent les besoins courants : valeur de paramètre (comme encodeURIComponent), adresse complète (comme encodeURI) et formulaire, où l'espace s'écrit « + ». Lorsque le texte est une adresse, l'outil la décompose en protocole, hôte, chemin, fragment et paramètres décodés.

Comment utiliser cet outil

  1. Choisissez le type d'encodage : valeur de paramètre, adresse complète ou formulaire.
  2. Saisissez un texte à gauche pour obtenir sa version encodée à droite, ou collez un texte encodé à droite pour le décoder.
  3. Si le texte est une adresse complète, consultez l'analyse : protocole, hôte, chemin, fragment et paramètres de la requête décodés.
  4. Copiez le résultat ou exportez-le dans un fichier.

Anatomie d'une adresse web et caractères réservés

Une adresse web se compose de plusieurs parties, que la norme RFC 3986 sépare par des caractères précis :

https://utilisateur@exemple.fr:8080/dossier/page?cle=valeur&autre=1#section
  • https : le schéma (protocole) ;
  • exemple.fr : l'hôte, avec éventuellement un identifiant (utilisateur@) et un port (:8080) ;
  • /dossier/page : le chemin, dont les segments sont séparés par « / » ;
  • ?cle=valeur&autre=1 : la requête (query), faite de paramètres séparés par « & » ;
  • #section : le fragment, qui désigne un endroit de la page et n'est jamais envoyé au serveur.

Les caractères : / ? # [ ] @ et ! $ & ' ( ) * + , ; = sont dits réservés : ils ont un rôle dans cette structure. Seuls les lettres, les chiffres et les quatre signes - . _ ~ sont toujours sûrs (caractères « non réservés »). Tout autre caractère, notamment l'espace, les accents et les symboles, doit être encodé en pourcentage : un « % » suivi des deux chiffres hexadécimaux de l'octet. Les caractères non ASCII sont d'abord convertis en octets UTF-8 : « é » s'écrit %C3%A9 (deux octets), « € » s'écrit %E2%82%AC (trois octets).

Quel mode d'encodage choisir ?

La confusion la plus courante concerne les deux fonctions JavaScript encodeURI et encodeURIComponent, que l'outil reprend sous deux noms plus parlants :

Les trois modes de l'outil
ModeÉquivalentCe qui reste lisibleQuand l'utiliser
Valeur de paramètreencodeURIComponentLettres, chiffres et - _ . ! ~ * ' ( )Une valeur insérée dans une adresse : texte d'une recherche, nom, e-mail, URL imbriquée.
Adresse complèteencodeURIEn plus : ; , / ? : @ & = + $ #Une adresse entière dont la structure doit rester intacte, mais qui contient des accents ou des espaces.
FormulaireURLSearchParamsLettres, chiffres et * - . _ ; l'espace devient « + »Reproduire l'encodage des formulaires HTML (application/x-www-form-urlencoded).
Exemple

Pour envoyer la recherche « café & thé » dans un paramètre q, la valeur doit être encodée en mode paramètre : caf%C3%A9%20%26%20th%C3%A9. En mode adresse complète, le « & » resterait tel quel et couperait la valeur en deux paramètres : ?q=caf%C3%A9%20&%20th%C3%A9.

Les cinq erreurs d'encodage les plus courantes

  1. Le double encodage. Encoder un texte déjà encodé transforme chaque « % » en « %25 » : « café » devient caf%C3%A9, puis caf%25C3%25A9. Le texte s'affiche alors avec des « %C3%A9 » visibles. Si vous voyez %25 partout, c'est le signe d'un encodage appliqué deux fois.
  2. Le « + » interprété comme une espace. Dans la requête d'une adresse, « + » signifie « espace ». Un numéro comme +33612345678 écrit tel quel dans ?tel=+33612345678 est lu comme « 33612345678 » précédé d'une espace. Il faut écrire %2B33612345678.
  3. L'utilisation d'encodeURI pour une valeur. Les caractères « & », « = », « + » et « # » ne sont pas encodés : une valeur qui en contient casse la structure de la requête ou la tronque.
  4. L'utilisation d'encodeURIComponent sur une adresse entière. « https:// » devient https%3A%2F%2F et l'adresse n'est plus reconnue comme telle.
  5. Un mauvais encodage des caractères. D'anciens systèmes encodent « é » en Latin-1 (%E9) au lieu de l'UTF-8 (%C3%A9). Le décodage échoue alors ou produit un caractère de remplacement. L'outil détecte ce cas et propose la lecture en Latin-1.

Dans un lien mailto:, les espaces doivent aussi s'écrire %20 : le « + » y serait pris pour un plus littéral.

Noms de domaine accentués, longueur maximale et sécurité

  • Les noms de domaine ne s'encodent pas en pourcentage. Un nom accentué (« café.fr ») est converti en Punycode, avec le préfixe « xn-- » : xn--caf-dma.fr. Les navigateurs font la conversion eux-mêmes, mais pas toujours les programmes qui traitent une adresse.
  • La longueur. Aucune norme ne fixe de limite stricte, mais les navigateurs, les serveurs et les services tiers en imposent. Le protocole des plans de site limite une adresse à 2 048 caractères, un repère prudent à respecter pour éviter les problèmes de compatibilité. Évitez de placer de grandes quantités de données dans une requête : utilisez une requête POST avec un corps.
  • Les chemins et le « / » encodé. Dans une valeur de chemin, un « / » doit s'écrire %2F. Certains serveurs refusent pourtant cette séquence par défaut, car elle a servi à contourner des contrôles d'accès : à tester avant de s'en servir.
  • La sécurité. Toute donnée saisie par un utilisateur et insérée dans une adresse doit être encodée. Sans cela, une valeur contenant « & » ou « # » peut modifier la requête (injection de paramètres). Décodez aussi une seule fois : décoder deux fois une valeur ouvre la porte à des contournements de filtres (par exemple %252e%252e%252f qui, décodé deux fois, devient ../).

Pour fabriquer l'adresse lisible d'un article à partir de son titre, utilisez le générateur de slugs, qui évite d'avoir à encoder quoi que ce soit.

Questions fréquentes

Pourquoi encoder une adresse web ?

Certains caractères ont un rôle précis dans une adresse (« / » sépare les dossiers, « ? » ouvre la requête, « & » sépare les paramètres, « # » ouvre le fragment) et d'autres, comme les espaces ou les accents, n'y sont pas autorisés. L'encodage en pourcentage les remplace par « % » suivi de deux chiffres hexadécimaux : l'espace devient %20 et « é » devient %C3%A9 (ses deux octets en UTF-8).

Quelle différence entre « valeur de paramètre » et « adresse complète » ?

Le mode « valeur de paramètre » (encodeURIComponent) encode aussi / ? & = # : à utiliser pour une valeur insérée dans une adresse, comme le texte d'une recherche. Le mode « adresse complète » (encodeURI) laisse ces caractères intacts pour ne pas casser la structure d'une adresse entière.

Pourquoi des « + » à la place des espaces ?

C'est la convention des formulaires web (application/x-www-form-urlencoded) : dans une requête, l'espace peut s'écrire « + ». Dans le chemin d'une adresse, en revanche, « + » est un plus littéral et l'espace s'écrit %20. Le mode « formulaire » applique la première convention.

Pourquoi le décodage échoue-t-il avec « %E9 » ?

Parce que %E9 est un « é » du Latin-1 (ISO-8859-1), un ancien encodage, alors que les adresses actuelles utilisent l'UTF-8, où « é » s'écrit %C3%A9. L'outil détecte ce cas, l'explique et montre le texte tel qu'il serait lu en Latin-1.

Mes adresses sont-elles envoyées à un serveur ?

Non, l'encodage, le décodage et l'analyse se font dans votre navigateur.

↑ ↓ naviguerEntrée ouvrirÉchap fermer