URL decoderen en encoderen online
Decodeer of encodeer URL's in realtime met ingebouwde URL-parser. Twee modi: encodeURI en encodeURIComponent. 100% privé, geen data naar servers.
Wat is URL-encoding (percent-encoding)?
URL-encoding, formeel bekend als percent-encoding, is een mechanisme gedefinieerd in RFC 3986 voor het weergeven van tekens in een Uniform Resource Identifier (URI) die niet zijn toegestaan of een speciale betekenis hebben. Het zet elke onveilige byte om naar een procentteken (%) gevolgd door twee hexadecimale cijfers — een spatie wordt %20, een ampersand %26 en het Chinese teken 中 wordt %E4%B8%AD (de drie UTF-8-bytes, elk percent-geëncodeerd).
URL's mogen slechts een beperkte set tekens uit de ASCII-tekenset bevatten. Letters, cijfers en een handvol symbolen (- _ . ~) worden als 'onbereikbaar' beschouwd en mogen als zodanig voorkomen. Alle andere tekens — waaronder spaties, leestekens en het volledige Unicode-bereik — moeten percent-geëncodeerd worden voor veilig transport in een URL. Gereserveerde tekens zoals ?, &, = en # fungeren als structurele scheidingstekens in de URL-syntaxis en moeten ook geëncodeerd worden wanneer ze als letterlijke data worden gebruikt in plaats van als scheidingstekens.
Percent-encoding is essentieel op het hele web: browsers encoderen formulierinzendingen, API's vereisen geëncodeerde queryparameters, OAuth-stromen zijn afhankelijk van correct geëncodeerde redirect-URI's en geïnternationaliseerde domeinnamen vertrouwen op encoding voor niet-ASCII-tekens. Onjuiste encoding leidt tot gebroken links, beveiligingsproblemen (zoals open-redirect-aanvallen) en datacorruptie.
Deze tool biedt zowel encodeURI- als encodeURIComponent-modi, een ingebouwde URL-structuurparser, realtime omzetting en detectie van dubbele encoding — alles draait privé in je browser.
URL-encoding wordt vaak gebruikt naast andere webontwikkeltools. Misschien wil je een URL Base64-encoderen voor opname in een JWT-token of API-payload, of JSON-data formatteren die URL-strings bevat om de structuur te inspecteren. Voor aanvullende informatie over hoe JWT's URL-encoding gebruiken voor hun payload kun je de JWT-decoder raadplegen.
// Encode a query parameter value
const param = encodeURIComponent('hello world & goodbye');
console.log(param); // → 'hello%20world%20%26%20goodbye'
// Encode a full URL (preserves structure)
const url = encodeURI('https://example.com/path name?q=hello world');
console.log(url); // → 'https://example.com/path%20name?q=hello%20world'
// Decode a percent-encoded string
const decoded = decodeURIComponent('hello%20world%20%26%20goodbye');
console.log(decoded); // → 'hello world & goodbye'
// Build a URL with encoded parameters
const base = 'https://api.example.com/search';
const query = `?q=${encodeURIComponent('你好')}&lang=zh`;
console.log(base + query); // → 'https://api.example.com/search?q=%E4%BD%A0%E5%A5%BD&lang=zh' Functies
Twee encoderingsmodi
Wissel tussen encodeURI (behoudt URL-structuur) en encodeURIComponent (encodeert alles voor parameterwaarden) om precies de juiste modus voor je situatie te kiezen.
Ingebouwde URL-parser
Verdeelt elke URL automatisch in protocol, host, poort, pad, queryparameters en fragment — elk veld is bewerkbaar en kan worden samengevoegd tot een nieuwe URL.
Realtime omzetting
Encodeer en decodeer direct terwijl je typt — geen knoppen nodig, resultaten verschijnen meteen in het andere vak bij elke toetsaanslag.
100% browsergebaseerd
Alle verwerking vindt lokaal in je browser plaats via native JavaScript-API's. Je data verlaat je apparaat nooit — geen uploads naar servers, geen tracking.
Volledige UTF-8-ondersteuning
Verwerkt correct Chinees, Japans, Koreaans, Arabisch, emoji en alle Unicode-tekst via correcte UTF-8-byte-encoding en -decoding.
Detectie van dubbele encoding
Detecteert automatisch dubbele encoding zoals %2520 (een percent-geëncodeerde %20) en geeft een waarschuwing, waardoor je een van de meest voorkomende URL-encodingsfouten kunt voorkomen.
Voorbeelden
Onleesbare URL decoderen
https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
https://example.com/search?q=hello world&lang=en
Een volledig percent-geëncodeerde URL wordt teruggezet naar leesbare tekst, waardoor de oorspronkelijke queryparameters en structuur zichtbaar worden
Chinese tekens
https://example.com/search?q=你好世界
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
Chinese tekens worden omgezet naar hun UTF-8 bytesequenties en percent-geëncodeerd
Queryparameters
https://example.com/api?name=John Doe&role=admin&lang=en&sort=date desc
https://example.com/api?name=John%20Doe&role=admin&lang=en&sort=date%20desc
Spaties en speciale tekens in queryparameterwaarden worden percent-geëncodeerd, terwijl de URL-structuur behouden blijft
Volledige URL
https://user:pass@example.com:8080/path/to/page?key=value&arr[]=1#section-2
https://user:pass@example.com:8080/path/to/page?key=value&arr%5B%5D=1#section-2
Een complete URL met inloggegevens, poort, pad, queryparameters met haakjes en een fragment-identifier
OAuth-redirect-URI
https://auth.example.com/authorize?redirect_uri=https://myapp.com/callback?code=abc&state=xyz
https://auth.example.com/authorize?redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback%3Fcode%3Dabc%26state%3Dxyz
De redirect_uri-waarde bevat zelf een volledige URL die geëncodeerd moet worden, zodat de speciale tekens niet als onderdeel van de buitenste URL worden geïnterpreteerd
Zo gebruik je het
- 1
Voer een URL of geëncodeerde string in
Plak een URL in het gedecodeerde vak om hem te encoderen, of plak een percent-geëncodeerde string in het geëncodeerde vak om hem te decoderen. Kies de encodeURI- of encodeURIComponent-modus op basis van je gebruikssituatie.
- 2
Bekijk de resultaten en de URL-structuur
Het andere vak wordt direct bijgewerkt terwijl je typt. De URL-parser verdeelt de URL in protocol, host, poort, pad, queryparameters en fragment — allemaal bewerkbaar.
- 3
Kopiëren of opnieuw opbouwen
Klik op Kopiëren om het geëncodeerde of gedecodeerde resultaat te kopiëren. Bewerk afzonderlijke URL-onderdelen en klik op Opnieuw opbouwen om een nieuwe URL samen te stellen uit de gewijzigde onderdelen.
Veelgemaakte fouten
Dubbele encoding (%2520 in plaats van %20)
Dubbele encoding treedt op wanneer een al-geëncodeerde URL opnieuw wordt geëncodeerd. Het %-teken in %20 wordt geëncodeerd als %25, waardoor %20 verandert in %2520. Dit breekt de URL omdat de server een letterlijke %20-string ziet in plaats van een spatie.
https://example.com/path%2520with%2520spaces
https://example.com/path%20with%20spaces
Spatie geëncodeerd als + in padsegmenten
Het +-teken staat alleen voor een spatie in het application/x-www-form-urlencoded-formaat (querystrings van HTML-formulieren). In URL-padsegmenten wordt + geïnterpreteerd als een letterlijk plusteken, niet als een spatie. Gebruik altijd %20 voor spaties in padsegmenten.
https://example.com/my+file+name.pdf
https://example.com/my%20file%20name.pdf
encodeURI gebruiken op queryparameterwaarden
encodeURI() encodeert &, = en andere gereserveerde tekens niet, waardoor het gebruiken ervan op een parameterwaarde die deze tekens bevat de querystring-structuur beschadigt.
encodeURI('key=value&more') → 'key=value&more' (& not encoded!) encodeURIComponent('key=value&more') → 'key%3Dvalue%26more' Uitgaan van niet-UTF-8-encoding
Sommige verouderde systemen gebruiken encodings zoals Latin-1 of Shift-JIS voor URL-parameters. Moderne standaarden vereisen UTF-8. Een Shift-JIS-geëncodeerde parameter decoderen met een UTF-8-decoder levert beschadigde tekst op.
Decoding %82%B1%82%F1 as UTF-8 (this is Shift-JIS for こん)
Using UTF-8: %E3%81%93%E3%82%93 correctly decodes to こん
Relatieve paden encoderen zonder context
Een relatief pad zoals ../images/photo.jpg encoderen met encodeURIComponent zet de schuine strepen en punten om naar percent-geëncodeerde sequenties, waardoor de padstructuur kapot gaat. Gebruik encodeURI() of encodeer alleen de afzonderlijke padsegmenten.
encodeURIComponent('../images/photo.jpg') → '..%2Fimages%2Fphoto.jpg' Encode each segment: '../images/' + encodeURIComponent('my photo.jpg') Veelvoorkomende toepassingen
- Onleesbare URL's debuggen
- Decodeer percent-geëncodeerde URL's uit serverlogs, foutmeldingen of de browser-developer tools om de oorspronkelijke leesbare tekst te lezen.
- API-ontwikkeling
- Encodeer queryparameterwaarden voor REST API-aanroepen, zodat speciale tekens zoals &, = en spaties de verzoek-URL niet breken.
- OAuth-stroom instellen
- Encodeer redirect_uri en andere URL-parameters in OAuth-autorisatie-URL's correct om authenticatiefouten te voorkomen.
- Geïnternationaliseerde URL's
- Encodeer en decodeer URL's met Chinese, Japanse, Koreaanse, Arabische of andere niet-ASCII-tekens voor geïnternationaliseerde webapplicaties.
- Marketing-linkanalyse
- Decodeer tracking-URL's uit e-mailcampagnes en advertentieplatforms om de ingesloten UTM-parameters en omleidingsketens te begrijpen.
- URL-structuurinspectie
- Verwerk complexe URL's naar hun samenstellende delen — protocol, host, poort, pad, queryparameters en fragment — voor analyse en aanpassing.
Technische details
- RFC 3986 gereserveerde en onbereikbare tekens
- RFC 3986 definieert onbereikbare tekens (A-Z, a-z, 0-9, -, ., _, ~) die nooit geëncodeerd hoeven te worden, en gereserveerde tekens (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) die als URI-scheidingstekens dienen en percent-geëncodeerd moeten worden wanneer ze als data worden gebruikt.
- UTF-8-byte-encoderingsproces
- Niet-ASCII-tekens worden eerst omgezet naar hun Unicode-codepunt, vervolgens geëncodeerd als UTF-8-bytes (1-4 bytes afhankelijk van het codepuntbereik), en tot slot wordt elke byte als %XX percent-geëncodeerd. Bijvoorbeeld: é (U+00E9) → UTF-8-bytes C3 A9 → %C3%A9. De emoji 🎉 (U+1F389) → UTF-8-bytes F0 9F 8E 89 → %F0%9F%8E%89.
- URL versus URI-terminologie
- Een URI (Uniform Resource Identifier) is de overkoepelende term voor elke identifier-string. Een URL (Uniform Resource Locator) is een URI die ook het toegangsmechanisme specificeert (zoals https://). De encoderingsregels in RFC 3986 zijn op alle URI's van toepassing. De JavaScript-API gebruikt de URI-terminologie (encodeURI, decodeURI), terwijl het dagelijkse gebruik de voorkeur geeft aan URL.
Best practices
- Gebruik de juiste modus voor de situatie
- Gebruik encodeURIComponent() voor afzonderlijke queryparametersleutels en -waarden. Gebruik encodeURI() alleen wanneer je een volledige URL hebt en onveilige tekens wilt encoderen zonder de structuur te breken. Gebruik nooit encodeURI() op parameterwaarden die &, = of andere gereserveerde tekens kunnen bevatten.
- Vermijd dubbele encoding
- Controleer vóór het encoderen van een string of deze al geëncodeerd is. Kijk naar bestaande %-sequenties. Een al-geëncodeerde string opnieuw encoderen verandert %20 in %2520, %3D in %253D, enzovoort. Als je het niet zeker weet, decodeer dan eerst en encodeer daarna eenmalig.
- Decodeer aan de serverzijde
- De meeste webframeworks decoderen URL-parameters automatisch voordat je applicatiecode ze verwerkt. Vermijd het handmatig decoderen van parameters die je framework al heeft gedecodeerd — dit kan problemen veroorzaken als de oorspronkelijke waarde letterlijke procentsequenties bevatte.
- Encodeer waarden voor OAuth en API-ondertekening
- OAuth 1.0-handtekeningbasisstrings en veel API-ondertekeningsalgoritmen vereisen strikte RFC 3986-percent-encoding. Gebruik encodeURIComponent() en vervang daarna eventuele resterende tekens die het niet encodeert (zoals !, ', (, ), *) door hun percent-geëncodeerde equivalenten als de specificatie dat vereist.
Veelgestelde vragen
Wat is URL-encoding en waarom is het noodzakelijk?
Wat is het verschil tussen encodeURI en encodeURIComponent?
Is URL-encoding hetzelfde als HTML-encoding?
Waarom breekt mijn URL als ik hem in een curl-opdracht gebruik?
Waarom worden Chinese tekens strings zoals %E4%B8%AD in URL's?
Moet ik de OAuth redirect_uri-parameter encoderen?
Wat is het verschil tussen Node.js querystring en URLSearchParams?
Zo encodeer je een URL in Python, JavaScript en Java
Welke tekens worden niet geëncodeerd door URL-encoding?
Wat is het verschil tussen + en %20 voor het encoderen van spaties?
Hoe verwerkt URL-encoding emoji?
Kan URL-encoding worden gebruikt voor versleuteling of beveiliging?
Wat is de maximale lengte van een URL?
Wat is het verschil tussen een URL en een URI?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Online JSON-formatter & validator
Encodering en formattering
Formatteer en valideer JSON direct in je browser. Gratis online tool met syntaxvalidatie, foutdetectie, minificeren en kopiëren met één klik. 100% privé.
Talstelsel omrekenen — online converter
Omrekentools
Reken je getal direct om tussen binair, hex, decimaal, octaal en elk talstelsel (2-36). Gratis en privé — alles draait in je browser.
Afbeelding comprimeren — online tool
Omrekentools
Comprimeer JPEG, PNG & WebP tot 80% kleiner — in je browser, zonder uploaden. Batch 20 afbeeldingen, stel kwaliteit in, vergelijk voor & na. Gratis & privé.
JWT decoderen — online JWT-decoder
Beveiligingstools
Decodeer JWT-tokens direct in je browser. Inspecteer header, payload, signature, vervaldatum en claims. 100% privé — je token verlaat je apparaat nooit.
Lengte omrekenen — online converter
Omrekentools
Reken direct om tussen 16 lengte-eenheden — metrisch, imperiaal, nautisch & astronomisch. 1 inch = 2,54 cm. Gratis, privé, draait in je browser.