Przejdź do treści
Technologia 7 min czytania

URL encoding: dlaczego spacje zmieniają się na %20

Papierowy pasek z blokami przechodzi przez mechaniczny wałek

Adres URL nie może zawierać każdego znaku w zwykłej postaci. Zobacz, czym jest percent-encoding, dlaczego spacja zmienia się na %20 i kiedy użyć URL enkodera.

Jeśli zdarzyło Ci się skopiować link i zobaczyć w nim znaki takie jak %20, %C4%8D albo %3F, to był właśnie URL encoding. Wygląda dziwnie, ale nie jest błędem. To sposób bezpiecznego zapisywania znaków specjalnych w adresach URL.

Najbardziej znanym przykładem jest spacja. W zwykłym tekście po prostu ją wpisujesz. W adresie URL spacja nie powinna jednak występować jako zwykła spacja, dlatego często zmienia się na:

%20

Szybkie sprawdzenie linku

Zakoduj albo odkoduj URL w kilka sekund

Wklej tekst, parametr albo fragment linku i od razu zobacz bezpieczną postać URL oraz czytelną wersję.

Dlaczego URL nie może zawierać wszystkiego

Adres URL ma własną strukturę. Na przykład:

https://example.com/szukaj?q=lorem+ipsum&page=2

Niektóre znaki mają w URL specjalne znaczenie:

  • ? oddziela adres strony od parametrów query,
  • & oddziela poszczególne parametry,
  • = oddziela nazwę parametru od wartości,
  • # wskazuje fragment strony,
  • / oddziela części ścieżki,
  • % rozpoczyna zakodowany znak.

Jeśli chcesz użyć jednego z tych znaków jako zwykłego tekstu w wartości parametru, musisz go zakodować. W przeciwnym razie przeglądarka albo serwer mogą zrozumieć URL inaczej, niż chcesz.

Przykład:

/szukaj?q=kawa & herbata

To problem, ponieważ & może zostać odczytany jako separator kolejnego parametru. Poprawnie zakodowana wartość wygląda tak:

/szukaj?q=kawa%20%26%20herbata

Tutaj %20 oznacza spację, a %26 znak &.

Co dokładnie oznacza %20

URL encoding często nazywa się też percent-encoding. Działa tak, że znak zostaje zastąpiony znakiem procentu i kodem szesnastkowym.

Spacja ma w tabeli ASCII wartość 32. W zapisie szesnastkowym to 20, dlatego w URL zapisuje się ją jako:

%20

To nie jest losowy skrót. To techniczny zapis znaku, który rozumieją przeglądarki, serwery i języki programowania.

Dlaczego czasem widać plus zamiast %20

Możesz zauważyć, że w niektórych URL spacja nie jest zapisana jako %20, ale jako +:

q=lorem+ipsum

To często pojawia się w query stringu przy kodowaniu formularzy (application/x-www-form-urlencoded). Typowo przy wyszukiwaniu albo wysyłaniu formularzy.

Różnica jest ważna:

  • w ścieżce URL spacja zwykle jest kodowana jako %20,
  • w query parametrach przy kodowaniu formularzy może pojawić się +,
  • jeśli chcesz zapisać prawdziwy plus jako wartość, powinien być zakodowany jako %2B.

Przykład:

text=C%2B%2B

To oznacza C++. Gdyby wpisać samo C++ bez poprawnego kodowania, niektóre systemy mogą potraktować plusy jak spacje.

Polskie znaki w URL

URL encoding nie dotyczy tylko spacji. Obsługuje też polskie znaki i znaki spoza podstawowego alfabetu angielskiego.

Na przykład znak ł w UTF-8 składa się z kilku bajtów i w URL może wyglądać tak:

%C5%82

Cały tekst:

kawa z mlekiem

może być zakodowany w URL jako:

kawa%20z%20mlekiem

A tekst z polskimi znakami:

zażółć gęślą jaźń

może wyglądać tak:

za%C5%BC%C3%B3%C5%82%C4%87%20g%C4%99%C5%9Bl%C4%85%20ja%C5%BA%C5%84

Nowoczesne przeglądarki często pokazują adresy w ładniejszej, bardziej czytelnej formie, ale pod spodem przy wysyłaniu żądania nadal może działać bezpieczna postać zakodowana.

Kiedy potrzebujesz URL encodingu

Przy query parametrach

Najczęściej spotkasz to przy parametrach w URL:

/szukaj?q=polski tekst

Bezpieczniejsza wersja:

/szukaj?q=polski%20tekst

Jeśli składasz parametr w JavaScripcie, wartość parametru zwykle należy kodować funkcją encodeURIComponent.

Przy zapytaniach API

Endpointy API często przyjmują wartości w URL. Jeśli wyślesz tekst ze spacjami, polskimi znakami albo znakami takimi jak &, = czy ?, wynik może być niepoprawny albo źle przetworzony.

Typowy przykład:

/api/search?query=imię=Jan & status=nowy

