/url

URL-koder og dekoder (Percent Encoding)

Kod eller dekod URL-parametere (prosentkoding) og analyser query-strenger lokalt.

Bruker encodeURIComponent / decodeURIComponent.

Slik fungerer det

Kod tekst slik at den trygt kan stå i en URL, eller dekod en eksisterende URL tilbake til lesbar tekst. Skriver du inn en hel adresse med spørsmålstegn, brytes query-strengen opp i en tabell.

Om dette verktøyet

URL-koding (kalt «percent encoding») er hvordan spesialtegn må representeres i en URL for at nettleseren, serveren og alt underveis skal tolke dem korrekt. Tegn som mellomrom, `?`, `&`, `#`, `/`, æøå og emoji må konverteres til `%XX`-sekvenser der `XX` er tegnets byte i heksadesimal. Å glemme dette gir kryptiske feil, mellomrom i en query-parameter kutter URL-en, æ i en filsti gir 404. Dette verktøyet lar deg kode og dekode strenger med de tre vanligste variantene: `encodeURIComponent` (mest brukt), `encodeURI` (bevarer URL-strukturen) og query-string-format (`+` for mellomrom, brukt i skjema-poster).

Slik bruker du det

  1. Velg modus: «Kod» konverterer klartekst til percent-encoding, «Dekod» går motsatt vei.
  2. Velg variant, `encodeURIComponent` er standardvalget for query-verdier og path-segmenter.
  3. Lim inn teksten din, koding/dekoding skjer i sanntid mens du skriver.
  4. Ved feil i dekoding (ugyldig `%XX`-sekvens) vises en feilmelding under output-feltet.
  5. Kopier resultatet med ett klikk. Alt kjøres lokalt i nettleseren.

Eksempler

Mellomrom og spesialtegn
Innhello world & friends?
Uthello%20world%20%26%20friends%3F
Mellomrom blir `%20`, `&` blir `%26`, `?` blir `%3F`. Dette er nødvendig for at parameteren skal overleve i en URL.
Norske tegn
InnBlåbær-smør
UtBl%C3%A5b%C3%A6r-sm%C3%B8r
Hver bokstav med tegn kodes som to bytes i UTF-8, `å` = `%C3%A5`, `æ` = `%C3%A6`, `ø` = `%C3%B8`. Bindestreken (`-`) er «trygg» og trenger ikke koding.
Emoji
Inn🚀
Ut%F0%9F%9A%80
Emoji ligger utenfor Basic Multilingual Plane og kodes som 4 UTF-8-bytes.

Vanlige bruksområder

  • Legge inn brukersøk i en URL som sendes til Google/DuckDuckGo (`?q=…`).
  • Bygge REST API-kall der path-segmenter eller query-parametere har spesialtegn.
  • Kode data for `mailto:`- og `tel:`-lenker.
  • Debugge URL-er som ikke virker, dekod for å se hva som faktisk sendes.
  • Håndtere norske filnavn i lenker og redirects på tvers av systemer.
  • Sende parametere til tredjeparts widgets (Google Maps, YouTube-embed).

Ofte stilte spørsmål

Hva er forskjellen på `encodeURI` og `encodeURIComponent`?
`encodeURI` bevarer URL-strukturtegn (`: / ? # [ ] @ ! $ & ' ( ) * + , ; =`), bruk den til å kode en hel URL. `encodeURIComponent` koder alle disse også, bruk den for enkeltverdier som skal legges inn i en URL (typisk `?nøkkel=verdi`). Feil valg = feil kode/dekode.
Hvorfor ser jeg `+` i stedet for `%20`?
I gamle HTML-formularer (`application/x-www-form-urlencoded`) kodes mellomrom som `+` i stedet for `%20`. Begge fungerer i query-strengen, men bare `%20` er tillatt i path-delen av URLen. `URLSearchParams` bruker `+` som standard.
Må jeg kode `å` og `ø` i URL-er?
Ja, teknisk sett skal alle tegn utenfor ASCII kodes. Moderne nettlesere viser dekodede tegn i adresselinjen for lesbarhet, men koder dem før de sendes. Serveren og backend må dekode fra UTF-8 igjen, dette virker som regel automatisk. Feil oppstår typisk ved bruk av latin-1 eller feil charset.
Kan jeg dobbeltkode ved uhell?
Ja, og det er en vanlig feilkilde. Hvis du koder `hello%20world` en gang til, blir det `hello%2520world` (siden `%` blir `%25`). Se etter `%25` i output, det er nesten alltid tegnet på dobbeltkoding. Dekod strengen først hvis du er usikker på om den allerede er kodet.

Teknisk bakgrunn

Percent encoding er definert i RFC 3986. «Reserverte» tegn har spesiell betydning i URL-syntaks og må kodes hvis de brukes bokstavelig i en verdi. «Ureserverte» tegn (bokstaver, tall, `-`, `.`, `_`, `~`) trenger aldri koding. Alle andre bytes (inkludert alle UTF-8 flerbyte-sekvenser) må kodes som `%XX`. JavaScripts `encodeURI` unnlater å kode 82 tegn som er lovlige i en URL, mens `encodeURIComponent` unnlater bare 71 tegn (kodar reserverte tegn også).