Utilia

URL encoderen en decoderen

Gratis URL-encoder en -decoder. Codeer queryparameters of volledige URL’s met procentcodering, decodeer %XX-reeksen en lees + als spatie, in je browser.

Modus

Zo gebruik je de URL-encoder en -decoder

  1. Kies Encoderen om tekst om te zetten in een vorm die veilig in een URL past, of Decoderen om procentgecodeerde tekst weer leesbaar te maken.
  2. Kies bij het encoderen een Modus: Component voor één waarde (zoals een queryparameter of een padsegment), of Volledige URL om een compleet adres te coderen zonder de structuur te breken.
  3. Decodeer je gegevens uit een HTML-formulier of een querystring, zet dan + als spatie behandelen aan, zodat +-tekens spaties worden.
  4. Plak je tekst en kopieer het resultaat. Is een procentreeks ongeldig, dan meldt de tool een fout in plaats van te gokken.

Wat is URL-codering?

URL’s mogen maar een beperkte set ASCII-tekens bevatten. Sommige tekens, zoals /, ?, #, & en =, zijn gereserveerd omdat ze de delen van een adres scheiden: het pad, de querystring en het fragment. Andere, zoals spaties, aanhalingstekens, letters met accenten of emoji, zijn gewoon niet toegestaan. URL-codering, ook wel procentcodering (percent-encoding) genoemd, lost beide problemen op door elke lastige byte te vervangen door een % gevolgd door twee hexadecimale cijfers.

Tekst wordt eerst omgezet in UTF-8-bytes, en elke byte wordt apart gecodeerd. Een spatie wordt %20, een ampersand wordt %26, é (twee bytes in UTF-8) wordt %C3%A9 en de emoji 😀 (vier bytes) wordt %F0%9F%98%80. Niet-gereserveerde tekens, dus letters, cijfers en - _ . ~, hoeven nooit gecodeerd te worden.

Component of volledige URL

De juiste modus kiezen is de belangrijkste beslissing, en een verkeerde keuze is een klassieke bron van bugs.

Component werkt zoals encodeURIComponent in JavaScript. Elk gereserveerd teken wordt gecodeerd, zodat het resultaat veilig binnen één deel van een URL past. Gebruik het voor waarden van queryparameters, padsegmenten of alles wat een gebruiker heeft getypt. De zoekterm rock & roll wordt bijvoorbeeld rock%20%26%20roll. Codeer je de & niet, dan leest de server roll als het begin van een nieuwe parameter.

Volledige URL werkt zoals encodeURI. Deze modus gaat ervan uit dat de invoer al een compleet adres is en behoudt de tekens die het structuur geven, zoals : / ? # & en =, terwijl spaties en niet-ASCII-tekens worden gecodeerd. Gebruik het om een adres als https://example.com/café menu?q=thee op te schonen tot https://example.com/caf%C3%A9%20menu?q=thee. Gebruik het niet voor losse waarden: een & in een waarde blijft dan ongecodeerd en breekt de querystring.

Een goede vuistregel: bouw URL’s op uit delen, codeer elke waarde in de modus Component en gebruik Volledige URL alleen voor adressen die je al in elkaar gezet ontvangt.

Het plusteken en formuliercodering

HTML-formulieren die met application/x-www-form-urlencoded worden verstuurd, coderen spaties als + in plaats van %20. Daarom zien zoek-URL’s er vaak uit als ?q=hallo+wereld. Standaard procentdecodering laat + staan, want in een pad is een plus gewoon een plus. Decodeer je een querystring of formuliergegevens, zet dan + als spatie behandelen aan om hallo wereld te krijgen. Laat het uit voor paden en voor waarden waarin een echte + belangrijk is, zoals telefoonnummers of Base64-gegevens. Een echt plusteken in formuliergegevens wordt verstuurd als %2B, dus dat wordt hoe dan ook correct gedecodeerd.

Privacy

Encoderen en decoderen gebeuren volledig in je browser. Niets wat je plakt, ook geen URL’s met tokens, sessie-ID’s of persoonsgegevens, wordt naar een server gestuurd of opgeslagen.

Veelgestelde vragen

Waarom mislukt decoderen met de melding “Ongeldige procentcodering”?

Na een % moeten precies twee hexadecimale cijfers volgen, en de bytes die zo ontstaan moeten geldige UTF-8 vormen. Strings zoals 100%, %G1 of een afgebroken reeks zoals %E2%82 kunnen niet betrouwbaar worden gedecodeerd, dus de tool meldt het probleem in plaats van onjuiste tekst te maken. Wil je een letterlijk procentteken opnemen, codeer het dan als %25.

Wat is het verschil tussen %20 en +?

Beide kunnen een spatie voorstellen, maar in verschillende situaties. %20 is overal in een URL geldig. + betekent alleen een spatie in querystrings met formuliercodering; elders is het een gewoon plusteken.

Moet ik een hele URL in de modus Component coderen?

Alleen als de hele URL zelf een waarde is binnen een andere URL, bijvoorbeeld in een parameter redirect=. Dan is Component precies goed: https://a.com/?x=1 wordt https%3A%2F%2Fa.com%2F%3Fx%3D1.

Waarom is mijn tekst dubbel gecodeerd?

Dubbele codering ontstaat als al gecodeerde tekst opnieuw wordt gecodeerd, waardoor %20 verandert in %2520. Decodeer één keer om het te controleren, en zorg ervoor dat elke waarde pas wordt gecodeerd op het moment dat je hem in de URL zet.

Verbergt of beschermt URL-codering gegevens?

Nee. Procentcodering is volledig omkeerbaar en biedt geen enkele beveiliging. Gevoelige waarden in URL’s kunnen in de browsergeschiedenis en serverlogs terechtkomen, dus zet geheimen liever helemaal niet in URL’s.