Slovníček pojmů

Cumulative Layout
Shift (CLS)

CLS měří, jak moc se stránka vizuálně posouvá během načítání. Čím nižší skóre, tím méně překvapení pro uživatele a tím lepší signál pro Google.

≤ 0,1
hranice dobrého CLS skóre
0,25+
skóre vyžadující okamžitý zásah
3
Core Web Vitals, jejichž je CLS součástí

Definice

Co je CLS a co měří

Cumulative Layout Shift (CLS) je metrika vizuální stability stránky. Měří, jak moc se viditelné prvky na stránce neočekávaně posouvají během načítání nebo při interakci uživatele. Zjednodušeně: čte si uživatel nadpis, načte se obrázek nad ním, text poskočí dolů a uživatel klikne na špatné tlačítko. Přesně to CLS zachycuje a kvantifikuje.

Google představil CLS na jaře 2020 jako součást Core Web Vitals — skupiny metrik zaměřených na skutečný prožitek uživatele při práci se stránkou. Od roku 2021 je CLS součástí Page Experience signálu, který Google zahrnuje do hodnocení stránek.

Důležité je rozlišení: CLS nezachycuje všechny posuny. Měří pouze neočekávané posuny — tedy takové, které neinicioval uživatel. Pokud uživatel klikne na tlačítko a stránka se změní, jde o očekávanou změnu. Pokud se stránka pohne sama od sebe při načítání reklamy nebo fontu, jde o neočekávaný posun, který CLS zaznamenává.

Aktualizováno: . Obsah vychází z dokumentace Google web.dev a specifikace Layout Instability API (WICG).

Výpočet

Jak se CLS skóre počítá

Skóre každého jednotlivého posunu se skládá ze dvou složek. První je impact fraction — jak velkou část viewportu nestabilní prvek zaujímal ve svých obou polohách dohromady. Pokud prvek zabírá 50 % výšky viewportu a posune se o dalších 25 % dolů, přičteme obě oblasti: výsledek je 75 % viewportu, tedy impact fraction 0,75.

Druhá složka je distance fraction — jak daleko se prvek posunul relative k viewportu. Ve stejném příkladu prvek urazil 25 % výšky viewportu, takže distance fraction je 0,25.

Skóre jednoho posunu pak vznikne jako součin obou: 0,75 × 0,25 = 0,1875. Celkové CLS skóre stránky je pak součet skóre největší série po sobě jdoucích posunů v rámci okna 5 sekund, přičemž mezi jednotlivými posuny nesmí být pauza delší než 1 sekunda. Tomuto konceptu se říká session window.

Pozor na starší informace: Do roku 2021 Google počítal CLS jako prostý součet všech posunů po celou dobu trvání stránky. Od roku 2021 platí metodika session window, která lépe odráží skutečný dopad na uživatele. Pokud narazíte na návody s jiným výpočtem, mohou být zastaralé.

Hodnocení

Jaké hodnoty CLS jsou dobré

Google hodnotí CLS ve třech pásmech. Cílem je dostat se pod 0,1, ideálně pod 0,05 u kritických stránek.

Skóre CLS Hodnocení Co to znamená v praxi Doporučení
0 – 0,1 Dobré Stránka je vizuálně stabilní. Uživatel nezažívá neočekávané posuny obsahu. Udržovat, monitorovat po každém nasazení změn.
0,1 – 0,25 Potřebuje zlepšení Posuny existují, uživatel je může zaznamenat. Google tuto stránku hodnotí jako průměrnou z pohledu vizuální stability. Diagnostikovat příčiny přes PageSpeed Insights a odstranit alespoň ty s největším dopadem.
nad 0,25 Špatné Uživatel pravděpodobně klikne na špatný prvek nebo ztratí místo v textu. Dopad na UX je prokazatelný. Okamžitý zásah. Zkontrolujte obrázky bez rozměrů, reklamy a dynamicky načítaný obsah.

Google vyhodnocuje CLS na 75. percentilu návštěvnosti — tedy stránka musí být v dobrém pásmu pro tři čtvrtiny uživatelů, ne jen pro průměr. Jedno zařízení s pomalým připojením, na kterém se CLS vyšplhá na 0,4, stahuje celkové skóre dolů víc, než by průměr naznačoval.

Diagnostika

