Přeskočit na obsah
Technologie 7 min čtení

URL encoding: proč se mezery mění na %20

Papírový pás s bloky prochází mechanickým válečkem

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:

  1. Vložte text nebo část URL.
  2. Klikněte na Zakódovat, pokud chcete bezpečný URL tvar.
  3. Klikněte na Dekódovat, pokud chcete zjistit, co zakódovaný text znamená.
  4. 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í.

K čemu slouží generátor náhodných řetězců
Technologie 6 min čtení

K čemu slouží generátor náhodných řetězců

Náhodné řetězce se hodí při testování, dočasných identifikátorech, tokenech i technických poznámkách. Podívejte se, kdy je použít a kdy raději zvolit heslo nebo UUID.

Číst více
Jak vytvořit .ics soubor a poslat pozvánku do kalendáře
Technologie 6 min čtení

Jak vytvořit .ics soubor a poslat pozvánku do kalendáře

Soubor .ics je jednoduchý způsob, jak poslat termín schůzky, webináře nebo rezervace tak, aby si ho příjemce mohl uložit do vlastního kalendáře.

Číst více
Perplexity vs ChatGPT: který AI nástroj se hodí na co?
Umělá inteligence (AI) 8 min čtení

Perplexity vs ChatGPT: který AI nástroj se hodí na co?

Perplexity je silné při hledání aktuálních informací a práci se zdroji. ChatGPT je univerzálnější pomocník pro psaní, učení, plánování a tvorbu. Podívejte se, kdy použít který nástroj a kdy se vyplatí oba kombinovat.

Číst více