Charger un fichier
  1. base64hub
  2. Outils web et jetons
  3. Encoder une URL

Encodeur d'URL (encodage pourcent)

Collez du texte ou une URL pour l’obtenir encodé en pourcent. Choisissez Composant pour une valeur de requête ou un segment de chemin, URL complète pour corriger une adresse entière, ou Données de formulaire pour les corps application/x-www-form-urlencoded.

Gratuit sans inscription, sans limites Local rien n'est envoyé 4 modes composant, URL complète, données de formulaire, tous les caractères Mis à jour 27 oct. 2026
Entrée 0Sortie 0

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment encoder une chaîne pour une URL

  1. Saisissez ou collez le texte dans Texte ou URL. La sortie se met à jour pendant la saisie.
  2. Choisissez le mode sous Encoder :
    • Composant (encodeURIComponent) pour une valeur de requête, un champ de formulaire ou un segment de chemin.
    • URL complète (encodeURI) pour une URL entière qui contient des espaces ou des caractères non ASCII.
    • Données de formulaire (espace en +) pour les corps application/x-www-form-urlencoded et les query strings construites à la manière des formulaires HTML.
    • Tous les caractères pour encoder en pourcent tous les octets, lettres comprises, afin de tester des décodeurs.
  3. Laissez Jeu de caractères sur UTF-8, sauf si le système destinataire attend un ancien encodage.
  4. Cochez Chaque ligne séparément pour encoder une liste de valeurs d’un coup, puis Copier la sortie. Inverser envoie le résultat au décodeur pour vérifier l’aller-retour.

Une URL complète saisie est aussi découpée en schéma, hôte, chemin, chacun des paramètres de requête et fragment, dans un tableau sous les panneaux.

encodeURIComponent, encodeURI ou encodage de formulaire

La même entrée, a b&c=d/é?#+, dans les trois styles courants :

ModeSortieUsage
Composant (encodeURIComponent)a%20b%26c%3Dd%2F%C3%A9%3F%23%2Bune seule valeur dans une URL
URL complète (encodeURI)a%20b&c=d/%C3%A9?#+une URL entière déjà correctement structurée
Données de formulaire (URLSearchParams)a+b%26c%3Dd%2F%C3%A9%3F%23%2Benvois de formulaires HTML, beaucoup de bibliothèques de query strings

Composant ne laisse non échappés que A–Z a–z 0–9 - _ . ! ~ * ' ( ). URL complète garde en plus ; / ? : @ & = + $ , #, les caractères qui donnent sa structure à une URL : il ne peut donc pas protéger une valeur qui les contient. Données de formulaire ne garde que les lettres, les chiffres et - _ . *, et écrit les espaces sous forme de +.

Le bug classique consiste à construire une URL avec l’encodage URL complète : ?q=C++ & Go garde le + et le &, et le serveur reçoit q=C plus un paramètre parasite. Encodez plutôt la valeur avec Composant : ?q=C%2B%2B%20%26%20Go.

Espaces, signes plus et autres fauteurs de troubles

CaractèreEncodéPourquoi c’est important
espace%20 ou ++ ne signifie espace que dans les query strings et les corps de formulaire
+%2Bnon encodé, beaucoup de serveurs le transforment en espace : +49 30 1234567 devient 49 30 1234567
&%26commence un nouveau paramètre de requête
=%3Dsépare le nom et la valeur ; le Base64 standard se termine par ce caractère
/%2Fsépare les segments de chemin ; certains serveurs refusent %2F dans les chemins
#%23commence le fragment, qui n’est jamais envoyé au serveur
%%25doit lui-même être encodé, sinon le décodeur lit un échappement cassé
€%E2%82%ACtrois octets UTF-8, trois échappements

Le Base64 dans une URL est un cas typique du problème +, / et =. Encodez-le en pourcent comme un composant, ou passez au Base64URL, qui évite ces caractères.

Jeux de caractères autres que l’UTF-8

L’encodage pourcent travaille sur des octets : c’est donc le jeu de caractères qui détermine le résultat. é donne %C3%A9 en UTF-8 et %E9 en Windows-1252 ou ISO-8859-1. Les navigateurs et les API modernes utilisent l’UTF-8, mais d’anciennes applications PHP, certaines passerelles de paiement et des systèmes intranet hérités attendent encore du Latin-1 ou du Windows-1252, et les sites japonais parfois du Shift_JIS. Choisissez le jeu de caractères correspondant sous Jeu de caractères. Un caractère qui n’existe pas dans le jeu choisi ne peut pas être représenté : vérifiez la sortie pour ces cas-là.

L’encodage d’URL dans le code

encodeURIComponent("a b&c")              // "a%20b%26c"
new URLSearchParams({ q: "C++ & Go" }).toString()   // "q=C%2B%2B+%26+Go"
from urllib.parse import quote, quote_plus, urlencode
quote("/files/a b.txt")            # '/files/a%20b.txt'  (keeps / by default)
quote("/files/a b.txt", safe="")   # '%2Ffiles%2Fa%20b.txt'
quote_plus("a b&c")                # 'a+b%26c'
urlencode({"q": "C++ & Go"})       # 'q=C%2B%2B+%26+Go'

Le quote de Python garde / sauf si vous passez safe="", une surprise fréquente quand on encode une valeur. Ailleurs : en PHP, rawurlencode donne %20 et urlencode donne + ; en Java, URLEncoder.encode fait de l’encodage de formulaire avec + ; Go a url.PathEscape (%20) et url.QueryEscape (+). encodeURIComponent laisse ! ' ( ) * tels quels ; pour une sortie strictement RFC 3986, remplacez-les ensuite :

const strict = s => encodeURIComponent(s).replace(/[!'()*]/g,
  c => "%" + c.charCodeAt(0).toString(16).toUpperCase());

Le côté JavaScript est détaillé sur la page Base64 en JavaScript. Pour faire l’inverse, utilisez le décodeur d’URL.

FAQ

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

L’encodage d’URL, ou encodage pourcent, remplace les caractères interdits ou ayant un sens particulier dans une URL par % suivi des deux chiffres hex de chaque octet. Une espace devient %20, & devient %26, et é en UTF-8 devient %C3%A9.

Comment encoder une espace dans une URL : %20 ou + ?

%20 fonctionne partout. + ne signifie une espace que dans les query strings et les corps de formulaire qui suivent la convention d’encodage des formulaires ; dans un chemin, c’est un plus littéral. En cas de doute, utilisez %20.

Faut-il encoder l'URL entière ?

Non, encodez chaque valeur avant de l’insérer. Encoder une URL entière avec Composant échappe aussi :, /, ? et &, ce qui la casse. Le mode URL complète garde ces caractères structurels et ne corrige que les espaces et le texte non ASCII.

Pourquoi ma chaîne encodée contient-elle %25 ?

%25 est un signe pourcent encodé : l’entrée était déjà encodée et a été encodée une seconde fois, a%20b devient alors a%2520b. Encodez le texte brut une seule fois.

Hex en majuscules ou en minuscules dans l'encodage pourcent ?

La RFC 3986 considère %2F et %2f comme équivalents et recommande les majuscules. Ne cochez Hex en minuscules que pour correspondre à un système qui produit des minuscules, par exemple pour comparer des signatures.