URL encode / decode

Wpisz tekst i tryb. hello world daje hello%20world. a b+c daje a%20b%2Bc. %20%2B w decode daje spację i plus. encodeURIComponent, nie plus z formularza.

To encodeURIComponent / decodeURIComponent. Spacja to %20, nie +. Code point jest na kodzie znaku ASCII/Unicode.

Dane

Wynik

Wprowadź dane i kliknij Oblicz.

Jak to działa?

URL encode / decode na tej karcie koduje wpisany tekst. hello world daje hello%20world. a b+c daje a%20b%2Bc. %20%2B w decode daje spację i plus. Extras trzymają te zakodowane ciągi. To encodeURIComponent, nie application/x-www-form-urlencoded.

Pole url-str jest tekstem. Tryb url-mode w dwóch pierwszych extras to encode, w trzecim decode. Spacja staje się %20. Plus staje się %2B. Decode z %20%2B wraca do spacji i plusa.

hello%20world nie jest query z PHP. a%20b%2Bc nie zna plusa jako spacji. Wpisujesz ciąg sam. Karta nie woła serwera.

Kod znaku ASCII/Unicode obok czyta A jako 65. Rozmiar Base64 szacuje długość. Tu hello world zostaje hello%20world.

Wpisz hello world i encode, potem Oblicz. Wynik to hello%20world. Puste pole nic nie koduje. To nie form +.

hello world daje hello%20world. a b+c daje a%20b%2Bc. %20%2B w decode daje spację i plus. Inny tekst zmienia hello%20world.

Wzór

encode = encodeURIComponent(tekst); decode = decodeURIComponent(tekst). Spacja to %20, nie +.

Jak korzystać

  1. Wpisz hello world i tryb encode.
  2. Kliknij Oblicz. Wynik to hello%20world.
  3. a b+c daje a%20b%2Bc. %20%2B w decode daje spację i plus.
  4. To encodeURIComponent, nie plus z formularza.
  5. Code point licz na kodzie znaku ASCII/Unicode.

hello world = hello%20world

encodeURIComponent. hello world daje hello%20world. To nie form +.

URL
Percent-encoding. hello world zostawia hello%20world. Nie query PHP.
encode
Tryb url-mode. a b+c daje a%20b%2Bc. Spacja to %20.
decode
Trzeci extras. %20%2B wraca do spacji i plusa.

Przykłady

Przykład 1

  • hello world
  • encode

hello%20world

Co z hello world w encode? hello%20world. encodeURIComponent, nie form +.

Przykład 2

  • a b+c
  • encode

a%20b%2Bc

Co z a b+c? a%20b%2Bc.

Przykład 3

  • %20%2B
  • decode

+

Co z %20%2B w decode? spacja i plus.

Powiązane kalkulatory

Najczęstsze pytania

Co z hello world w encode?

hello%20world. encodeURIComponent. Spacja to %20, nie +.

Co z a b+c?

a%20b%2Bc. Plus też idzie w %2B.

Co z %20%2B w decode?

Spacja i plus. Decode z percent-encoding.

Czy spacja staje się plusem?

Nie. To nie application/x-www-form-urlencoded. Spacja to %20.

Czy karta woła serwer?

Nie. encodeURIComponent w przeglądarce. Nie ma requestu.

Czy double-encoding %2520 liczy?

Tak jako tekst. Karta nie zgaduje, czy wkleiłeś już %25.

Czy puste pole koduje?

Nie. Bez tekstu nie ma hello%20world.

Gdzie code point A?

Na kodzie znaku ASCII/Unicode, wynik 65. Tu zostaje hello%20world.

Czy + w decode jest spacją?

Nie. + zostaje plusem. Spacja wchodzi jako %20.

Czym jest kodowanie URL (percent-encoding)

URL może bezpiecznie przenosić ograniczony zestaw znaków ASCII. Wszystko inne — spacje, polskie znaki, symbole zarezerwowane — zapisuje się jako percent-encoding: % + dwie cyfry hex (bajt UTF-8 lub inny, zależnie od kontekstu). Przykład: spacja → %20, ą w UTF-8 → %C4%85.

Ten kalkulator używa semantyki zbliżonej do encodeURIComponent / decodeURIComponent w JavaScript: koduje znaki niebezpieczne w komponencie URI (wartość parametru, fragment ścieżki), a dekoduje sekwencje %HH z powrotem na tekst.

Które znaki zwykle wymagają kodowania

  • Zarezerwowane w URI: :/?#[]@!$&'()*+,;= — w wartości parametru często muszą być zakodowane, inaczej zmienią strukturę URL.
  • Spacja i znaki sterujące — zawsze koduj w query/path komponentach.
  • Unicode (ą, €, emoji) — jako sekwencje UTF-8 percent-encoded.
  • Bezpieczne bez kodowania (w encodeURIComponent): litery A–Z a–z, cyfry, - _ . ! ~ * ' ( ) — szczegóły zależą od API; nie zakładaj identyczności z encodeURI.

Spacja: %20 vs plus (+)

  • %20 — uniwersalne percent-encoding spacji (path, query, większość API).
  • + — w application/x-www-form-urlencoded (klasyczne formularze HTML) spacja bywa reprezentowana jako plus w query string.
  • encodeURIComponent('a b')a%20b (nie plus). Dekodowanie samego + jako spacji to osobna reguła formularzy, nie czystego URI component.