Nejčastější příčiny špatného CLS

Projděte si následující checklist. Každá z těchto příčin se na webu průměrné firmy vyskytuje nejméně jednou.

01
Obrázky a videa bez rozměrů
Prohlížeč nezná výšku obrázku, dokud ho nestáhne. Do té doby vyhradí nulový prostor. Jakmile se obrázek načte, ostatní prvky se posunou. Nejčastější příčina špatného CLS na obsahových webech.
Zkontrolujte: chybí width a height v img tagu?
02
Reklamy, bannery a embedy
Reklamní plochy se načítají asynchronně a mají proměnlivou výšku. Pokud pro ně není předem rezervovaný prostor, vsunou se do stránky a posunou okolní obsah. Platí pro Google Ads i vlastní bannerové plochy.
Zkontrolujte: má reklamní slot pevnou výšku nebo min-height?
03
Webfonty způsobující skok textu
Prohlížeč nejprve zobrazí záložní systémový font, pak po načtení webfontu překreslí text. Pokud má webfont jiné rozměry než záložní font, celý blok textu se vizuálně posune. Tento jev se nazývá FOUT (Flash of Unstyled Text).
Zkontrolujte: používáte font-display: optional nebo swap?
04
Dynamický obsah vložený nad existující prvky
Cookie lišty, chat widgety, notifikační pruhy nebo GDPR bannery, které se zobrazí po načtení stránky nahoře, shodí veškerý obsah pod sebou. Čím výše ve viewportu k posunu dojde, tím horší je výsledné skóre.
Zkontrolujte: vkládáte nový obsah před fold?
05
Animace přes layout vlastnosti
CSS vlastnosti top, left, margin a padding nutí prohlížeč přepočítat celý layout při každém snímku animace. To způsobuje měřitelné posuny. Oproti tomu transform a opacity layout nepřepočítávají a CLS neovlivňují.
Zkontrolujte: animujete transform místo top/left/margin?
06
Lazy-load obsah bez rezervovaného místa
Obrázky načítané se zpožděním (loading=“lazy“) způsobí skok přesně ve chvíli, kdy uživatel scrolluje k dané části stránky. Bez předem definovaných rozměrů nebo aspect-ratio prohlížeč prostor nerezervuje.
Zkontrolujte: mají lazy-load obrázky width a height?

Měření

Jak CLS změřit

CLS se měří ve třech nástrojích, přičemž každý z nich funguje jinak a reportuje jiná data. Než začnete hledat příčiny, rozhodněte se, která čísla berete jako závazná.

PageSpeed Insights

Zadejte URL na pagespeed.web.dev. Výsledek ve sloupci Field Data ukazuje CLS z reálných dat uživatelů za posledních 28 dní (data z Chrome UX Reportu). Tato čísla jsou směrodatná pro hodnocení Googlem. Sloupec Lab Data zobrazuje Lighthouse měření ze simulovaného načtení.

Google Search Console

V sekci Funkce > Core Web Vitals najdete přehled stránek rozdělených do tří pásem. GSC zobrazuje agregovaná field data přes celý web, ne jen pro jednu URL. Pokud vidíte skupinu stránek s červeným hodnocením, začněte diagnózu tam. Podrobněji o nastavení v článku o Google Search Console.

Chrome DevTools

Otevřete záložku Performance, spusťte záznam načtení stránky a po skončení vyhledejte modré pruhy s označením Layout Shift. Kliknutím na pruh zjistíte, který konkrétní prvek posun způsobil. DevTools jsou nejpřesnější nástroj pro identifikaci příčin, ale vyžadují trochu praxe.

Lab data vs. field data: PageSpeed Insights v sekci Lab Data (Lighthouse) simuluje načtení na pomalém připojení. Field data zobrazují průměr skutečných uživatelů. Je normální, že se čísla liší. Jako primární referenci pro SEO berte vždy field data — Google hodnotí stránky na základě reálné zkušenosti uživatelů, ne laboratorního testu.

Řešení

Jak CLS opravit — co řešit jako první

Každá z příčin má konkrétní technické řešení. Řaďte opravy od těch s největším dopadem: začněte u prvků, které jsou ve viewportu při načtení stránky — ty přispívají k CLS víc než prvky níže na stránce.

Obrázky bez rozměrů

