Encodeur / Décodeur d’URL

Encodez du texte pour les URL, ou décodez une URL encodée.

100 % privé — fonctionne entièrement dans votre navigateur. Vos données sont traitées sur votre appareil et ne sont jamais envoyées sur Internet.

À propos de cet outil

Cet encodeur / décodeur d'URL gratuit encode en pourcentage un texte afin qu'il puisse être utilisé sans risque dans une URL ou une chaîne de requête, et retransforme une URL encodée en texte lisible.

Il traite correctement l'UTF-8, si bien que les lettres accentuées, les emoji et les écritures non latines sont encodés et décodés sans corruption. Tout s'exécute dans votre navigateur : rien n'est envoyé.

Ce qu'est l'encodage pourcent

Une URL n'a le droit de contenir qu'un petit jeu de caractères. Tout le reste — espaces, guillemets, &, #, ?, lettres accentuées, tout ce qui s'écrit en chinois ou en arabe — doit être réécrit avant de pouvoir circuler.

L'encodage pourcent s'en charge en remplaçant un caractère par un % suivi de sa valeur d'octet en hexadécimal. Un espace devient %20. Une esperluette devient %26. Un point d'interrogation devient %3F. C'est la même idée que le Base64 — rendre des données encombrantes acceptables pour un canal difficile — mais appliquée caractère par caractère, ce qui laisse le résultat largement lisible.

Comme ce sont des octets qui sont encodés, un caractère occupant plus d'un octet en UTF-8 produit plusieurs séquences. Le é fait deux octets et devient %C3%A9. Un caractère chinois en fait généralement trois et donne trois séquences. Un emoji en fait quatre. Voilà pourquoi les URL encodées contenant du texte non anglais paraissent si longues.

Pourquoi c'est important : le problème du `&`

Voici l'erreur que cet outil sert à éviter, et presque tout le monde la commet une fois.

Une chaîne de requête sépare ses valeurs par & et = :

/recherche?q=cafe&page=2

Supposons maintenant que quelqu'un cherche Bed & Breakfast. Inséré tel quel :

/recherche?q=Bed & Breakfast&page=2

Le serveur voit désormais trois paramètres : q vaut Bed , puis un paramètre absurde Breakfast, puis page. La recherche renvoie silencieusement autre chose. Encodez la valeur d'abord et tout fonctionne :

/recherche?q=Bed%20%26%20Breakfast&page=2

D'où la règle : encodez chaque valeur, pas l'URL entière. Le & et le = qui structurent la chaîne de requête doivent rester bruts. Le & à l'intérieur d'une valeur, non.

Encoder une valeur ou une URL entière

C'est la distinction qui fait trébucher, et la raison pour laquelle JavaScript propose deux fonctions différentes.

encodeURIComponent encode presque tout, y compris /, ?, #, & et =. Utilisez-la pour un seul fragment d'URL : un terme de recherche, un nom de fichier, une adresse de redirection, un jeton. C'est ce dont vous avez besoin la plupart du temps, et c'est ce que fait cet outil.

encodeURI laisse tranquilles les caractères de structure, car elle suppose qu'on lui remet une URL complète et déjà correcte dont il faut simplement nettoyer les caractères illégaux. Utilisez-la sur une URL entière, jamais sur une valeur isolée.

Encodez une URL entière avec la version « component » et chaque / devient %2F : l'adresse cesse de fonctionner. Encodez une valeur avec la version « URI » et votre & passe au travers et casse la chaîne de requête. Savoir laquelle vous vouliez, c'est tout le secret.

Ce n'est pas l'échappement HTML

L'encodage pourcent et l'échappement HTML se ressemblent et résolvent des problèmes différents.

L'encodage pourcent (%20, %26) rend un texte sûr à l'intérieur d'une URL. L'échappement HTML (&, <) le rend sûr à l'intérieur d'un document HTML. Une URL affichée sur une page peut avoir besoin des deux, dans cet ordre : d'abord encoder pour l'URL, puis échapper le résultat pour le HTML.