Jeśli API oczekuje form-urlencoded, sprawdź dokumentację — mylenie %20 z + to częsty bug integracji.

Kodowanie vs dekodowanie

  • Encode — tekst użytkownika / parametr → bezpieczny fragment URL.
  • Decode%HH z logów, callbacków OAuth, copy-paste → czytelny tekst.
  • Encode nie jest szyfrowaniem: każdy może zdekodować. Nie chroni tajemnic.
  • Niepoprawna sekwencja % (np. %ZZ, ucięte %C4) powoduje błąd dekodowania — kalkulator to zgłosi.

Ścieżka vs query string

  • Query (?q=...) — wartości parametrów koduj per-komponent (encodeURIComponent), a pary łącz & / = już po zakodowaniu wartości.
  • Path — slashe strukturalne zwykle zostaw; segmenty z dziwnymi znakami koduj. encodeURI (cały URL) zachowuje więcej znaków zarezerwowanych niż encodeURIComponent.
  • Fragment (#...) — analogicznie: nie koduj # otwierającego fragmentu; treść fragmentu według potrzeb aplikacji.

Zła praktyka: zakodować cały URL łącznie z https:// przez encodeURIComponent — dostaniesz bezużyteczny ciąg do paska adresu (chyba że celowo przekazujesz URL jako wartość parametru).

Częste błędy i double-encoding

  • Double-encode: a ba%20b → ponownie → a%2520b. Objaw: w logach widać %25.
  • Kodowanie już gotowego query z & — niszczy strukturę parametrów.
  • Dekodowanie wielokrotne „na zapas” — może zepsuć dane, które legalnie zawierają %.
  • Mylenie Base64 z percent-encoding — to inne alfabetów i celów.
  • Kopiowanie z UI, które pokazuje plusy, do kontekstu oczekującego %20.

Przykłady (encode / decode)

  • hello worldhello%20world
  • a&b=c (jako wartość) → a%26b%3Dc
  • żółć%C5%BC%C3%B3%C5%82%C4%87 (UTF-8)
  • 100% sure100%25%20sure (% też musi być zakodowany)
  • Decode a%2520b raz → a%20b; drugi raz → a b (świadome odwracanie double-encode)

Wklej własny ciąg w formularz — wynik możesz skopiować do requestu HTTP lub dokumentacji API.

Szybka tabela kodowania (encodeURIComponent)

Najczęstsze znaki i stringi — semantyka zbliżona do encodeURIComponent w tym kalkulatorze.

WejściePo encodeUwaga
spacja%20nie plus (+) jak w form-urlencoded
@%40częste w e-mailach w query
/%2Fw wartości parametru, nie jako separator ścieżki
?%3Finaczej zacznie nowy query
hello worldhello%20worldprosty test
email@example.comemail%40example.comcały adres jako wartość

Bezpieczny workflow przy budowie URL

  • Zbuduj bazę URL ze stałymi częściami (https://api.example.com/v1/search).
  • Każdą wartość parametru zakoduj osobno (ten kalkulator / encodeURIComponent).
  • Połącz ?k= + encoded + & + kolejne pary — nie koduj gotowego query drugi raz.
  • Przy debugowaniu: jeśli w logu widać %2520, zdekoduj raz i sprawdź, która warstwa koduje nadmiarowo (frontend, gateway, SDK).
  • Test regresji: spacja, &, %, emoji, pusty string, już zakodowany input.

Przykład pełnego query: szukana fraza buty & torby → wartość buty%20%26%20torby → URL .../search?q=buty%20%26%20torby.

FAQ — percent-encoding, spacja i double-encode

Szybkie odpowiedzi przy budowie query stringów i debugowaniu %2520.

Czym różni się encodeURI od encodeURIComponent?
encodeURI chroni cały URL i nie koduje m.in. :/?#. encodeURIComponent koduje agresywniej — do wartości parametrów. Ten kalkulator celuje w semantykę component.
Spacja to %20 czy +?
W URI component zwykle %20. Plus jest typowy dla form-urlencoded. Nie mieszaj reguł.
Jak rozpoznać double-encoding?
Szukaj %25 (zakodowany znak %). np. %2520 to spacja zakodowana dwa razy.
Czy mogę kodować cały adres https://…?
Tylko gdy ten adres jest *wartością* innego parametru. Do paska przeglądarki potrzebujesz strukturalnego URL, nie 100% percent-encoded.
Dlaczego polskie znaki dają wiele %HH?
Bo UTF-8 koduje je na 2+ bajty; każdy bajt → osobne %HH.
Decode wyrzuca błąd — co sprawdzić?
Nieparzyste/ucięte sekwencje %, niehexowe cyfry, lub tekst, który nie był percent-encoded.
Czy encoding chroni przed XSS/SQLi?
Nie wystarczy. To transport URI, nie walidacja wejścia. Aplikacja i tak musi escapować kontekst HTML/SQL.
Kiedy dekodować w backendzie?
Frameworki często dekodują query za Ciebie. Nie dekoduj drugi raz „na wszelki wypadek” — ryzykujesz double-decode bugów.