Poprawnie należy zakodować wartość parametru:

/api/search?query=imi%C4%99%3DJan%20%26%20status%3Dnowy

Przy parametrach UTM

Parametry UTM często trafiają do kampanii, e-maili i systemów reklamowych. Jeśli nazwa kampanii zawiera spację albo polskie znaki, lepiej ją zakodować.

Zamiast:

utm_campaign=Wiosenna kampania 2026

użyj:

utm_campaign=Wiosenna%20kampania%202026

Przy debugowaniu niedziałających linków

Jeśli link przestaje działać dopiero po dodaniu tekstu, parametru albo nazwy pliku, często problemem są właśnie niezakodowane znaki.

Podejrzane są zwłaszcza:

  • spacje,
  • polskie znaki,
  • &,
  • =,
  • ?,
  • #,
  • %,
  • plus +.

Wtedy pomaga URL enkoder i dekoder. Wklejasz tekst, kodujesz go i od razu widzisz, jak powinna wyglądać bezpieczna postać.

Nie zawsze koduj cały URL

To częsty błąd. Jeśli masz cały adres:

https://example.com/szukaj?q=kawa

i zakodujesz go w całości, otrzymasz:

https%3A%2F%2Fexample.com%2Fszukaj%3Fq%3Dkawa

To nie jest już zwykły klikalny URL. To zakodowany tekst całego adresu.

W praktyce najczęściej nie kodujesz całego adresu, tylko samą wartość parametru.

Przykład:

const query = encodeURIComponent('kawa & herbata');
const url = `/szukaj?q=${query}`;

Wynik:

/szukaj?q=kawa%20%26%20herbata

Szybkie sprawdzenie linku

Zakoduj albo odkoduj URL w kilka sekund

Wklej tekst, parametr albo fragment linku i od razu zobacz bezpieczną postać URL oraz czytelną wersję.

URL encoding a bezpieczeństwo

URL encoding nie jest szyfrowaniem. Zakodowany tekst nie jest tajny.

Na przykład:

haslo%3Dtest123

można łatwo odkodować z powrotem do:

haslo=test123

URL encoding zapewnia tylko to, że znaki w adresie zostaną poprawnie przesłane i zrozumiane. Nie służy do ukrywania poufnych danych. Haseł, tokenów ani danych osobowych nie powinno się wysyłać w URL, jeśli nie jest to naprawdę konieczne.

Jak zakodować albo odkodować URL

Najprościej użyć narzędzia URL enkoder i dekoder:

  1. Wklej tekst albo fragment URL.
  2. Kliknij Zakoduj, jeśli chcesz uzyskać bezpieczną postać URL.
  3. Kliknij Dekoduj, jeśli chcesz sprawdzić, co oznacza zakodowany tekst.
  4. Skopiuj wynik.

Przydaje się to przy API, kampaniach, formularzach, webhookach i zwykłym debugowaniu linków.

Najczęstsze pytania

Czy %20 to to samo co spacja?

Tak. W zapisie URL %20 oznacza spację. Przeglądarka albo serwer potrafi podczas przetwarzania zamienić ją z powrotem na zwykłą spację.

Czy plus to to samo co spacja?

Nie zawsze. W query stringu przy kodowaniu formularzy + często oznacza spację. Jeśli jednak chcesz zapisać prawdziwy plus, bezpieczniej użyć %2B.

Dlaczego polskie znaki zmieniają się w kilka znaków?

Ponieważ znaki takie jak ą, ł czy ź są zapisywane w UTF-8 za pomocą kilku bajtów. Każdy bajt jest potem zapisywany w URL jako osobny kod procentowy.

Czy URL encoding jest szyfrowaniem?

Nie. To tylko techniczne kodowanie znaków. Każdy może je odkodować, dlatego nie używaj go do ukrywania poufnych informacji.

Do czego służy generator losowych ciągów
Technologia 6 min czytania

Do czego służy generator losowych ciągów

Losowe ciągi przydają się przy testach, tymczasowych identyfikatorach, tokenach i technicznych notatkach. Zobacz, kiedy ich używać, a kiedy lepiej wybrać hasło albo UUID.

Czytaj więcej
Dlaczego kod QR nie działa i jak go naprawić
Kody QR 7 min czytania

Dlaczego kod QR nie działa i jak go naprawić

Nie da się zeskanować kodu QR? Najczęstsze przyczyny to słaby kontrast, brak cichej strefy, zbyt mały rozmiar, rozmazany druk albo zbyt dużo danych.

Czytaj więcej
Lista kontrolna przed uruchomieniem strony: 12 rzeczy do sprawdzenia
Technologia 8 min czytania

Lista kontrolna przed uruchomieniem strony: 12 rzeczy do sprawdzenia

Przed publikacją strony warto sprawdzić nie tylko projekt. Przejrzyj teksty, linki, formularze, wersję mobilną, szybkość, HTTPS, analitykę i zapomniany Lorem Ipsum.

Czytaj więcej