URL adresa nemůže obsahovat každý znak jen tak. Podívejte se, co je percent-encoding, proč se mezera mění na %20 a kdy použít URL enkodér.
Pokud jste někdy kopírovali odkaz a všimli jste si v něm znaků jako %20, %C4%8D nebo %3F, narazili jste na URL encoding. Vypadá to zvláštně, ale není to chyba. Je to způsob, jak se speciální znaky bezpečně zapisují do URL adres.
Nejznámější příklad je mezera. V běžném textu ji jednoduše napíšete. V URL adrese by ale mezera neměla být zapsaná jako obyčejná mezera, proto se často změní na:
%20
Rychlá kontrola odkazu
Zakódujte nebo dekódujte URL za pár sekund
Vložte text, parametr nebo část odkazu a hned uvidíte bezpečný URL tvar i čitelnou verzi.
Proč URL adresa nemůže obsahovat všechno
URL adresa má vlastní strukturu. Například:
https://example.com/hledat?q=lorem+ipsum&page=2
Některé znaky mají v URL speciální význam:
?odděluje adresu stránky od query parametrů,&odděluje jednotlivé parametry,=odděluje název parametru od hodnoty,#označuje část stránky,/odděluje části cesty,%začíná zakódovaný znak.
Pokud chcete některý z těchto znaků použít jako obyčejný text v hodnotě parametru, musíte ho zakódovat. Jinak může prohlížeč nebo server pochopit URL jinak, než jste chtěli.
Příklad:
/hledat?q=kava & caj
To je problém, protože & může být chápaný jako oddělovač dalšího parametru. Správně zakódovaná hodnota vypadá takto:
/hledat?q=kava%20%26%20caj
Tady %20 znamená mezeru a %26 znamená znak &.
Co přesně znamená %20
URL encoding se často nazývá také percent-encoding. Funguje tak, že znak nahradí procentem a hexadecimálním kódem.
Mezera má v ASCII tabulce hodnotu 32. V šestnáctkové soustavě je to 20, proto se mezera v URL zapisuje jako:
%20
Není to náhodná zkratka. Je to technický zápis znaku, kterému rozumí prohlížeče, servery i programovací jazyky.
Proč někdy vidíte plus místo %20
Možná jste si všimli, že v některých URL se mezera nezapíše jako %20, ale jako +:
q=lorem+ipsum
To se často používá v query stringu při formulářovém kódování (application/x-www-form-urlencoded). Typicky při vyhledávání nebo odesílání formulářů.
Rozdíl je důležitý:
- v cestě URL se mezera běžně kóduje jako
%20, - v query parametrech se při formulářovém zápisu může použít
+, - pokud chcete zapsat skutečné plus jako hodnotu, mělo by být zakódované jako
%2B.
Příklad:
text=C%2B%2B
To znamená C++. Kdybyste napsali jen C++ bez správného kódování, některé systémy mohou plusy pochopit jako mezery.
Diakritika v URL
URL encoding se netýká jen mezer. Řeší také diakritiku a znaky mimo základní anglickou abecedu.
Například české č se v UTF-8 zapíše jako dva bajty a v URL může vypadat takto:
%C4%8D
Celý text:
káva s mlékem
může být v URL zakódovaný jako:
k%C3%A1va%20s%20ml%C3%A9kem
Moderní prohlížeče dnes často zobrazí URL hezčí a čitelnější, ale pod povrchem se při odeslání požadavku stále používá bezpečný kódovaný tvar.
Kdy URL encoding potřebujete
U query parametrů
Nejčastěji se s tím setkáte u parametrů v URL:
/hledat?q=český text
Bezpečnější verze:
/hledat?q=%C4%8Desk%C3%BD%20text
Pokud parametr skládáte v JavaScriptu, hodnota parametru by se měla kódovat například přes encodeURIComponent.
U API požadavků
API endpointy často přijímají hodnoty v URL. Pokud pošlete text s mezerami, diakritikou nebo znaky jako &, = či ?, výsledek může být neplatný nebo špatně zpracovaný.
Typický příklad:
/api/search?query=jmeno=Jan & stav=novy
Správné je zakódovat hodnotu parametru:
/api/search?query=jmeno%3DJan%20%26%20stav%3Dnovy
U UTM parametrů
UTM parametry se často kopírují do kampaní, e-mailů a reklamních systémů. Pokud název kampaně obsahuje mezeru nebo diakritiku, je lepší ho zakódovat.
Místo:
utm_campaign=Jarní kampaň 2026
použijte:
utm_campaign=Jarn%C3%AD%20kampa%C5%88%202026
Při ladění nefunkčních odkazů
Pokud odkaz přestane fungovat až po přidání textu, parametru nebo názvu souboru, problém je často právě v nekódovaných znacích.
Podezřelé jsou hlavně:
- mezery,
- diakritika,
&,=,?,#,%,- plus
+.
V takové situaci pomůže URL enkodér a dekodér. Vložíte text, zakódujete ho a hned vidíte, jak má vypadat bezpečný tvar.
Nekódujte vždy celou URL
Tohle je častá chyba. Když máte celou adresu:
https://example.com/hledat?q=kava
a zakódujete ji celou, dostanete:
https%3A%2F%2Fexample.com%2Fhledat%3Fq%3Dkava
To už není běžná klikatelná URL adresa. Je to zakódovaný text celé URL.
V praxi většinou nekódujete celou adresu, ale jen hodnotu parametru.
Příklad:
const query = encodeURIComponent('káva & čaj');
const url = `/hledat?q=${query}`;
Výsledek:
/hledat?q=k%C3%A1va%20%26%20%C4%8Daj
Rychlá kontrola odkazu
Zakódujte nebo dekódujte URL za pár sekund
Vložte text, parametr nebo část odkazu a hned uvidíte bezpečný URL tvar i čitelnou verzi.
URL encoding a bezpečnost
URL encoding není šifrování. Zakódovaný text není tajný.
Například:
heslo%3Dtest123
se dá jednoduše dekódovat zpět na:
heslo=test123
URL encoding pouze zajišťuje, aby se znaky v adrese správně přenesly a pochopily. Neslouží ke skrývání citlivých údajů. Hesla, tokeny ani osobní údaje byste neměli posílat v URL, pokud to není nezbytné.
Jak zakódovat nebo dekódovat URL
Nejjednodušší je použít URL enkodér a dekodér:
- Vložte text nebo část URL.
- Klikněte na Zakódovat, pokud chcete bezpečný URL tvar.
- Klikněte na Dekódovat, pokud chcete zjistit, co zakódovaný text znamená.
- Zkopírujte výsledek.
Hodí se to při práci s API, kampaněmi, formuláři, webhooky i při obyčejném ladění odkazů.
Časté otázky
Je %20 totéž co mezera?
Ano. V URL zápisu %20 představuje mezeru. Prohlížeč nebo server si ji při zpracování umí přeložit zpět na obyčejnou mezeru.
Je plus stejné jako mezera?
Ne vždy. V query stringu při formulářovém kódování se + často používá jako mezera. Pokud ale chcete zapsat skutečné plus, bezpečnější je použít %2B.
Proč se diakritika mění na více znaků?
Protože znaky jako á, č nebo ň se v UTF-8 zapisují pomocí více bajtů. Každý bajt se pak v URL zapíše vlastním percent kódem.
Je URL encoding šifrování?
Ne. Je to jen technické kódování znaků. Každý ho umí zpětně dekódovat, takže ho nepoužívejte ke skrývání citlivých informací.