Et une curiosité bien connue : le + signifie parfois un espace. C'est un héritage des formulaires HTML, où application/x-www-form-urlencoded utilise + au lieu de %20. La plupart des serveurs acceptent les deux dans une chaîne de requête, mais un + dans un chemin désigne un vrai signe plus. Si un espace réapparaît sous forme de + là où vous ne l'attendiez pas, un encodeur de formulaire en est la cause.

Comment l'utiliser

  • Collez votre texte ou votre URL dans le champ
  • Encodez ou Décodez à l'aide des boutons
  • Échangez pour renvoyer le résultat dans la zone de saisie
  • Copiez le résultat

Bon à savoir

  • Encodez les valeurs, pas les URL entières. Passer une adresse complète dans un encodeur transforme chaque / en %2F et la casse.
  • N'encodez jamais deux fois. Le % est lui-même encodé en %25 : un second passage transforme %20 en %2520 et l'espace est perdu. C'est la cause la plus fréquente d'un lien mystérieusement cassé.
  • Les caractères réservés portent un sens — parmi eux :, /, ?, #, @, &, =, + et $. Ils sont autorisés dans une URL mais doivent être encodés lorsqu'ils apparaissent à l'intérieur d'une valeur.
  • Les caractères non réservés ne sont jamais encodés : A–Z, a–z, 0–9, -, _, . et ~.
  • La casse de l'hexadécimal est indifférente. %3f et %3F sont identiques ; les majuscules sont la convention.
  • Un % isolé est invalide. Si le décodage échoue, cherchez un % qui n'est pas suivi de deux chiffres hexadécimaux — souvent le signe d'une chaîne tronquée.

Questions fréquentes

Que signifie %20 dans une URL ?

C'est un espace. L'espace n'est pas autorisé dans une URL, il est donc encodé en pourcent sous la forme %20 : un % suivi de 20, la valeur hexadécimale de l'octet d'un espace. Vous verrez parfois un espace écrit +, héritage de l'encodage des formulaires ; les deux sont compris dans une chaîne de requête, mais seul %20 est correct dans un chemin.

Dois-je encoder toute l'URL ou seulement une partie ?

Seulement les parties. Encodez chaque valeur que vous insérez *dans* une URL — un terme de recherche, un nom de fichier, une adresse de redirection — et laissez intacts les ://, /, ?, & et = qui donnent sa structure à l'URL. Encoder une URL complète transforme ses barres obliques en %2F et l'empêche de se résoudre.

Pourquoi mon lien est-il cassé après encodage ?

Presque toujours à cause d'un double encodage. Le caractère % est lui-même encodé en %25, si bien qu'encoder une chaîne déjà encodée transforme %20 en %2520. Le décodeur vous rend alors un %20 littéral au lieu d'un espace. Décodez une fois pour voir ce que vous avez réellement avant d'encoder à nouveau.

Pourquoi une lettre accentuée devient-elle plusieurs codes % ?

Parce que l'encodage pourcent travaille sur des octets, pas sur des lettres. En UTF-8, é occupe deux octets et devient donc %C3%A9. La plupart des caractères chinois, japonais et coréens en occupent trois et donnent trois séquences ; les emoji en occupent quatre. Rien n'est anormal : c'est simplement le poids du caractère.

Quelle différence entre encodage d'URL et échappement HTML ?

Ils protègent des endroits différents. L'encodage d'URL (%26) sécurise un texte à l'intérieur d'une adresse web. L'échappement HTML (&) le sécurise à l'intérieur d'une page HTML. Un lien affiché sur une page peut nécessiter les deux, dans cet ordre. Employer l'un là où l'autre s'impose laisse le problème initial entier.

Mon texte est-il envoyé à un serveur ?

Non. L'encodage et le décodage se font tous deux dans votre navigateur ; rien de ce que vous collez ne quitte votre appareil. L'outil continue de fonctionner connexion coupée.

Outils liés

Nous ajoutons régulièrement de nouveaux outils — abonnez-vous sur YouTube pour être averti à chaque nouveauté.

Plus d’outils

Tout voir

Applications recommandées

Tout voir