Shein měl na své cookie liště tlačítko „Tout refuser“, tedy odmítnout vše. Francouzský úřad CNIL mu přesto v září 2025 uložil pokutu 150 milionů eur. Trackery se totiž spouštěly hned při příchodu na web, po kliknutí na odmítnutí se nasazovaly další a ty staré se dál četly. A když uživatel souhlas později odvolal, nezměnilo se nic.
Chybu tedy neudělal designér. Lišta vypadala správně, chyba byla v kódu, který za ní běžel.
Co říká zákon
Od 1. ledna 2022 platí v Česku pro cookies opt-in. Zákon o elektronických komunikacích v § 89 odst. 3 chce, abyste pro ukládání a čtení informací v zařízení uživatele získali předem prokazatelný souhlas s rozsahem a účelem. Výjimku mají jen cookies nezbytné pro fungování služby, kterou si uživatel vyžádal, třeba košík nebo přihlášení.
Jaký souhlas je platný, určuje GDPR. Musí být svobodný, konkrétní, informovaný a jednoznačný. Předzaškrtnuté políčko souhlasem není, to řekl Soudní dvůr EU už v roce 2019 ve věci Planet49. A odvolat souhlas musí být stejně snadné jako ho udělit.
Evropští dozorci si v roce 2023 sepsali společný seznam toho, co na lištách vadí nejčastěji. Chybí odmítnutí na první úrovni, předzaškrtnutá políčka, souhlas zelenou barvou a odmítnutí šedým odkazem v textu. CNIL za přesně takovou asymetrii potrestala už na začátku roku 2022 Google a Facebook. Přijmout šlo jedním klikem, odmítnout několika. Pokuty dohromady dělaly 210 milionů eur.
Proč se lišty kazí
Protože asymetrie funguje. Německý spolkový úřad pro ochranu údajů si u agentury forsa nechal udělat průzkum, podle kterého by víc než tři čtvrtiny lidí, kteří dnes klikají na „Přijmout vše“, vše odmítly, kdyby to šlo stejně snadno. Každý marketér to ví a každý A/B test to potvrdí.
Na přednášce u Frontendistů jsem se s publikem vsadil, že dark pattern najdu ve většině lišt, které lidé v sále sami postavili. Sázka platí dál, i pro čtenáře tohoto článku.
Jak postavit lištu, která obstojí
Design je ta snazší část:
- Odmítnutí na první úrovni, stejně velkým a stejně výrazným tlačítkem jako souhlas.
- Každý účel zvlášť a nic předem zaškrtnuté. Analytika a reklama jsou dva různé souhlasy.
- Po odmítnutí se znovu neptejte při každé návštěvě.
- Trvalý odkaz na změnu nastavení, typicky v patičce.
Těžší část je v kódu a tu musí hlídat vývojář. Žádný nepovinný skript ani pixel se nesmí spustit, dokud uživatel neklikne na souhlas. Nestačí ho načíst a doufat, že se ohlásí až později.
// Nepovinné skripty se načtou až po souhlasu s konkrétním účelem.
const loaders = {
analytics: () => loadScript('https://www.googletagmanager.com/gtag/js?id=G-XXXX'),
marketing: () => loadScript('https://connect.facebook.net/en_US/fbevents.js'),
};
function applyConsent(consent) {
for (const [purpose, load] of Object.entries(loaders)) {
if (consent[purpose]) load();
}
if (!consent.analytics) deleteCookies(/^_ga/);
if (!consent.marketing) deleteCookies(/^_fbp|^_gcl/);
}Po odmítnutí nebo odvolání souhlasu cookies smažte a skripty přestaňte volat. Kdo používá Google Consent Mode, měl by vědět, že v pokročilém režimu posílá tag data do Googlu i před souhlasem. Za mě je pro malý web bezpečnější základní režim, ve kterém se tag bez souhlasu vůbec nenačte.
A hlavně to otestujte stejně, jako testujete cokoli jiného. Otevřete záložku Network, klikněte na odmítnutí a podívejte se, co odchází. Ještě lépe napište automatický test pro tři scénáře: přijmout, odmítnout a odvolat. Dozorový úřad dnes nečte váš Figma soubor, ale měří provoz stejně jako vy.
Co přijde
Evropská komise v listopadu 2025 navrhla v rámci takzvaného Digital Omnibusu přesunout pravidla pro cookies do GDPR a zpřísnit je. Podle návrhu má jít odmítnout jedním klikem, po odmítnutí se web nesmí šest měsíců ptát znovu a má respektovat signál z prohlížeče. Návrh se teprve projednává, ale směr je jasný.
Kdo lištu postaví poctivě dnes, nebude ji muset předělávat, až návrh projde.