URL kódování (nazývané také procentuální kódování) je mechanismus pro kódování informací v Uniform Resource Identifier (URI) tak, aby výsledný řetězec obsahoval pouze znaky povolené standardem RFC 3986. Každý znak, který není nezáložním znakem (A–Z, a–z, 0–9, -, _, ., ~), se nahradí znakem procenta následovaným dvěma hexadecimálními číslicemi reprezentujícími hodnotu bajtu UTF-8 daného znaku — například mezera se stane %20 a & se stane %26.
Procentuální kódování je nezbytné, protože URL může obsahovat pouze omezenu sadu znaků ASCII. Pokud URL obsahuje znaky mimo tuto sadu — mezery, písmena Unicode, symboly jako &, = nebo / používané jako doslovné hodnoty místo strukturálních oddělovačů — musí být tyto znaky zakódovány, aby je analyzátor URL nechybně interpretoval. To je zvláště kritické u hodnot řetězce dotazu, kde by nezakódované & nebo = narušily strukturu parametrů.
Proč používat tento nástroj?
Okamžitě zjistěte, jak se váš text kóduje v obou režimech, s živým porovnáním vedle sebe — bez nutnosti psát kód pro ověření krajních případů.
⚡
Živý náhled
Výstup se aktualizuje při psaní. Vyzkoušejte různé vstupy a ihned sledujte, které znaky se kódují a které zůstávají zachovány.
🔀
Dva režimy
Přepínejte mezi encodeURIComponent (pro hodnoty) a encodeURI (pro celé URL) bez opuštění stránky.
🔒
Pouze na straně klienta
Veškeré kódování probíhá lokálně ve vašem prohlížeči. Citlivé parametry dotazu a tokeny se nikdy nedostanou na server.
📋
Kopírování jedním kliknutím
Zkopírujte zakódovaný výstup do schránky jediným tlačítkem. Připraveno k přímému vložení do kódu, terminálu nebo adresního řádku prohlížeče.
Jak používat tento online kodér URL
Žádný účet, žádná instalace. Vložte nebo zadejte text do vstupního pole a výsledek s procentovým kódováním se okamžitě zobrazí. Vše běží ve vašem prohlížeči — vaše data nikdy neopustí vaše zařízení.
1
Vložte text nebo URL
Zadejte libovolný řetězec — hodnotu parametru dotazu, celou URL adresu, segment cesty nebo JSON data. Kodér jej zpracuje znak po znaku podle RFC 3986.
2
Vyberte režim kódování
Vyberte encodeURIComponent pro kódování jednotlivých hodnot parametrů (kóduje vše kromě nerezervovaných znaků). Vyberte encodeURI pro kódování celé URL adresy se zachováním strukturálních znaků jako ://?#&=.
3
Zkopírujte zakódovaný výstup
Řetězec s procentovým kódováním se okamžitě zobrazí. Klikněte na Kopírovat, abyste výsledek převzali a vložili přímo do volání API, akce formuláře nebo konfiguračního souboru.
4
V případě potřeby dekódujte zpět
Udělali jste chybu nebo chcete výsledek ověřit? Přepněte se jedním kliknutím na nástroj URL Decode a obraťte kódování.
Které znaky se kódují?
RFC 3986 dělí znaky URL do dvou kategorií: nezáložní znaky (nikdy nekódované) a záložní znaky (mají speciální význam — kódované nebo zachované v závislosti na kontextu). Tabulka níže ukazuje, jak s klíčovými znaky zacházejí dvě JavaScriptové funkce:
Znak
Význam v URL
encodeURIComponent
encodeURI
Space
word separator
%20
%20
+
plus sign
%2B
%2B
/
path separator
%2F
/ (kept)
?
query start
%3F
? (kept)
#
fragment
%23
# (kept)
&
param separator
%26
& (kept)
=
param value
%3D
= (kept)
@
auth separator
%40
@ (kept)
:
scheme / port
%3A
: (kept)
%
percent literal
%25
%25
~
unreserved
~ (kept)
~ (kept)
-_.~
unreserved set
kept as-is
kept as-is
encodeURIComponent vs encodeURI
JavaScript nabízí dvě kódovací funkce s velmi odlišným chováním. Volba té nesprávné je jednou z nejčastějších chyb při práci s URL:
encodeURIComponent()
Kóduje vše kromě sady nezáložních znaků (A–Z a–z 0–9 - _ . ~). Toto je správná volba pro kódování jednotlivých hodnot parametrů dotazu, segmentů cesty nebo jakékoli hodnoty, která bude vložena do URL. Zakóduje /, ?, #, & a všechny ostatní záložní znaky.
encodeURI()
Zachovává celou strukturu URL tím, že záložní znaky (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) ponechává nezakódované. Používejte pouze tehdy, když máte kompletní URL se strukturou, kterou chcete zachovat, a potřebujete zakódovat pouze znaky mimo ASCII nebo neplatné znaky uvnitř ní.
Běžné případy použití
Parametry řetězce dotazu
Kódujte hodnoty parametrů před jejich přidáním k URL: name=John%20Doe místo name=John Doe. Nezakódované mezery a speciální znaky naruší analyzátory URL a způsobí neočekávané výsledky.
Sestavování API požadavků
REST API vyžadují správně zakódované parametry dotazu. Kódování hodnot pomocí encodeURIComponent zabraňuje vkládání dalších parametrů prostřednictvím znaků jako & a = vložených v hodnotách.
Odesílání dat formuláře
HTML formuláře odesílají data ve výchozím nastavení jako application/x-www-form-urlencoded. Pochopení procentuálního kódování pomáhá ladit to, co prohlížeč odesílá a co server přijímá.
Segmenty cesty se speciálními znaky
Názvy souborů nebo identifikátory obsahující mezery, lomítka nebo znaky Unicode musí být při použití jako segmenty cesty URL procentuálně zakódovány: /files/my%20document.pdf.
OAuth a autentizační tokeny
OAuth 1.0a a některé autentizační protokoly vyžadují, aby byl základní řetězec sestaven z procentuálně zakódovaných názvů a hodnot parametrů podle přísného normalizačního algoritmu.
Hluboké odkazy a sdílecí URL
Při generování sdílitelných URL s vloženým uživatelským obsahem (vyhledávací dotazy, stav filtrů, souřadnice) zakódujte všechny dynamické hodnoty, abyste předešli nefunkčním odkazům a XSS manipulací s URL.
Příklady kódu
Jak kódovat řetězce v URL v populárních jazycích a prostředích:
JavaScript (browser / Node.js)
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"
// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"
// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spaces
Python
from urllib.parse import quote, urlencode, quote_plus
# Encode a path segment or query value
quote('hello world & more') # → 'hello%20world%20%26%20more'
# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world') # → 'hello+world'
# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'}) # → 'q=hello+world&lang=en'
Node.js (URL API)
const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en
Několik nástrojů dokáže procentuálně kódovat text, ale liší se v možnostech ovládání, soukromí a kontextu.
Tento nástroj
Funguje v prohlížeči, okamžitě, soukromě. Podporuje režimy encodeURIComponent i encodeURI. Žádná data nejsou odeslána na žádný server. Zpracovává plný vstup Unicode.
Adresní řádek prohlížeče
Prohlížeče URL adresy při vložení automaticky kódují, ale jen částečně — mnoho speciálních znaků si zachovají kvůli čitelnosti. Není vhodné pro kódování hodnot parametrů.
URLSearchParams / urllib
Správný programový přístup pro sestavování URL v JavaScriptu nebo Pythonu. Použijte tento nástroj pro rychlé jednorázové kódování nebo k ověření, co váš kód vyprodukuje.
Často kladené otázky
Jaký je rozdíl mezi %20 a + pro mezery?
Oba reprezentují mezeru, ale v různých kontextech. %20 je standardní procentuálně zakódovaná reprezentace mezery a je platná kdekoliv v URL. Znak + představuje mezeru pouze ve formátu application/x-www-form-urlencoded (odesílání HTML formulářů). V cestě URL nebo nezpracované hodnotě dotazu je + doslovný znak plus, nikoli mezera. Používejte %20 pro maximální kompatibilitu.
Kdy použít encodeURIComponent vs encodeURI?
encodeURIComponent používejte pro jednotlivé hodnoty (parametry dotazu, segmenty cesty, hashové fragmenty). encodeURI používejte pouze tehdy, máte-li kompletní URL a chcete zachovat její strukturu. Běžnou chybou je použití encodeURI na hodnotu dotazu — & a = zůstanou nezakódované a naruší řetězec dotazu.
Zpracovává URL kódování znaky Unicode?
Ano. Znaky mimo ASCII se nejprve převedou na jejich bajty UTF-8, poté se každý bajt procentuálně zakóduje. Například znak eura € (U+20AC) se zakóduje na %E2%82%AC — jeho tři bajty UTF-8. Jak encodeURIComponent, tak encodeURI toto správně zpracovávají ve všech moderních prohlížečích.
Je dvojité kódování problém?
Ano. Pokud zakódujete již zakódovaný řetězec, %20 se stane %2520 (samotné % se zakóduje na %25). Vždy kódujte surové hodnoty, nikoli dříve zakódované. V případě pochybností nejprve dekódujte, pak znovu zakódujte.
Které znaky jsou v URL vždy bezpečné?
Nezáložní znaky definované RFC 3986 jsou vždy bezpečné a nikdy nepotřebují kódování: velká písmena A–Z, malá písmena a–z, číslice 0–9, pomlčka (-), podtržítko (_), tečka (.) a vlnka (~). Vše ostatní by mělo být procentuálně zakódováno při použití jako hodnota, nikoli jako strukturální oddělovač.
Proč některé URL obsahují hexadecimální velká písmena (%2F) a jiné malá (%2f)?
Obojí je platné. RFC 3986 stanoví, že procentuálně zakódované sekvence nejsou citlivé na velikost písmen, takže %2F a %2f jsou ekvivalentní. Stejná RFC však pro konzistenci doporučuje používat hexadecimální velká písmena. Většina prohlížečů a knihoven produkuje velká písmena.
Kóduje tento nástroj celou URL nebo jen parametry?
Obojí. Použijte režim encodeURIComponent pro kódování jednotlivých hodnot parametrů dotazu (nejčastější případ použití). Použijte režim encodeURI pro kódování celé URL se zachováním strukturálních znaků jako ://, ?, # a &.
Existuje délkový limit pro kódování?
Žádný limit na straně serveru — nástroj běží zcela ve vašem prohlížeči. Praktické limity závisí na paměti vašeho prohlížeče. Pro velmi velké vstupy nebo dávkové zpracování použijte encodeURIComponent ve skriptu.