Décodeur d'URL en ligne

Décoder les URLs encodées en pourcentage

Essayer un exemple

URL / Texte encodé

Décodé

Fonctionne localement · Sûr pour coller des secrets
Sortie décodée...

Qu'est-ce que le décodage d'URL ?

Le décodage d'URL (décodage en pourcentage) est l'inverse de l'encodage d'URL : il convertit les séquences encodées en pourcentage en leurs caractères originaux. Chaque occurrence d'un signe pourcentage suivi de deux chiffres hexadécimaux (%XX) est remplacée par l'octet que XX représente. Les octets encodés consécutifs multiples sont recombinés pour reconstruire le caractère UTF-8 original.

Le décodage d'URL est une tâche quotidienne pour les développeurs travaillant avec des API, le web scraping, l'analyse de logs et les flux d'authentification. Les URLs encodées sont lisibles par les machines mais opaques pour les humains — les décoder révèle instantanément les vrais chemins, requêtes de recherche, cibles de redirection et valeurs de paramètres qui nécessiteraient sinon une conversion mentale hexadécimal vers caractère.

Pourquoi utiliser cet outil ?

Comprenez rapidement n'importe quelle URL ou chaîne de requête encodée en pourcentage — sans console de navigateur, rien n'est envoyé à un serveur.

Décodage instantané
Collez n'importe quelle URL ou paramètre encodé et voyez la version lisible immédiatement. Idéal pour déboguer les requêtes API et les fichiers de logs.
🛡️
Récupération d'erreurs
Utilise en secours le legacy unescape() pour les entrées contenant des caractères Latin-1 encodés en pourcentage à l'ancienne qui échoueraient avec decodeURIComponent.
🔒
Côté client uniquement
Tout le décodage s'exécute localement dans votre navigateur. Les jetons, mots de passe et paramètres de requête privés ne quittent jamais votre appareil.
🔁
Support d'URL complète
Décodez des URLs complètes ou des valeurs de paramètres individuels. L'outil gère les espaces %20 standard et préserve les signes + comme des caractères plus littéraux.

Comment utiliser ce décodeur d'URL en ligne

Aucun compte, aucune installation. Collez votre chaîne encodée en pourcentage dans le champ de saisie et le résultat décodé apparaît instantanément. Tout s'exécute dans votre navigateur — vos données ne quittent jamais votre appareil.

  1. 1
    Collez votre URL encodée ou votre chaîne
    Copiez n'importe quelle chaîne encodée en pourcentage — une URL depuis la barre d'adresse, un paramètre de requête depuis des logs serveur, une réponse API ou une cible de redirection — et collez-la dans le champ de saisie.
  2. 2
    Détection automatique du format
    Le décodeur gère automatiquement l'encodage %XX et le + comme espace (application/x-www-form-urlencoded). Inutile de spécifier manuellement le format d'encodage.
  3. 3
    Inspectez la sortie décodée
    Le texte lisible apparaît instantanément. Si l'entrée contenait un encodage imbriqué (chaînes doublement encodées), le décodeur résout une couche à la fois. Une erreur s'affiche pour les séquences %XX malformées.
  4. 4
    Copier ou réencoder
    Cliquez sur Copier pour récupérer la chaîne décodée. Besoin de la réencoder avec des paramètres différents ? Passez à l'outil Encodeur d'URL en un clic.

Comment fonctionne le décodage

Le décodeur parcourt l'entrée à la recherche de séquences %, convertit chaque groupe de deux chiffres hexadécimaux en une valeur d'octet, regroupe les séquences d'octets consécutives et les interprète comme UTF-8 pour produire les caractères Unicode finaux.

Exemple
Entrée :https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world
%3A:  %2F/  %3F?  %3D=  %20space
Sortie :https://example.com/search?q=hello world

Référence des caractères encodés en pourcentage

Une référence rapide pour les séquences encodées en pourcentage les plus fréquemment rencontrées :

EncodéCar.Où vous le verrez
%20spacepath segments, query values
%2B+literal plus (not a space in query)
%2F/slash inside a path component
%3F?literal question mark in a value
%23#literal hash in a value
%26&literal ampersand in a value
%3D=literal equals sign in a value
%40@at sign in username / password
%3A:colon inside a path segment
%25%literal percent sign
%2C,comma in path or query
%5B[opening bracket
%5D]closing bracket
%7B{curly brace in template literals
%7D}curly brace in template literals

