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:
- Wklej tekst albo fragment URL.
- Kliknij Zakoduj, jeśli chcesz uzyskać bezpieczną postać URL.
- Kliknij Dekoduj, jeśli chcesz sprawdzić, co oznacza zakodowany tekst.
- 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.