Přidejte atributy width a height přímo do každého <img> tagu. Prohlížeč pak dopředu ví, kolik místa rezervovat, ještě před stažením souboru. Alternativně nastavte CSS vlastnost aspect-ratio pro kontejner obrázku. Platí to i pro videa a iframe embedy.

  • img tag: vždy width=“X“ height=“Y“ i při responzivním designu
  • CSS: aspect-ratio: 16 / 9 na obrázkový kontejner jako záloha
  • WordPress: od verze 5.5 přidává rozměry automaticky, ale zkontrolujte starší obrázky
Reklamy a bannery

Reklamní slot musí mít pevnou výšku ještě před načtením reklamy. Nastavte min-height na div, do kterého se reklama vkládá. Výška by měla odpovídat největšímu formátu, který na daném slotu může zobrazit. Fluidní reklamní formáty (proměnlivá výška) umísťujte výhradně pod fold — tam mají menší dopad na skóre.

  • Leaderboard (728×90): rezervujte min-height: 90px na slot
  • Rectangle (300×250): rezervujte min-height: 250px na slot
  • Google Ads: použijte fixed-size slot místo fluid tam, kde to jde
Webfonty a FOUT

Vlastnost font-display: optional způsobí, že prohlížeč použije záložní font, pokud webfont není načten do určitého časového limitu. Žádný skok textu nenastane. Vlastnost font-display: swap povolí viditelný záložní font s pozdějším swapem — vhodné pro weby, kde je přesná typografie méně kritická. Doplňte preload pro kritické fonty.

  • Prioritní řešení: font-display: optional eliminuje FOUT úplně
  • Preload: <link rel=“preload“ as=“font“> pro hlavní font v head
  • Google Fonts: přidejte &display=optional do URL parametru
Dynamický obsah a bannery

Cookie lišty, chat widgety a notifikační pruhy vkládejte výhradně na základě interakce uživatele, nebo je umístěte pevně do layoutu ještě před načtením stránky (position: fixed nebo sticky). Nikdy nevkládejte nový obsah nad existující prvky ve viewportu poté, co se stránka načetla. Výjimkou jsou změny způsobené kliknutím nebo zadáním textu uživatele — ty CLS neovlivňují.

  • Cookie lišta: position: fixed bottom:0 — nezabírá místo v layoutu
  • Chat widget: position: fixed, nenačítat before DOMContentLoaded
  • Push notifikace: vždy spouštěné uživatelskou akcí, ne automaticky
Animace způsobující layout shift

Nahraďte CSS vlastnosti, které přepočítávají layout. Vlastnosti top, left, margin, padding, width a height při animaci nutí prohlížeč přepočítat pozice všech sousedních prvků. Nahraďte je vlastností transform: translateX() / translateY(), která layout neovlivňuje a animuje se na GPU.

  • Špatně: animace margin-top nebo left
  • Správně: transform: translate() nebo scale()
  • Ověřte: will-change: transform pro složité animace
Lazy-load obrázky

Atribut loading=“lazy“ odkládá načtení obrázku na moment, kdy se přiblíží viewportu. Pokud ale obrázek nemá definované rozměry, prohlížeč nevyhradí prostor a obsah pod obrázkem se posune v okamžiku načtení. Řešení je stejné jako u standardních obrázků — vždy uveďte width, height nebo nastavte aspect-ratio.

  • Vždy kombinujte: loading=“lazy“ width=“X“ height=“Y“
  • CSS fallback: img { aspect-ratio: attr(width) / attr(height) }
  • Hero obrázky: nikdy nepoužívejte lazy-load pro first viewport

SEO dopad

CLS a SEO — jak tato metrika ovlivňuje pozice

CLS je od roku 2021 součástí Page Experience signálu, který Google zahrnuje do svého algoritmu řazení výsledků. Neznamená to, že špatné CLS samo o sobě způsobí propad o desítky pozic. Google opakovaně potvrzuje, že kvalita obsahu zůstává primárním faktorem. Špatné CLS ale vytváří kumulativní nevýhodu: pokud dvě stránky mají srovnatelný obsah, lepší technický výkon může rozhodovat.