Cas d'utilisation courants

Débogage de requêtes API
Copiez une URL depuis les logs réseau des DevTools du navigateur et décodez-la pour voir les vraies valeurs des paramètres de requête — particulièrement utile lorsque des outils automatisés ou des bibliothèques ont encodé en pourcentage les paramètres.
Lecture des fichiers de logs
Les logs d'accès des serveurs web et les logs d'application stockent les URLs dans leur forme encodée. Décodez-les pour trouver les vrais chemins demandés, termes de recherche et valeurs de paramètres.
Inspection des redirections
Les callbacks OAuth, les redirections SSO et les URLs de suivi de liens portent souvent des paramètres redirect_uri ou next fortement encodés. Décodez l'URL pour tracer la destination prévue.
Analyse des payloads de webhook
Les corps de webhook envoyés en application/x-www-form-urlencoded (Stripe, Twilio, GitHub) arrivent comme des chaînes encodées en pourcentage. Décodez-les pour lire les vraies valeurs des champs.
Extraction des requêtes de recherche
Les URLs d'analytics et les en-têtes referrer contiennent la requête de recherche originale de l'utilisateur encodée en pourcentage dans le paramètre q=. Décodez pour afficher ou analyser les vrais termes de recherche.
Rétro-ingénierie d'URLs
Lors de l'intégration avec des API tierces ou du scraping, les URLs rencontrées contiennent souvent des segments de chemin et des paramètres encodés. Décodez-les pour comprendre la structure de l'URL et reproduire les requêtes.

Pièges courants

Voici les erreurs les plus fréquentes lors du décodage de chaînes encodées en pourcentage :

Confondre + avec %20
Dans les données application/x-www-form-urlencoded (soumissions de formulaires HTML), + représente un espace. Mais dans un chemin d'URL brut ou une valeur encodée avec encodeURIComponent, + est un signe plus littéral. decodeURIComponent ne convertit pas + en espace — utilisez URLSearchParams ou unquote_plus pour les données de formulaire.
Chaînes doublement encodées
Si une chaîne a été encodée deux fois, la décoder une seule fois laisse encore des signes pourcentage : %2520 se décode en %20, pas en espace. Décodez une deuxième fois pour obtenir la valeur originale. Surveillez cela dans les logs, proxies et middlewares qui ré-encodent des données déjà encodées.
Séquences en pourcentage malformées
Un % isolé ou suivi de caractères non hexadécimaux (ex : %GG ou % 2) est invalide et lèvera un URIError. Validez toujours l'entrée ou encadrez le décodage dans un try/catch.
Incompatibilité d'encodage (Latin-1 vs UTF-8)
Les anciens systèmes (urlencode de PHP, ASP classique) encodaient les caractères comme des octets Latin-1. Une chaîne encodée en Latin-1 peut se décoder incorrectement avec un décodeur UTF-8. Si vous voyez des caractères illisibles, essayez le chemin legacy unescape() ou déterminez l'encodage original.

Exemples de code

Comment décoder des chaînes d'URL dans les langages et environnements populaires :

JavaScript (browser / Node.js)
// Decode a percent-encoded component
decodeURIComponent('hello%20world%20%26%20more') // → "hello world & more"

// Decode a full URL (leaves structure characters encoded)
decodeURI('https://example.com/path?q=hello%20world') // → "https://example.com/path?q=hello world"

// Parse a query string (handles + as space automatically)
const params = new URLSearchParams('q=hello+world&lang=en')
params.get('q') // → "hello world"
Python
from urllib.parse import unquote, unquote_plus, parse_qs

# Decode percent-encoded string
unquote('hello%20world%20%26%20more')   # → 'hello world & more'

# Decode form-encoded string (+ → space)
unquote_plus('hello+world%21')          # → 'hello world!'

# Parse full query string
parse_qs('q=hello%20world&lang=en')     # → {'q': ['hello world'], 'lang': ['en']}
Node.js (URL API)
const url = new URL('https://example.com/search?q=hello%20world%20%26%20more')
url.searchParams.get('q')  // → "hello world & more"
url.pathname               // → "/search"
CLI (bash)
# Decode with Python one-liner
python3 -c "from urllib.parse import unquote; print(unquote('hello%20world'))"

