Encoder / décoder une URL — encodage-pourcent et analyseur d’URL

Encodez ou décodez du texte en encodage-pourcent pour les URL, en mode composant, URL complète ou formulaire, et modifiez les paramètres de requête d’une URL dans un tableau.

encodeURIComponent : pour une seule valeur de requête ou un segment de chemin. Échappe tout sauf A–Z a–z 0–9 - _ . ! ~ * ' ( ).

Encodé
name%3DZo%C3%AB%20%26%20Tom%20%2F%20caf%C3%A9%3Fid%3D42%23top

Analyseur d’URL et éditeur de chaîne de requête

Protocolehttps:
Hôteshop.example.com
Port8443
Chemin/search/trail%20shoes
Requête?q=trail+running&size=10&color=blue%20%26%20green&utm_source=newsletter
Fragment#reviews
Originehttps://shop.example.com:8443
Paramètres de requête (0) — décodés, modifiables librement
URL reconstruite
https://shop.example.com:8443/search/trail%20shoes#reviews

Fonctionne entièrement dans votre navigateur. Rien de ce que vous saisissez n’est envoyé ni stocké. Parcourir tous les outils gratuits.

Un problème, ou quelque chose à améliorer ? Nous lisons chaque message et corrigeons vite.

Cet encodeur et décodeur d’URL convertit du texte vers et depuis l’encodage-pourcent, l’échappement de type %20 qui permet aux espaces, esperluettes, accents et emoji de circuler sans risque dans une URL. Il propose les trois encodages que les développeurs confondent réellement : le mode composant pour une seule valeur de requête ou un segment de chemin (encodeURIComponent), le mode URL complète qui laisse intacte la ponctuation propre à l’URL (encodeURI), et le mode formulaire, celui qu’envoient les formulaires HTML et URLSearchParams, avec + pour l’espace.

Le décodage est volontairement strict. Là où le decodeURIComponent du navigateur se contente de lever « URI malformed », cet outil vous indique quelle séquence % est cassée et où, et si les octets ne forment pas de l’UTF-8 valide (signe fréquent qu’un système en amont a utilisé du Latin-1). Sous l’encodeur, l’analyseur d’URL découpe n’importe quelle URL en ses parties et liste les paramètres de requête dans un tableau modifiable qui reconstruit l’URL au fil de vos changements.

Mode d’emploi

  1. Choisissez Encoder ou Décoder, puis le mode : Composant pour une valeur que vous allez insérer dans une URL, URL complète pour une adresse entière, Formulaire pour des données application/x-www-form-urlencoded.
  2. Tapez ou collez du texte. Le résultat se met à jour pendant la saisie ; cochez « Chaque ligne séparément » pour une liste.
  3. Si le décodage échoue, lisez le message : il indique la position et la séquence cassée.
  4. Pour inspecter ou modifier une URL, collez-la dans l’analyseur, modifiez, ajoutez ou supprimez des paramètres de requête, et copiez l’URL reconstruite.

Questions fréquentes

Quelle est la différence entre encodeURI et encodeURIComponent ?

encodeURIComponent échappe tout sauf les lettres, les chiffres et - _ . ! ~ * ' ( ) : il convient donc à un morceau d’URL, comme une valeur de requête susceptible de contenir & ou =. encodeURI suppose que vous lui donnez une URL entière et laisse intacts les caractères qui structurent une URL (: / ? # @ & = + $ , ;). Utiliser encodeURI sur une valeur est un bug classique : un & dans la valeur la scinde alors en deux paramètres.

Un espace doit-il s’écrire %20 ou + ?

Les deux sont corrects, à des endroits différents. Dans la query string d’un envoi de formulaire (application/x-www-form-urlencoded), un espace s’écrit +, et un vrai signe plus doit s’écrire %2B. Partout ailleurs, y compris dans le chemin et la plupart des query strings construites à la main, un espace s’écrit %20, et + signifie un vrai signe plus. Si un serveur affiche des signes plus à la place des espaces, ou l’inverse, les deux côtés ne s’accordent pas sur la règle applicable.

Pourquoi ai-je une erreur « URI malformed » ?

