Texte brut

Encodé en pourcentage

Qu'est-ce que l'encodeur d'URL ?

Déposez une chaîne dans le panneau de gauche et le panneau de droite affiche la version encodée en pourcentage. En interne, il appelle encodeURIComponent, qui échappe chaque caractère ayant une signification particulière dans une URL — les espaces deviennent %20, les esperluettes %26, l'arobase %40, et ainsi de suite. C'est l'encodage qu'il vous faut pour les VALEURS de paramètres de requête, les segments de chemin, et partout où une chaîne brute doit voyager dans une URL sans la casser.

Il existe deux variantes d'encodage et la différence compte. encodeURIComponent (cette page) échappe tout ce qui est spécial, y compris ?, #, &, = et / — parce qu'au niveau de la valeur, ces caractères changeraient le sens de l'URL. encodeURI est plus permissive et laisse ces caractères structurels tranquilles, parce qu'elle s'attend à ce que vous encodiez une URL déjà entièrement formée. MDN détaille la table des caractères réservés si vous voulez les détails. Si vous construisez une URL complète à partir de morceaux, c'est l'URL Builder qu'il vous faut, pas cette page.

La règle d'encodage vient de RFC 3986 §2.1 : chaque octet à risque s'écrit % suivi des deux chiffres hexadécimaux de ses octets UTF-8. C'est pour ça qu'un emoji comme la fusée donne quatre triplets pourcent (c'est quatre octets UTF-8), tandis qu'un caractère ASCII comme ! reste sur un seul. Le standard URL du WHATWG formalise la façon dont les navigateurs modernes le font, et l'article Wikipédia sur l'encodage-pourcent a une table de référence claire si vous voulez vérifier à la main. Tout se passe dans votre navigateur. Rien n'est envoyé, rien n'est journalisé.

Comment utiliser l'encodeur d'URL

Trois étapes. La page se met à jour pendant que vous tapez — pas de bouton Convertir.

1

Collez votre chaîne ou cliquez sur Exemple

Tapez ou collez n'importe quel texte dans le panneau de gauche. Cliquez sur Exemple pour charger une chaîne avec le genre de caractères que vous croisez vraiment — espaces, esperluettes, un email, un signe pourcent. Entrée d'exemple :

Ava Chen & friends? [email protected]  100% off!

Unicode et emojis fonctionnent sans souci — l'encodeur utilise des séquences d'octets UTF-8, donc un nom japonais ou un emoji s'encode en séquence pourcent multi-octets et fait l'aller-retour proprement avec n'importe quel décodeur conforme au standard.

2

Lisez la sortie encodée

Le panneau de droite affiche la version encodée en pourcentage. Les espaces deviennent %20, & devient %26, ? devient %3F, @ devient %40, et % lui-même devient %25. Mise à jour à la frappe.

3

Copiez ou téléchargez

Cliquez sur Copier pour mettre la chaîne encodée dans le presse-papiers, ou sur Télécharger pour la sauvegarder en fichier .txt. Utilisez Effacer sur le panneau d'entrée pour repartir de zéro. Pour faire l'inverse, passez par le Décodeur d'URL.

Quand vous l'utiliseriez vraiment

Construire une valeur de query string à la main

Besoin de fabriquer ?customer=Ava%20Chen&status=active pour un test curl rapide ou un deep link ? Encodez chaque valeur ici et collez-la dans votre URL. Oublier d'encoder une valeur contenant & (un nom comme « Smith & Co. ») est la source classique des bugs mystérieux du genre « l'API ne voit que la moitié de mon paramètre ».

Encoder une URL de redirection

Les flux OAuth et les redirections SSO transmettent l'URL de destination dans un paramètre de requête (par exemple ?return_to=...). Cette URL de destination contient elle-même :, /, ?, & — qui doivent tous être encodés en pourcentage pour que l'URL externe reste bien formée. RFC 6749 §3.1.2 le précise explicitement pour les URIs de redirection OAuth.

Encoder un segment de chemin contenant un slash

Si votre API REST a des routes comme /repos/:owner/:name et que le nom contient un slash (rare mais légal dans certains catalogues), le slash doit s'encoder en %2F ou le routeur le traitera comme un séparateur de chemin. Même logique pour les noms de fichier avec espaces ou accents dans les URLs de téléchargement.

Assainir une saisie utilisateur avant qu'elle touche une URL

Toute chaîne qui part vers une URL depuis un formulaire HTML, une barre de recherche ou un import CSV doit être encodée. Une saisie utilisateur non encodée, c'est exactement comme ça qu'on se retrouve avec des liens cassés, des vecteurs d'injection de paramètres, ou des URLs qui marchent pour les utilisateurs ASCII et plantent silencieusement pour tous les autres. Les notes d'OWASP sur le path traversal sont un bon rappel de ce que coûte cette étape sautée.

Questions courantes

Je dois utiliser encodeURIComponent ou encodeURI ?

Presque toujours encodeURIComponent — c'est ce que cette page utilise. C'est le bon choix pour les valeurs de paramètres de requête, les segments de chemin, et partout où une chaîne doit être une « pièce » d'URL. encodeURI sert à encoder une URL déjà structurellement complète (rare en pratique — d'ordinaire on construit à partir de morceaux). La référence MDN liée plus haut a la table complète des caractères que chacune échappe.

Pourquoi parfois + pour les espaces et parfois %20 ?

Deux traditions d'encodage cohabitent. application/x-www-form-urlencoded (le corps ?clé=valeur de la soumission d'un formulaire HTML) utilise + pour l'espace. L'encodage pourcent général du RFC 3986 utilise %20. encodeURIComponent produit toujours %20. La plupart des serveurs acceptent les deux, mais si votre décodeur en aval est strict en mode formulaire, faites .replace(/%20/g, "+") après encodage.

Gère-t-il correctement les emojis et le texte non-ASCII ?

Oui. L'encodeur sérialise d'abord l'entrée en UTF-8, puis encode en pourcentage chaque octet. Donc un emoji devient une séquence pourcent multi-octets, et n'importe quel décodeur conforme au standard fait l'aller-retour sans perte. Si vous intégrez avec un système qui utilise Latin-1 ou un autre encodage hérité, vous avez un autre problème — changez le système amont, ne bricolez pas un encodeur non-UTF-8 à la main.

Quels caractères encodeURIComponent N'encode PAS ?

Les lettres A-Z et a-z, les chiffres 0-9, et les caractères non réservés - _ . ! ~ * ' ( ). Tout le reste est encodé en pourcentage. La liste vient directement de la spécification d'origine et est fixe dans tous les moteurs JavaScript modernes — voir la spec ECMAScript pour encodeURIComponent si vous voulez la version officielle.

L'entrée que je colle ici part-elle quelque part ?

Non. L'encodage tourne entièrement dans votre navigateur via le moteur JavaScript. Pas d'appel réseau, pas de serveur, pas de log. Collez des secrets, des jetons, n'importe quoi de sensible — ça ne quitte jamais votre machine.

Quelle taille de chaîne puis-je encoder ici ?

Il y a une limite de 256 Ko sur l'entrée. Les valeurs d'URL réelles font quelques kilo-octets au maximum. Si vous devez encoder plusieurs Mo de données, vous essayez très probablement d'embarquer une charge utile dans une URL alors qu'il faudrait l'envoyer en POST — encodez-la côté serveur et sautez l'aller-retour.

Autres outils URL et encodage

Encoder est une opération. Voici ce qui se marie bien avec :