# Decode with Node.js
node -e "console.log(decodeURIComponent('hello%20world%20%26'))"

Décodeur d'URL vs. alternatives

Plusieurs outils peuvent décoder des chaînes encodées en pourcentage, mais ils diffèrent en clarté, confidentialité et commodité.

Cet outil
Basé sur le navigateur, instantané, privé. Gère l'encodage %XX, le + comme espace, Unicode et les séquences malformées. Aucune donnée envoyée à un serveur.
Barre d'adresse du navigateur
Les navigateurs décodent les URL pour l'affichage, mais pas toujours complètement — certains caractères encodés restent visibles dans la barre d'adresse. Pas utile pour inspecter des valeurs de paramètres individuels.
DevTools / curl -v
Les DevTools du navigateur et curl affichent les URL brutes et décodées dans les requêtes réseau. Utile pour le débogage, mais nécessite de changer d'outil et de savoir où chercher.

Foire aux questions

Quelle est la différence entre decodeURIComponent et decodeURI ?
decodeURIComponent décode toutes les séquences encodées en pourcentage incluant les caractères réservés (%2F → /, %3F → ?, etc.). decodeURI ne décode que les séquences qui ne produiraient pas un caractère avec une signification spéciale dans une URL — il laisse %2F, %3F, %23 et autres caractères structurels encodés. Utilisez decodeURIComponent pour les valeurs de paramètres ; utilisez decodeURI uniquement lorsque vous avez une URL complète et souhaitez préserver sa structure.
Pourquoi vois-je URIError : URI malformée ?
Cette erreur de decodeURIComponent survient lorsque l'entrée contient un % non suivi de deux chiffres hexadécimaux valides, ou lorsqu'une séquence UTF-8 multi-octets est incomplète (ex : %E2 sans le suivant %82%AC). Supprimez ou échappez les signes pourcentage isolés avant de décoder.
Le décodage traite-t-il + comme un espace ?
Non — decodeURIComponent traite + comme un signe plus littéral, pas un espace. La convention + → espace ne s'applique qu'aux données application/x-www-form-urlencoded (soumissions de formulaires HTML). Pour décoder des données encodées en formulaire, utilisez URLSearchParams (navigateur/Node) ou urllib.parse.unquote_plus (Python).
Est-il sûr de faire le décodage d'URL côté client ?
Oui — le décodage d'URL est une transformation pure sans requêtes réseau. Tous les navigateurs modernes incluent decodeURIComponent et decodeURI comme fonctions natives. Cet outil effectue le décodage entièrement dans votre navigateur ; aucune donnée n'est envoyée nulle part.
Comment décoder une URL qui a été encodée plusieurs fois ?
Décodez-la plusieurs fois jusqu'à ce que la sortie se stabilise (plus de séquences % résolues). Cela se produit lorsqu'une URL déjà encodée passe par un autre encodeur. Chaque passe de décodage supprime une couche d'encodage.
Que représente %XX ?
Les deux caractères après % sont des chiffres hexadécimaux représentant une valeur d'octet unique (00–FF). Pour les caractères ASCII, cet octet est le code ASCII du caractère : %41 = 65 = 'A'. Pour les caractères non ASCII, plusieurs séquences %XX représentent la séquence d'octets UTF-8 du caractère : le signe euro est %E2%82%AC (trois octets : 0xE2, 0x82, 0xAC).
Quel encodage un navigateur utilise-t-il lors de la soumission de formulaires HTML ?
Les formulaires HTML avec method=GET ajoutent les champs à l'URL en utilisant l'encodage application/x-www-form-urlencoded, qui remplace les espaces par + au lieu de %20 et encode les autres caractères spéciaux en pourcentage. L'option + → espace de l'outil URL Decode gère ce format. Les formulaires avec method=POST et enctype=application/x-www-form-urlencoded utilisent le même schéma dans le corps de la requête.
Y a-t-il une limite de taille pour le décodage ?
Aucune limite côté serveur — l'outil s'exécute entièrement dans votre navigateur. Les limites pratiques dépendent de la mémoire de votre navigateur. Pour les très longues chaînes encodées ou le traitement par lots, utilisez decodeURIComponent dans un script.