Soit un signe % n’est pas suivi de deux chiffres hexadécimaux (par exemple « 100% » ou « %zz »), soit les octets forment de l’UTF-8 invalide, comme %E9 seul, qui est é en Latin-1 mais pas en UTF-8. Un vrai signe pourcent doit s’écrire %25. Cet outil indique la position exacte pour que vous voyiez de quel cas il s’agit.

Quels caractères faut-il encoder dans une URL ?

La RFC 3986 n’autorise sans encodage, partout, que les lettres, les chiffres et - . _ ~. Les caractères réservés (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) doivent être encodés quand ils apparaissent dans une valeur et non comme élément de structure. Tout le reste, y compris les espaces, les guillemets, < >, les lettres non ASCII et les emoji, doit toujours être encodé, sous forme des octets UTF-8 du caractère.

L’encodage d’URL est-il une forme de chiffrement ?

Non. L’encodage-pourcent est un échappement réversible sans clé ; n’importe qui peut le décoder instantanément. Ne comptez jamais dessus pour masquer un jeton ou des données personnelles dans une URL. Rappelez-vous aussi que les URL finissent dans l’historique du navigateur, les journaux des serveurs et les en-têtes Referer : les secrets n’ont rien à faire dans une query string.

Référence d’encodage : ce que chaque mode laisse intact

• Composant (encodeURIComponent) : laisse A–Z a–z 0–9 - _ . ! ~ * ' ( ). À utiliser pour les valeurs de requête, les segments de chemin et tout ce qui est construit par concaténation.

• URL complète (encodeURI) : laisse en plus ; , / ? : @ & = + $ #. À utiliser uniquement pour nettoyer une URL complète contenant des espaces ou des caractères non ASCII.

• Formulaire (application/x-www-form-urlencoded) : laisse A–Z a–z 0–9 * - . _ et transforme les espaces en +. C’est ce que produisent URLSearchParams.toString() et les formulaires HTML.

• Ensemble non réservé de la RFC 3986 : A–Z a–z 0–9 - . _ ~. L’interprétation la plus stricte ; encoder aussi ! ' ( ) * est toujours sans risque.

Les caractères non ASCII sont toujours encodés sous forme de leurs octets UTF-8 : é donne %C3%A9, et l’emoji 🌲 fait quatre octets, %F0%9F%8C%B2.

Double encodage et autres bugs courants

Le double encodage se produit quand une chaîne déjà encodée est encodée une seconde fois : %20 devient %2520, car le % lui-même est échappé en %25. Si vous voyez %25 suivi de deux chiffres hexadécimaux dans une URL, quelque chose a été encodé deux fois. Décodez une fois et vérifiez si le résultat contient encore des séquences %.

L’erreur inverse consiste à construire une URL par concaténation de chaînes sans aucun encodage. Une recherche de "fish & chips" envoie alors q=fish et un paramètre parasite nommé " chips". Construire les query strings avec URLSearchParams, ou encoder chaque valeur avec encodeURIComponent, évite les deux problèmes.

Enfin, décoder une saisie utilisateur puis l’insérer dans du HTML, c’est ainsi que commence une faille XSS réfléchie. Ne décodez pour l’affichage qu’après avoir échappé pour le HTML ; l’encodeur d’entités HTML se charge de cette étape.

Outils gratuits similaires

  • Générateur de liens UTM — Créez des liens de suivi UTM propres et cohérents pour savoir exactement quelles campagnes vous apportent des clients.
  • Encodeur / décodeur Base64 — Encodez du texte ou des fichiers en Base64, transformez des images en data URI avec extraits CSS et <img>, et décodez du Base64 en fichier avec aperçu. Rien ne quitte votre navigateur.
  • Encodeur d’entités HTML — Échappez du texte pour le HTML avec des entités nommées ou numériques, décodez les références de type &amp; en caractères et cherchez dans un tableau de référence des entités.
  • Décodeur JWT — Décodez l’en-tête et la charge utile d’un JWT, lisez l’expiration en clair, vérifiez les signatures HS, RS, PS et ES ou signez un nouveau jeton. Rien ne quitte votre navigateur.