Praktičtěji řečeno: špatné CLS poškozuje konverze víc než pozice. Uživatel, který klikne na špatné tlačítko kvůli poskočení stránky, odchází a vrací se do výsledků vyhledávání. Google tento signál (návrat do SERPu krátce po kliknutí) sleduje a může ho použít jako negativní kvalitativní signál pro danou stránku.

CLS je jednou ze tří metrik, které tvoří Core Web Vitals. Vedle ní se měří rychlost načtení největšího prvku (LCP) a odezva na první interakci uživatele (INP). Pokud máte špatné výsledky ve všech třech metrikách zároveň, dopad na výkon stránky je výraznější než při izolovaném problému.

Časté otázky

Časté otázky o CLS

Lighthouse (lab data) simuluje načtení stránky na pomalém připojení a měří CLS pouze během počátečního načtení. PageSpeed Insights field data zobrazují průměr reálných uživatelů za 28 dní, včetně všech typů zařízení a sítí. Reálná data bývají vyšší, protože zachycují chování stránky i po jejím plném načtení, například při načítání obsahu po scrollování. Primární referenci pro SEO hodnocení tvoří field data.
Ano, pokud pro reklamní slot není rezervovaný pevný prostor. Google Ads jsou jednou z nejčastějších příčin špatného CLS u obsahových webů. Řešením je nastavit pevnou výšku (nebo min-height) na div, do kterého se reklama načítá. Fluidní formáty s proměnlivou výškou je vhodné umísťovat pod fold, kde mají menší dopad na skóre. Google Publisher Tag dokumentace přímo doporučuje rezervovat prostor pro největší možný formát na daném slotu.
Ano, ale je to vzácné. Statické stránky s pevně danými rozměry všech prvků, bez webfontů s nestandardními rozměry a bez dynamicky načítaného obsahu mohou dosáhnout CLS 0. U většiny webů s reklamami, embedy nebo lazy-load obrázky je realistickým cílem skóre pod 0,05.
Field data v Google Search Console se aktualizují s 28denním klouzavým průměrem. To znamená, že po nasazení opravy uvidíte zlepšení postupně — první výrazný posun bývá viditelný po 2 až 4 týdnech, plný efekt po 4 týdnech. Lighthouse a PageSpeed Insights v lab režimu změnu zobrazí okamžitě po nasazení.
Prahové hodnoty jsou stejné (dobré: ≤ 0,1, špatné: nad 0,25), ale skóre se mezi mobilem a desktopem liší. Mobilní zařízení mají menší viewport, takže stejný posun prvku zabírá relativně větší část obrazovky a generuje vyšší impact fraction. Proto bývá CLS na mobilech vyšší. Google Search Console hodnotí mobil a desktop zvlášť — zkontrolujte obě záložky.
Ano, nepřímo. Na pomalých stránkách jsou posuny roztaženy do delšího časového úseku a uživatel zažívá více neočekávaných pohybů obsahu. Pomalé načtení samo o sobě měří jiná metrika (LCP), ale kombinace špatného LCP a špatného CLS má výrazný dopad na celkové hodnocení Page Experience.
Samuel Krištof — CEO PŘESAH.agency

Autor článku

Samuel Krištof

CEO & CMO · PŘESAH.agency

SEO Online marketing Správa PPC Sociální sítě Emailing

Marketingu se věnuji od roku 2017. Začínal jsem ve Fajn skupině, kde jsem budoval komunity na Facebooku a záhy přešel k placeným kampaním — pod vedením Janči Skalkové jsem nasbíral základy, které používám dodnes. Postupně jsem se dostal k SEO, automatizacím a celkové správě marketingu. Dnes působím jako CEO agentury PŘESAH a zároveň jako externí CMO ve společnosti Bohemian Estates.

Obsah článku je ověřen vůči oficiálním zdrojům Google web.dev (CLS dokumentace) a Google Publisher Tag Guidelines.

Zdroje

Zdroje a použitá literatura

Google web.dev — Cumulative Layout Shift (CLS)
web.dev/articles/cls · přístup duben 2026

Google Publisher Tag — Minimize layout shift
developers.google.com/publisher-tag/guides/minimize-layout-shift · přístup duben 2026

WICG — Layout Instability API specifikace
github.com/WICG/layout-instability · přístup duben 2026

Google Search Central — Core Web Vitals
developers.google.com/search/docs/appearance/core-web-vitals · přístup duben 2026

Přejít nahoru