URL adresa nemôže obsahovať každý znak len tak. Pozrite sa, čo je percent-encoding, prečo sa medzera mení na %20 a kedy použiť URL enkodér.
Ak ste niekedy kopírovali odkaz a všimli ste si v ňom znaky ako %20, %C4%8D alebo %3F, narazili ste na URL encoding. Vyzerá to zvláštne, ale nie je to chyba. Je to spôsob, ako sa špeciálne znaky bezpečne zapisujú do URL adries.
Najznámejší príklad je medzera. V bežnom texte ju jednoducho napíšete. V URL adrese však medzera nemá byť zapísaná ako obyčajná medzera, preto sa často zmení na:
%20
Rýchla kontrola odkazu
Zakódujte alebo dekódujte URL za pár sekúnd
Vložte text, parameter alebo časť odkazu a hneď uvidíte bezpečný URL tvar aj čitateľnú verziu.
Prečo URL adresa nemôže obsahovať všetko
URL adresa má svoju štruktúru. Napríklad:
https://example.com/hladat?q=lorem+ipsum&page=2
Niektoré znaky majú v URL špeciálny význam:
?oddeľuje adresu stránky od query parametrov,&oddeľuje jednotlivé parametre,=oddeľuje názov parametra od hodnoty,#označuje časť stránky,/oddeľuje časti cesty,%začína zakódovaný znak.
Ak chcete niektorý z týchto znakov použiť ako obyčajný text v hodnote parametra, musíte ho zakódovať. Inak môže prehliadač alebo server pochopiť URL inak, než ste chceli.
Príklad:
/hladat?q=kava & caj
Toto je problém, pretože & môže byť chápaný ako oddeľovač ďalšieho parametra. Správne zakódovaná hodnota vyzerá takto:
/hladat?q=kava%20%26%20caj
Tu %20 znamená medzeru a %26 znamená znak &.
Čo presne znamená %20
URL encoding sa často volá aj percent-encoding. Funguje tak, že znak nahradí percentom a hexadecimálnym kódom.
Medzera má v ASCII tabuľke hodnotu 32. V šestnástkovej sústave je to 20, preto sa medzera v URL zapíše ako:
%20
Nie je to náhodná skratka. Je to technický zápis znaku, ktorému rozumejú prehliadače, servery aj programovacie jazyky.
Prečo niekedy vidíte plusko namiesto %20
Možno ste si všimli, že v niektorých URL sa medzera nezapíše ako %20, ale ako +:
q=lorem+ipsum
Toto sa často používa v query stringu pri formulárovom kódovaní (application/x-www-form-urlencoded). Typicky pri vyhľadávaní alebo odosielaní formulárov.
Rozdiel je dôležitý:
- v ceste URL sa medzera bežne kóduje ako
%20, - v query parametroch sa pri formulárovom zápise môže použiť
+, - ak chcete zapísať skutočné plusko ako hodnotu, malo by byť zakódované ako
%2B.
Príklad:
text=C%2B%2B
Toto znamená C++. Ak by ste napísali len C++ bez správneho kódovania, niektoré systémy môžu pluská pochopiť ako medzery.
Diakritika v URL
URL encoding sa netýka iba medzier. Rieši aj diakritiku a znaky mimo základnej anglickej abecedy.
Napríklad slovenské č sa v UTF-8 zapíše ako dva bajty a v URL môže vyzerať takto:
%C4%8D
Celý text:
káva s mliekom
môže byť v URL zakódovaný ako:
k%C3%A1va%20s%20mliekom
Moderné prehliadače dnes často zobrazia URL krajšie a čitateľnejšie, ale pod povrchom sa pri odosielaní požiadavky stále používa bezpečný kódovaný tvar.
Kedy URL encoding potrebujete
Pri query parametroch
Najčastejšie sa s tým stretnete pri parametroch v URL:
/hladat?q=slovenský text
Bezpečnejšia verzia:
/hladat?q=slovensk%C3%BD%20text
Ak parameter skladáte v JavaScripte, hodnota parametra by sa mala kódovať napríklad cez encodeURIComponent.
Pri API požiadavkách
API endpointy často prijímajú hodnoty v URL. Ak pošlete text s medzerami, diakritikou alebo znakmi ako &, =, ?, výsledok môže byť neplatný alebo nesprávne spracovaný.
Typický príklad:
/api/search?query=meno=Ján & stav=nový
Správne je zakódovať hodnotu parametra:
/api/search?query=meno%3DJ%C3%A1n%20%26%20stav%3Dnov%C3%BD
Pri UTM parametroch
UTM parametre sa často kopírujú do kampaní, e-mailov a reklamných systémov. Ak názov kampane obsahuje medzeru alebo diakritiku, je lepšie ho zakódovať.
Namiesto:
utm_campaign=Jarná kampaň 2026
použite:
utm_campaign=Jarn%C3%A1%20kampa%C5%88%202026
Pri ladení nefunkčných odkazov
Ak odkaz prestane fungovať až po pridaní textu, parametra alebo názvu súboru, často je problém práve v nekódovaných znakoch.
Podozrivé sú hlavne:
- medzery,
- diakritika,
&,=,?,#,%,- plusko
+.
Vtedy pomôže URL enkodér a dekodér. Vložíte text, zakódujete ho a hneď vidíte, ako má vyzerať bezpečný tvar.
Nekódujte vždy celú URL
Toto je častá chyba. Keď máte celú adresu:
https://example.com/hladat?q=kava
a zakódujete ju celú, dostanete:
https%3A%2F%2Fexample.com%2Fhladat%3Fq%3Dkava
To už nie je bežná klikateľná URL adresa. Je to zakódovaný text celej URL.
V praxi väčšinou nekódujete celú adresu, ale iba hodnotu parametra.
Príklad:
const query = encodeURIComponent('káva & čaj');
const url = `/hladat?q=${query}`;
Výsledok:
/hladat?q=k%C3%A1va%20%26%20%C4%8Daj
Rýchla kontrola odkazu
Zakódujte alebo dekódujte URL za pár sekúnd
Vložte text, parameter alebo časť odkazu a hneď uvidíte bezpečný URL tvar aj čitateľnú verziu.
URL encoding a bezpečnosť
URL encoding nie je šifrovanie. Zakódovaný text nie je tajný.
Napríklad:
heslo%3Dtest123
sa dá jednoducho dekódovať späť na:
heslo=test123
URL encoding iba zabezpečuje, aby sa znaky v adrese správne preniesli a pochopili. Neslúži na skrývanie citlivých údajov. Heslá, tokeny ani osobné údaje by ste nemali posielať v URL, ak to nie je nevyhnutné.
Ako zakódovať alebo dekódovať URL
Najjednoduchšie je použiť URL enkodér a dekodér:
- Vložte text alebo časť URL.
- Kliknite na Zakódovať, ak chcete bezpečný URL tvar.
- Kliknite na Dekódovať, ak chcete zistiť, čo zakódovaný text znamená.
- Skopírujte výsledok.
Hodí sa to pri práci s API, kampanami, formulármi, webhookmi aj pri obyčajnom debugovaní odkazov.
Časté otázky
Je %20 to isté ako medzera?
Áno. V URL zápise %20 predstavuje medzeru. Prehliadač alebo server si ju pri spracovaní vie preložiť späť na obyčajnú medzeru.
Je plusko rovnaké ako medzera?
Nie vždy. V query stringu pri formulárovom kódovaní sa + často používa ako medzera. Ak však chcete zapísať skutočné plusko, bezpečnejšie je použiť %2B.
Prečo sa diakritika mení na viac znakov?
Pretože znaky ako á, č alebo ň sa v UTF-8 zapisujú pomocou viacerých bajtov. Každý bajt sa potom v URL zapíše vlastným percentuálnym kódom.
Je URL encoding šifrovanie?
Nie. Je to iba technické kódovanie znakov. Každý ho vie spätne dekódovať, takže ho nepoužívajte na skrývanie citlivých informácií.