Core Web Vitals — co to jest LCP, INP i CLS, jak je mierzyć i jak poprawić

Core Web Vitals to 3 metryki Google mierzące szybkość, responsywność i stabilność strony — LCP, INP i CLS. Wyjaśniam co mierzą, jakie są progi, jak sprawdzić wyniki i jak je poprawić krok po kroku.

Core Web Vitals to zestaw trzech metryk, które Google używa do mierzenia doświadczenia użytkownika na stronie. Od 2021 roku są oficjalnym sygnałem rankingowym — strony z dobrymi Core Web Vitals mają przewagę w wynikach wyszukiwania nad stronami z złymi wynikami (przy porównywalnej jakości treści).

Trzy metryki to: LCP (szybkość ładowania), INP (responsywność na interakcje) i CLS (stabilność wizualna). W tym poradniku wyjaśniam co każda z nich mierzy, jakie są progi Google, jak je sprawdzić i — najważniejsze — jak je poprawić.

Trzy metryki Core Web Vitals

Metryka Co mierzy Dobry Wymaga poprawy Słaby
LCP (Largest Contentful Paint) Czas załadowania największego elementu widocznego ≤ 2,5 s 2,5–4,0 s > 4,0 s
INP (Interaction to Next Paint) Czas reakcji na interakcję użytkownika ≤ 200 ms 200–500 ms > 500 ms
CLS (Cumulative Layout Shift) Stabilność wizualna (ile elementów „skacze”) ≤ 0,1 0,1–0,25 > 0,25

Google ocenia CWV na podstawie danych terenowych (Field Data) — rzeczywistych pomiarów od prawdziwych użytkowników Chrome (raport CrUX). Nie na podstawie pojedynczego testu laboratoryjnego — ale statystyk z 28 dni od realnych odwiedzin. To oznacza: musisz poprawić doświadczenie 75% użytkowników (p75), żeby wynik był „dobry”.

LCP — Largest Contentful Paint (szybkość ładowania)

Co to mierzy

LCP mierzy czas, w którym największy element widoczny na ekranie (above the fold) zostaje w pełni załadowany. Najczęściej to:

  • Hero image — duże zdjęcie na górze strony
  • Blok tekstu — nagłówek H1 + pierwszy paragraf (jeśli brak dużego obrazka)
  • Wideo poster — miniatura wideo
  • Background image w CSS

Cel: ≤ 2,5 sekundy. Użytkownik powinien zobaczyć główną treść w 2,5 sekundy od kliknięcia w link.

Jak poprawić LCP

  1. Obniż TTFB — serwer musi odpowiedzieć szybko. Page cache (LiteSpeed, WP Rocket), CDN, Redis, szybszy hosting.
  2. Zoptymalizuj obrazek LCP — kompresja, WebP/AVIF, prawidłowy rozmiar (nie 4000px na slot 800px). Dodaj atrybut fetchpriority="high" do obrazka hero.
  3. Nie lazy-loaduj obrazka LCP — lazy loading opóźnia ładowanie. Obrazek hero powinien mieć loading="eager" (lub brak atrybutu loading — eager jest domyślne).
  4. Usuń render-blocking CSS/JS — krytyczny CSS inline w <head>, reszta defer/async. Minifikacja + concat.
  5. Preload ważnych zasobów<link rel="preload" as="image" href="hero.webp"> w <head>. Przeglądarka zaczyna pobierać obrazek natychmiast.
  6. Używaj <img> zamiast CSS background-image dla elementu LCP — przeglądarka wcześniej odkrywa <img> w HTML niż background w CSS.

INP — Interaction to Next Paint (responsywność)

Co to mierzy

INP mierzy czas od kliknięcia/tapnięcia przez użytkownika do momentu, gdy przeglądarka pokaże wizualną odpowiedź. Np. klikasz przycisk „Dodaj do koszyka” → ile czasu mija zanim zobaczysz jakąkolwiek zmianę na ekranie (animacja, zmiana tekstu, potwierdzenie).

INP zastąpił FID (First Input Delay) w marcu 2024. Różnica: FID mierzył tylko pierwsze kliknięcie. INP mierzy wszystkie interakcje i bierze najgorszą (p75). To trudniejsza metryka.

Cel: ≤ 200 ms. Strona powinna reagować na kliknięcia w mniej niż 200 milisekund.

Jak poprawić INP

  1. Zmniejsz JavaScript — każdy JS blokuje main thread. Mniej kodu = szybsza reakcja. Audyt: PageSpeed Insights → „Reduce JavaScript execution time”.
  2. Rozbij długie zadania (Long Tasks) — zadania JS dłuższe niż 50 ms blokują interakcje. Rozbij na mniejsze chunki z setTimeout(), requestIdleCallback() lub scheduler.yield().
  3. Defer/async niepotrzebny JS — ładuj trzecie-stronne skrypty (analytics, chat, reklamy) po załadowaniu strony: <script defer> lub dynamicznie po DOMContentLoaded.
  4. Unikaj dużych re-renderów DOM — kliknięcie, które wymusza przebudowanie 5000 elementów DOM, będzie wolne. Minimalizuj DOM (max 1500 elementów), unikaj layout thrashing.
  5. Ogranicz wtyczki WordPress z ciężkim JS — Elementor, Slider Revolution, czat-boty, pop-up tools dodają setki KB JavaScript. Usuń zbędne lub zastąp lekkimi alternatywami.
  6. Web Workers — przenieś ciężkie obliczenia do Web Worker (osobny thread), żeby nie blokować main thread.

CLS — Cumulative Layout Shift (stabilność wizualna)

Co to mierzy

CLS mierzy ile elementów na stronie „skacze” (przesuwa się) podczas ładowania. Znasz ten problem: czytasz artykuł, nagle ładuje się reklama i tekst przesuwa się o 300 pikseli w dół. Albo klikasz przycisk, ale w ostatniej chwili ładuje się obrazek i klikasz coś innego. To jest layout shift — i CLS go mierzy.

Cel: ≤ 0,1. Im niższy CLS, tym stabilniejsza strona wizualnie.

Jak poprawić CLS

  1. Podaj wymiary obrazkom — zawsze dodawaj width i height do tagów <img> (lub CSS aspect-ratio). Przeglądarka rezerwuje miejsce zanim pobierze obrazek = brak skoku.
  2. Podaj wymiary ramkom embed/iframe — wideo YouTube, mapy Google, widgety — zawsze z width/height lub aspect-ratio: 16/9.
  3. Nie wstawiaj treści dynamicznej „nad” istniejącą — bannery cookies, powiadomienia, reklamy powinny mieć zarezerwowane miejsce lub pojawiać się poniżej fold (nie przesuwając tekstu).
  4. Używaj font-display: swap dla custom fontów — zamiast niewidocznego tekstu (FOIT) podczas ładowania fontu, wyświetl tekst w fallback foncie i zamień po załadowaniu (mały shift, ale lepszy niż brak tekstu).
  5. Unikaj dynamicznego wstawiania reklam bez zarezerwowanego slotu — Google Ads (AdSense): ustaw minimalne wymiary kontenera (min-height) zanim reklama się załaduje.
  6. Animacje — używaj transform zamiast zmiany top/left/width/height. Transformacje nie powodują layout shift.

Jak mierzyć Core Web Vitals

Dane terenowe (Field Data) — to, co Google NAPRAWDĘ używa

  • PageSpeed Insights (pagespeed.web.dev) — na górze: „Discover what your real users are experiencing” = dane terenowe z CrUX. To jest oficjalny wynik Google.
  • Google Search Console → „Core Web Vitals” (raport) — pokazuje ile stron ma dobry/wymaga poprawy/słaby CWV. Najlepsza przeglądowa diagnoza.
  • CrUX Dashboard (datastudio) — wizualizacja historycznych danych CWV (trendy w czasie).

Dane laboratoryjne (Lab Data) — do diagnozy problemów

  • PageSpeed Insights — dolna sekcja „Diagnose performance issues” = dane laboratoryjne (symulacja). Dają sugestie co naprawić.
  • Chrome DevTools → Performance — nagraj sesję, zobacz timeline z LCP, layout shifts, long tasks. Najbardziej szczegółowe.
  • Chrome DevTools → Lighthouse — F12 → Lighthouse → „Performance” → Run audit. Symulacja mobilna z wynikami CWV.
  • Web Vitals Extension (Chrome) — wyświetla LCP/INP/CLS w czasie rzeczywistym na każdej stronie.

Core Web Vitals a ranking w Google — ile to wpływa?

Core Web Vitals to jeden z wielu sygnałów rankingowych — nie jedyny i nie dominujący. Google oficjalnie mówi: „treść jest ważniejsza niż CWV”. Strona ze świetną treścią i słabymi CWV może nadal rankować wyżej niż strona z doskonałymi CWV i słabą treścią.

Ale: przy porównywalnej jakości treści, CWV to tiebreaker. Dwie strony o identycznej treści, linkach i autorytecie — ta z lepszymi CWV wygra. Dlatego CWV warto optymalizować — to darmowa przewaga konkurencyjna.

Dodatkowo: Google wyświetla badge „Page experience” w mobilnych SERP (zielona ikonka) dla stron z dobrymi CWV — co zwiększa CTR.

CWV w WordPress — typowe problemy i rozwiązania

LCP za wysoki (> 2,5 s)

Najczęstsze przyczyny na WordPress: brak page cache, niezoptymalizowane obrazki, wolny hosting, render-blocking CSS/JS od motywu/wtyczek. Rozwiązanie: LiteSpeed Cache + ShortPixel WebP + optymalizacja TTFB.

INP za wysoki (> 200 ms)

Najczęstsze przyczyny: Elementor (ładuje 300+ KB JS), ciężkie slidery (Slider Revolution), czat-boty (Tidio, LiveChat), pop-up wtyczki (OptinMonster, Popup Maker), Google reCAPTCHA. Rozwiązanie: defer skryptów, usunięcie zbędnych wtyczek, lazy load dla czat-bota (załaduj dopiero po scroll/klik).

CLS za wysoki (> 0,1)

Najczęstsze przyczyny: obrazki bez wymiarów, reklamy AdSense bez zarezerwowanego slotu, custom fonty bez font-display, lazy loading obrazków above the fold (pojawiają się z opóźnieniem = shift). Rozwiązanie: width/height na każdym <img>, min-height na kontenerach reklam, font-display: swap w @font-face.

Najczęściej zadawane pytania

Jak szybko Google zauważy poprawę CWV?

Dane CrUX (Field Data) zbierają się przez 28 dni. Po naprawie: musisz poczekać ~4 tygodnie, aż nowe dane zastąpią stare. PageSpeed Insights pokaże poprawę po tym czasie. Search Console: raport aktualizuje się co kilka dni, ale pełna zmiana widoczna po ~28 dniach.

Czy CWV mierzy mobile czy desktop?

Google używa danych mobilnych do rankingu (Mobile-First Indexing). PageSpeed Insights pokazuje oba (przełącznik Mobile/Desktop), ale dla SEO liczy się mobile. Optymalizuj pod mobile w pierwszej kolejności.

Co jeśli moja strona nie ma danych terenowych (Field Data)?

Nowe strony (mało ruchu) nie mają wystarczających danych w CrUX. PageSpeed Insights pokaże wtedy: „Field data not available” i tylko dane laboratoryjne. Google w takim przypadku nie używa CWV jako sygnału (bo nie ma danych). Dane pojawiają się, gdy strona ma wystarczający ruch w Chrome (~kilka tysięcy odwiedzin/mc).

Czy wtyczka „Performance” naprawi CWV?

Nie ma jednej wtyczki, która „naprawi wszystko”. Ale kombinacja: cache plugin (LiteSpeed/WP Rocket) + image optimizer (ShortPixel) + asset optimizer (Autoptimize lub wbudowane opcje cache plugina) rozwiązuje 80% problemów CWV na WordPress. Reszta to audyt konkretnych wtyczek (które ładują ciężki JS) i optymalizacja motywu.

FID vs INP — co się zmieniło?

FID (First Input Delay) mierzył opóźnienie TYLKO pierwszej interakcji. Był łatwy do „oszukania” (strona reagowała szybko na pierwsze kliknięcie, ale potem była wolna). INP (Interaction to Next Paint) mierzy WSZYSTKIE interakcje i bierze najgorszą (p75). Jest trudniejszy do poprawienia, ale lepiej oddaje rzeczywiste doświadczenie użytkownika. FID został zastąpiony INP jako Core Web Vital w marcu 2024.

Podsumowanie

Core Web Vitals = trzy metryki doświadczenia użytkownika, które Google używa jako sygnał rankingowy: LCP ≤ 2,5 s (szybkość), INP ≤ 200 ms (responsywność), CLS ≤ 0,1 (stabilność). Mierzysz: PageSpeed Insights (dane terenowe = oficjalne), Google Search Console (raport zbiorczy). Naprawiasz: cache + CDN + optymalizacja obrazków (LCP), mniej/defer JS (INP), wymiary na obrazkach/iframach (CLS). CWV nie zastąpi dobrej treści — ale przy równej jakości treści, daje przewagę w rankingu.

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas