URL-Decoder
Decodeer elke percent-gecodeerde string terug naar leesbare tekst
Percent-Gecodeerd
Gedecodeerde Tekst
Wat is de URL-Decoder?
Plak een percent-gecodeerde string in het linkerpaneel en het rechterpaneel toont het origineel. Onder de motorkap draait decodeURIComponent, dat elke %XX-reeks in de input doorloopt, die hex-paren als UTF-8-bytes behandelt, en de originele tekens reconstrueert. Dus %20 wordt een spatie, %26 wordt &, %E2%9C%85 wordt een vinkje. De omgekeerde richting woont op de URL-Encoder.
Waarom is decoderen lastig? Omdat niet elke % in het wild deel uitmaakt van een geldige percent-gecodeerde reeks. Een losse % gevolgd door niet-hex-tekens (%G1, % aan het eind van de string) is malformed en de decoder gooit een URIError: URI malformed. Deze pagina vangt dat op en toont een vriendelijke "Ongeldige codering"-melding in plaats van een stack trace, dus een corrupte paste breekt de pagina niet. De exacte regels van wat als geldig telt staan in RFC 3986 §2.1 en de WHATWG URL Standaard.
Pas op voor dubbele codering. Als je een string decodeert en de output bevat NOG STEEDS %-tekens (bijvoorbeeld je krijgt Ava%2520Chen terug in plaats van Ava Chen), is de waarde ergens in de keten twee keer gecodeerd — meestal een proxy of framework dat een al gecodeerde waarde automatisch nogmaals heeft gecodeerd. Nogmaals decoderen brengt je de rest van de weg. Wikipedia’s notities over dubbele codering hebben een goede uitleg van hoe dat gebeurt. Alles draait in je browser. Geen upload, geen server, geen logs.
Hoe Gebruik je de URL-Decoder
Drie stappen. De pagina werkt mee terwijl je typt — geen Convert-knop.
Plak je gecodeerde string of klik Voorbeeld
Drop een percent-gecodeerde string in het linkerpaneel. Klik op Voorbeeld om een realistisch voorbeeld te laden. Voorbeeld-input:
Ava%20Chen%20%26%20friends%3F%20customer%40shop.com%20%20100%25%20off!Malformed input (een losse <code>%</code>, een ongeldig hex-paar zoals <code>%G1</code>) verschijnt als "Ongeldige codering"-bericht in het outputpaneel — zie de <a href="https://tc39.es/ecma262/#sec-decodeuricomponent-encodeduricomponent" target="_blank" rel="noopener">ECMAScript-spec voor decodeURIComponent</a> voor de exacte faalregels.
Lees de gedecodeerde output
Het rechterpaneel toont de gedecodeerde tekst. %20 wordt een spatie, %26 wordt &, %3F wordt ?, %40 wordt @, %25 wordt %. Werkt mee terwijl je typt.
Kopieer of download
Klik op Kopiëren om de gedecodeerde tekst naar je klembord te zetten, of op Downloaden om hem op te slaan als .txt-bestand. Gebruik Wissen op het inputpaneel om opnieuw te beginnen. Voor de andere kant op, spring even naar de URL-Encoder.
Wanneer Je Dit Echt Gebruikt
Lezen wat er echt in een query-parameter staat
Een URL als ?customer=Ava%20Chen&tag%5B0%5D=red is moeilijk te scannen met de percent-codes nog op hun plek. Plak hier één waarde en je krijgt Ava Chen of tag[0] terug, wat het meteen duidelijk maakt of de parameter is wat je verwachtte. Om een hele URL uit elkaar te halen, doet de URL-Parser de query-parameters automatisch.
Dubbel gecodeerde waarden debuggen
Je plakt Ava%2520Chen, decodeert één keer, krijgt Ava%20Chen. Die extra laag is het bewijs — ergens heeft een proxy, framework of bibliotheek de waarde een tweede keer gecodeerd. Decodeer nogmaals om de echte string te krijgen. OAuth-specs zijn vaak de boosdoener omdat redirect_uri-waarden vaak door lagen heen gaan die ze elk behulpzaam opnieuw coderen.
Webhook- en analytics-URLs uit logs inspecteren
Wanneer er iets mis gaat in productie, is de URL in het access-log meestal volledig gecodeerd — %7B%22event%22%3A%22signup%22%7D in plaats van de JSON die de webhook daadwerkelijk verstuurde. Plak hem hier en je krijgt {"event":"signup"} terug, en dat is iets wat je kunt lezen.
Een magic link of wachtwoordreset-URL decoderen
Wanneer een klant als Marco Rivera zegt "de reset-link is kapot", bevat de link een token, een e-mail en een redirect-doel — allemaal percent-gecodeerd. De verdachte parameter decoderen laat zien of de e-mail het juiste adres is, of de token een mangling van een mailclient heeft overleefd, of de redirect-URI is afgekapt.
Veelgestelde Vragen
Wat gebeurt er met malformed input zoals een losse % of %G1?
De native decodeURIComponent gooit een URIError: URI malformed bij een reeks die geen geldig %XX hex-paar is. Deze pagina vangt dat op en schrijft "Ongeldige codering: ..." in het outputpaneel in plaats van te crashen. De meest voorkomende oorzaken zijn een losse letterlijke % die %25 had moeten zijn, of een copy-paste die een afsluitend hex-cijfer kwijt is geraakt.
Hoe weet ik of mijn input dubbel gecodeerd is?
Decodeer één keer. Als de output nog steeds %-tekens bevat (vooral %20, %2F, %3A) en het zou platte tekst moeten zijn, is hij twee keer gecodeerd. Decodeer de output van de eerste decodering. Drie rondes is zeldzaam maar mogelijk — meestal betekent het een keten van drie verschillende services die elk dezelfde waarde hebben gecodeerd.
En de + tekens — moeten die naar spaties decoderen?
Niet met decodeURIComponent — die laat + met rust. De +-als-spatie-conventie hoort bij application/x-www-form-urlencoded (HTML-formulierinzendingen), niet bij algemene URL-percent-codering. Als jouw input uit een formulier-body komt en + voor spaties heeft, draai dan eerst .replace(/\+/g, "%20"), daarna decoderen. De WHATWG-spec voor application/x-www-form-urlencoded beschrijft deze tweesmaak-situatie.
Doet hij Unicode en emoji correct round-trip?
Ja. Percent-gecodeerde multi-byte UTF-8-reeksen (bijv. %E2%9C%85 voor een vinkje, %F0%9F%9A%80 voor een raket) decoderen rechtstreeks terug naar de originele tekens. De enige manier waarop dit faalt is als de encoder een niet-UTF-8 charset heeft gebruikt, wat moderne systemen niet doen.
Wordt de input die ik hier plak ergens naartoe gestuurd?
Nee. Het decoderen draait volledig in jouw browser. Geen netwerkcall, geen serverlog, niets verlaat je machine. Tokens, e-mails, ondertekende URLs — allemaal veilig om te plakken.
Hoe groot mag de string zijn die ik hier decodeer?
Er zit een 256 KB-limiet op de input. Als je honderden KB percent-gecodeerde tekst hebt, heb je vrijwel zeker een payload die server-side gedecodeerd zou moeten worden in plaats van in een tool geplakt — gecodeerde payloads van die omvang duiden meestal op verkeerd gebruik van URL-codering voor een taak die om base64 of een request body vraagt.
Andere URL- en Coderingstools
Decoderen is één bewerking. Dit is wat er natuurlijk bij past: