Core Web Vitals – co to jest i jak poprawić?
Czym są Core Web Vitals?
53% użytkowników mobilnych opuszcza stronę, jeśli ładuje się dłużej niż 3 sekundy. Google doskonale o tym wie i od lat dąży do tego, aby internet był szybszy, stabilniejszy i bardziej przyjazny dla użytkowników. Właśnie dlatego w 2020 roku wprowadzono zestaw metryk znanych jako Core Web Vitals — trzy kluczowe wskaźniki, które mierzą realne doświadczenia osób odwiedzających Twoją witrynę.
Core Web Vitals to nie kolejna abstrakcyjna koncepcja techniczna. To konkretne, mierzalne parametry, które Google wykorzystuje do oceny jakości interakcji użytkownika ze stroną internetową. Każdy z tych wskaźników odnosi się do innego aspektu doświadczenia: szybkości ładowania widocznej treści, stabilności wizualnej layoutu oraz responsywności strony na działania użytkownika. Razem tworzą kompletny obraz tego, jak strona „czuje się" z perspektywy osoby, która ją odwiedza.
Google oficjalnie potwierdził, że Core Web Vitals stanowią część algorytmu rankingowego. Oznacza to, że strony oferujące lepsze doświadczenia użytkownika — mierzone właśnie tymi wskaźnikami — mogą zyskać przewagę w wynikach wyszukiwania nad konkurencją o porównywalnej jakości treści. Jeśli poważnie myślisz o pozycjonowaniu stron, nie możesz zignorować tych metryk.
Warto podkreślić, że Core Web Vitals bazują na danych z rzeczywistych użytkowników (tzw. dane polowe, field data), zbieranych przez przeglądarkę Chrome i raportowanych w Chrome User Experience Report (CrUX). To nie są syntetyczne testy laboratoryjne — to prawdziwe pomiary tego, jak Twoja strona działa na urządzeniach realnych odwiedzających. Google analizuje 75. percentyl danych, co oznacza, że 75% odwiedzin musi spełniać progi „dobrego" wyniku, aby strona została uznana za spełniającą standardy.
Ewolucja metryk — od FID do INP
Początkowo zestaw Core Web Vitals obejmował trzy metryki: LCP (Largest Contentful Paint), FID (First Input Delay) i CLS (Cumulative Layout Shift). W marcu 2024 roku Google dokonał istotnej zmiany — metrykę FID zastąpił nowym wskaźnikiem INP (Interaction to Next Paint). Zmiana ta wynikała z faktu, że FID mierzył jedynie opóźnienie pierwszej interakcji, podczas gdy INP obejmuje responsywność strony przez cały czas jej użytkowania. To znacznie lepiej oddaje rzeczywiste doświadczenie użytkownika, który nie tylko klika raz, ale wielokrotnie wchodzi w interakcję ze stroną — przewija, rozwija menu, wypełnia formularze czy przełącza zakładki.
Obecny zestaw Core Web Vitals to zatem:
- LCP (Largest Contentful Paint) — szybkość ładowania głównej treści
- CLS (Cumulative Layout Shift) — stabilność wizualna
- INP (Interaction to Next Paint) — responsywność interakcji
LCP, CLS i INP – co oznaczają poszczególne wskaźniki?
Każdy z trzech wskaźników Core Web Vitals odpowiada na inne pytanie dotyczące jakości strony. Zrozumienie, co dokładnie mierzą i jakie wartości są akceptowalne, to fundament skutecznej optymalizacji. Poniżej szczegółowo omawiamy każdą z metryk.
LCP — Largest Contentful Paint
LCP mierzy czas, jaki upływa od rozpoczęcia ładowania strony do momentu wyrenderowania największego widocznego elementu w obszarze viewport (czyli tej części strony, którą użytkownik widzi bez przewijania). Tym elementem najczęściej jest główne zdjęcie, baner hero, duży blok tekstu lub element wideo. LCP jest de facto miarą postrzeganej szybkości ładowania — odpowiada na pytanie: „Kiedy użytkownik widzi główną treść strony?".
| Wynik LCP | Ocena | Interpretacja |
|---|---|---|
| ≤ 2,5 s | Dobry | Strona ładuje się szybko, użytkownik nie czeka |
| 2,5 – 4,0 s | Wymaga poprawy | Zauważalne opóźnienie, ryzyko utraty użytkowników |
| > 4,0 s | Słaby | Krytycznie wolne ładowanie, wysoki bounce rate |
Najczęstszymi przyczynami słabego LCP są: wolny czas odpowiedzi serwera (TTFB), blokujące renderowanie zasoby CSS i JavaScript, nieoptymalnie załadowane obrazy oraz wolne ładowanie czcionek. Każda z tych przyczyn wymaga innego podejścia do optymalizacji, o czym piszemy w dalszej części artykułu.
CLS — Cumulative Layout Shift
CLS mierzy sumę wszystkich nieoczekiwanych przesunięć elementów na stronie podczas jej ładowania i użytkowania. Czy zdarzyło Ci się czytać artykuł na telefonie, a nagle tekst „uciekł" w dół, bo załadowała się reklama powyżej? Albo chciałeś kliknąć przycisk, ale w ostatniej chwili przesunął się o kilkadziesiąt pikseli i trafiłeś w coś innego? Dokładnie to mierzy CLS.
Wartość CLS nie jest wyrażona w sekundach, lecz w bezwymiarowej skali. Oblicza się ją jako iloczyn frakcji wpływu (impact fraction — jaka część viewportu się przesunęła) i frakcji odległości (distance fraction — o ile się przesunęła). Google analizuje tzw. okna sesji — grupy przesunięć następujących po sobie w krótkim czasie — i bierze pod uwagę najgorsze z nich.
| Wynik CLS | Ocena | Interpretacja |
|---|---|---|
| ≤ 0,1 | Dobry | Stabilny layout, minimalne przesunięcia |
| 0,1 – 0,25 | Wymaga poprawy | Zauważalne przesunięcia, irytujące dla użytkownika |
| > 0,25 | Słaby | Poważne problemy ze stabilnością layoutu |
Główne przyczyny problemów z CLS to: obrazy i filmy bez zadeklarowanych wymiarów, dynamicznie wstrzykiwane reklamy, czcionki webowe powodujące przeskok tekstu (FOUT/FOIT) oraz dynamicznie ładowane treści nad istniejącymi elementami. Warto zwrócić uwagę, że poszczególne sekcje witryny mogą mieć różny wpływ na CLS — nagłówek i obszar above the fold są szczególnie wrażliwe.
INP — Interaction to Next Paint
INP to najnowszy członek rodziny Core Web Vitals, który zastąpił FID w marcu 2024 roku. Mierzy on czas od momentu interakcji użytkownika (kliknięcie, dotknięcie ekranu, naciśnięcie klawisza) do momentu, gdy przeglądarka wyrenderuje następną klatkę z wizualnym efektem tej interakcji. W przeciwieństwie do FID, który mierzył jedynie opóźnienie pierwszej interakcji, INP monitoruje wszystkie interakcje w trakcie wizyty i raportuje najgorszy (lub bliski najgorszemu) wynik.
| Wynik INP | Ocena | Interpretacja |
|---|---|---|
| ≤ 200 ms | Dobry | Strona reaguje natychmiast na interakcje |
| 200 – 500 ms | Wymaga poprawy | Widoczne opóźnienia, spadek komfortu użytkowania |
| > 500 ms | Słaby | Strona „laguje", użytkownicy rezygnują z interakcji |
INP składa się z trzech faz: opóźnienia wejściowego (input delay — czas oczekiwania na rozpoczęcie przetwarzania, np. gdy główny wątek jest zajęty), czasu przetwarzania (processing time — wykonywanie event handlerów JavaScript) oraz opóźnienia prezentacji (presentation delay — czas renderowania zmian w DOM i malowania pikseli na ekranie). Optymalizacja INP wymaga pracy nad każdą z tych faz.
Dlaczego Core Web Vitals mają znaczenie dla SEO?
Google od lat powtarza, że jego misją jest dostarczanie użytkownikom najlepszych możliwych wyników. Treść pozostaje fundamentem — żadna optymalizacja techniczna nie pomoże, jeśli strona nie odpowiada na intencję wyszukiwania. Ale przy porównywalnej jakości treści, doświadczenie użytkownika staje się czynnikiem różnicującym. I tu wchodzą Core Web Vitals.
Bezpośredni wpływ na ranking
W czerwcu 2021 roku Google rozpoczął wdrażanie aktualizacji Page Experience, w której Core Web Vitals stały się oficjalnym sygnałem rankingowym. Od tamtej pory wskaźniki te — obok bezpieczeństwa HTTPS, braku interstitiali i mobile-friendliness — wpływają na pozycje w wynikach wyszukiwania. Google wielokrotnie podkreślał, że nie jest to dominujący czynnik (treść nadal wygrywa), ale w przypadku dwóch stron o zbliżonej relewantności i autorytecie, lepsza wydajność techniczna może przechylić szalę.
Badanie przeprowadzone przez Searchmetrics na ponad 2 milionach wyników wyszukiwania wykazało, że strony na pozycjach 1-3 miały średnio o 25% lepsze wyniki LCP niż strony na pozycjach 7-10. Korelacja nie oznacza przyczynowości, ale trend jest wyraźny — najlepiej pozycjonowane strony to zazwyczaj te, które oferują szybkie i stabilne doświadczenie.
Pośredni wpływ — sygnały behawioralne
Nawet gdyby Core Web Vitals nie były bezpośrednim sygnałem rankingowym, ich optymalizacja poprawiałaby SEO pośrednio. Wolna strona z niestabilnym layoutem generuje wyższy współczynnik odrzuceń, krótszy czas na stronie i mniej przeglądanych podstron. Te sygnały behawioralne — choć Google oficjalnie nie potwierdza ich bezpośredniego wpływu na ranking — z pewnością wpływają na to, jak algorytm ocenia satysfakcję użytkownika z danego wyniku.
Według danych Google, poprawa LCP o 100 ms (np. z 2,8 s do 2,7 s) może zwiększyć konwersje o nawet 1,4%. Dla sklepu internetowego generującego 100 000 zł miesięcznie to dodatkowe 1 400 zł — co roku ponad 16 000 zł. Inwestycja w optymalizację szybkości to nie koszt, lecz bezpośredni wpływ na przychód.
Warto też pamiętać o kontekście szerszej strategii jak pozycjonować stronę w 2025 roku — Core Web Vitals to jeden z wielu elementów technicznego SEO, ale element coraz ważniejszy. Gdy konkurencja w Twojej branży zaczyna optymalizować swoje strony pod kątem tych metryk, brak działania z Twojej strony oznacza stopniowe tracenie pozycji.
Wpływ na crawl budget i indeksowanie
Szybsze strony to więcej stron zaindeksowanych w tym samym czasie. Googlebot ma ograniczony budżet crawlowania dla każdej witryny. Jeśli Twoje strony odpowiadają wolno (wysoki TTFB), robot zdąży odwiedzić mniej podstron. Dla dużych serwisów z tysiącami stron — np. sklepów e-commerce czy portali informacyjnych — może to oznaczać, że znaczna część treści nie jest regularnie indeksowana. Przekłada się to bezpośrednio na widoczność w wynikach wyszukiwania i na statystyki ruchu, które monitorujesz w Google Analytics czy Search Console.
Jak sprawdzić Core Web Vitals swojej strony?
Zanim zaczniesz optymalizować, musisz zmierzyć obecny stan. Na szczęście Google udostępnia wiele narzędzi — zarówno do analizy laboratoryjnej (symulowanej), jak i polowej (z danych rzeczywistych użytkowników). Oba typy danych są ważne i uzupełniają się nawzajem.
Google Search Console — raport Core Web Vitals
To powinno być Twoje pierwsze źródło danych. Raport Core Web Vitals w Google Search Console (w sekcji „Podstawowe wskaźniki internetowe") pokazuje, ile stron w Twojej witrynie ma status „Dobry", „Wymaga poprawy" lub „Słaby" — osobno dla urządzeń mobilnych i desktopowych. Dane opierają się na Chrome UX Report (CrUX), więc to realne doświadczenia użytkowników.
Raport grupuje strony o podobnych problemach, co pozwala szybko zidentyfikować wzorce — np. „Wszystkie strony produktowe mają słaby LCP" wskazuje na problem z szablonem, a nie z pojedynczą stroną. Klikając w konkretny problem, zobaczysz przykładowe URL-e, które możesz następnie przeanalizować w PageSpeed Insights.
PageSpeed Insights
PageSpeed Insights (PSI) to najpopularniejsze narzędzie do sprawdzania wydajności pojedynczych stron. Wystarczy wpisać URL i poczekać kilka sekund. Otrzymasz dwa zestawy danych:
- Dane polowe (Field Data) — z Chrome UX Report, bazujące na ostatnich 28 dniach odwiedzin rzeczywistych użytkowników. To te dane decydują o wpływie na ranking.
- Dane laboratoryjne (Lab Data) — z symulacji Lighthouse, uruchamianej na serwerze Google z emulacją mobilnego urządzenia i wolnego połączenia 4G. Przydatne do diagnostyki, ale nie wpływają bezpośrednio na ranking.
Uwaga: nowe strony lub strony o niskim ruchu mogą nie mieć danych polowych — Chrome wymaga minimum ok. 1000 odwiedzin miesięcznie, aby zgromadzić statystycznie istotną próbkę. W takim przypadku bazuj na danych laboratoryjnych, ale traktuj je jako przybliżenie.
Chrome DevTools — zakładka Performance
Dla bardziej zaawansowanej diagnostyki możesz użyć wbudowanych narzędzi deweloperskich przeglądarki Chrome. Naciśnij F12, przejdź do zakładki Performance i nagraj sesję ładowania strony. Otrzymasz szczegółowy timeline z dokładnymi momentami renderowania, blokowania głównego wątku i interakcji.
W zakładce Performance możesz też zobaczyć metrykę „Total Blocking Time" (TBT), która jest laboratoryjnym odpowiednikiem INP — im dłużej główny wątek jest zablokowany, tym gorzej strona reaguje na interakcje użytkownika. DevTools pokazuje też, które skrypty blokują renderowanie, co jest bezcenne przy diagnozie problemów z LCP i INP.
Web Vitals Extension
Rozszerzenie „Web Vitals" do Chrome (stworzone przez Google) wyświetla wyniki Core Web Vitals w czasie rzeczywistym — bezpośrednio w przeglądarce, jako mały widget. Klikając w niego, zobaczysz szczegóły: wartość LCP, CLS i INP na bieżąco, wraz z informacją, jaki element jest elementem LCP i które elementy powodują przesunięcia layoutu.
To doskonałe narzędzie do codziennego monitorowania i szybkiego sprawdzania, jak Twoje zmiany wpływają na metryki — bez konieczności uruchamiania pełnych audytów. Przydaje się też do sprawdzania stron konkurencji. Profesjonalny audyt SEO zawsze obejmuje analizę Core Web Vitals, ale Web Vitals Extension pozwala na szybki wgląd w każdej chwili.
Lighthouse z poziomu terminala (CLI)
Jeśli potrzebujesz zautomatyzować testy — np. sprawdzać wydajność po każdym deploymencie — możesz uruchomić Lighthouse z poziomu wiersza poleceń:
npx lighthouse https://twoja-strona.pl --only-categories=performance --output=json
W połączeniu z CI/CD pipeline (np. GitHub Actions) możesz automatycznie blokować merge, jeśli wyniki spadną poniżej ustalonych progów. To podejście stosujemy w Noril.pl dla klientów, którym zależy na utrzymaniu wysokiej wydajności mimo częstych zmian na stronie.
Praktyczne sposoby na poprawę LCP
LCP to najczęściej problematyczny wskaźnik — według danych HTTP Archive w 2024 roku aż 40% stron mobilnych nie spełniało progu „dobrego" LCP (≤ 2,5 s). Poprawa tego wskaźnika wymaga pracy na wielu frontach, ponieważ na LCP wpływa łańcuch zdarzeń: od żądania DNS, przez odpowiedź serwera, renderowanie CSS, po załadowanie głównego elementu wizualnego.
Krok 1: Zoptymalizuj czas odpowiedzi serwera (TTFB)
TTFB (Time to First Byte) to fundament — jeśli serwer odpowiada wolno, żaden inny zabieg nie pomoże osiągnąć dobrego LCP. Idealna wartość TTFB to poniżej 200 ms, choć Google nie definiuje jej jako osobny Core Web Vital.
Konkretne działania:
- Wybierz wydajny hosting — tani hosting współdzielony za 10 zł/miesiąc to pierwszy problem wielu stron. Rozważ VPS, hosting zarządzany lub rozwiązanie chmurowe. Jakość serwerów WWW ma bezpośredni wpływ na TTFB.
- Wdróż CDN (Content Delivery Network) — Cloudflare (darmowy plan wystarczy dla większości stron), Bunny CDN czy KeyCDN skrócą czas odpowiedzi dla użytkowników oddalonych od fizycznej lokalizacji serwera. Dla polskich stron z polskim ruchem efekt będzie mniejszy, ale wciąż odczuwalny.
- Włącz cache na poziomie serwera — jeśli Twoja strona opiera się na WordPressie, zainstaluj wtyczkę cachującą (WP Super Cache, W3 Total Cache, LiteSpeed Cache). Dla innych CMS-ów konfiguruj cache na poziomie Nginx/Apache lub Varnish. Cel: aby serwer nie musiał generować strony od zera przy każdym żądaniu.
- Zoptymalizuj zapytania bazodanowe — wolne zapytania SQL to częsta przyczyna wysokiego TTFB. Użyj Query Monitor (WordPress) lub Debug Toolbar (Django) do identyfikacji problematycznych zapytań.
Krok 2: Wyeliminuj blokujące zasoby renderowania
Przeglądarka nie może wyświetlić strony, dopóki nie pobierze i nie przetworzy krytycznych plików CSS i JavaScript. Każdy plik CSS w sekcji <head> i każdy skrypt JavaScript bez atrybutu async lub defer blokuje renderowanie.
- Inline krytyczny CSS — zidentyfikuj CSS potrzebny do wyrenderowania treści above the fold i umieść go bezpośrednio w sekcji
<head>jako<style>. Resztę CSS załaduj asynchronicznie. Narzędzia jak Critical (npm) mogą zautomatyzować ten proces. - Zastosuj kompresję plików CSS — minifikacja i kompresja GZIP/Brotli mogą zmniejszyć rozmiar plików CSS nawet o 70-80%. Każdy kilobajt mniej to szybsze parsowanie i renderowanie.
- Defer i async dla JavaScript — dodaj atrybut
deferdo skryptów, które nie są krytyczne dla renderowania (analityka, widgety, czat na żywo). Atrybutasyncstosuj dla skryptów niezależnych od DOM. - Usuń nieużywany CSS i JS — narzędzie Coverage w Chrome DevTools pokaże Ci, jaki procent pobranego CSS i JS jest faktycznie wykorzystywany na danej stronie. Typowo 50-70% kodu CSS jest nieużywane — to ogromne marnotrawstwo.
Krok 3: Zoptymalizuj element LCP (najczęściej obraz)
W 80% przypadków elementem LCP jest obraz — baner hero, główne zdjęcie produktu lub tło sekcji. Optymalizacja tego jednego obrazu może dramatycznie poprawić wynik LCP.
- Użyj nowoczesnych formatów — WebP jest o 25-35% mniejszy od JPEG przy porównywalnej jakości. AVIF oferuje jeszcze lepszą kompresję (40-50% mniej niż JPEG), ale wsparcie przeglądarek jest węższe. Użyj elementu
<picture>z fallbackiem. - Określ odpowiedni rozmiar — nie serwuj obrazu 3000×2000 px, jeśli wyświetla się w kontenerze 800×400 px. Użyj atrybutu
srcsetz wieloma rozmiarami, aby przeglądarka pobrała wersję optymalną dla danego urządzenia. - Preload elementu LCP — dodaj
<link rel="preload" as="image" href="hero.webp">w sekcji<head>. To informuje przeglądarkę, że ten obraz jest priorytetowy i powinna go pobrać jak najwcześniej, zanim jeszcze parser CSS go odkryje. - Ustaw fetchpriority="high" — atrybut
fetchpriority="high"na elemencie<img>LCP podnosi jego priorytet w kolejce sieciowej przeglądarki. - Nie stosuj lazy loading dla elementu LCP — lazy loading jest doskonałym rozwiązaniem dla obrazów poniżej linii fold, ale zastosowanie go do elementu LCP (np. głównego baneru) opóźnia jego załadowanie, bo przeglądarka czeka, aż element pojawi się w viewport.
Krok 4: Zoptymalizuj ładowanie czcionek
Czcionki Google Fonts lub własne czcionki webowe mogą opóźniać renderowanie tekstu, co bezpośrednio wpływa na LCP (jeśli elementem LCP jest blok tekstu) i CLS (jeśli czcionka powoduje przeskok layoutu po załadowaniu).
- Preconnect do serwera czcionek —
<link rel="preconnect" href="https://fonts.googleapis.com">oszczędza czas na nawiązanie połączenia. - Hostuj czcionki lokalnie — zamiast pobierać z Google Fonts, umieść pliki czcionek na swoim serwerze. Eliminujesz w ten sposób dodatkowe zapytanie DNS i negocjację TLS. Narzędzie google-webfonts-helper ułatwia pobranie plików i wygenerowanie CSS.
- Użyj font-display: swap — ta właściwość CSS nakazuje przeglądarce wyświetlić tekst czcionką systemową, zanim załaduje się czcionka webowa. Tekst jest widoczny natychmiast, co poprawia LCP.
- Ogranicz liczbę wariantów — każdy wariant (waga, styl) to dodatkowy plik do pobrania. Czy naprawdę potrzebujesz Light, Regular, Medium, SemiBold, Bold i ExtraBold? Najczęściej wystarczą 2-3 warianty.
Jak wyeliminować przesunięcia layoutu (CLS)?
CLS jest o tyle specyficzny, że jego poprawa często nie wymaga zaawansowanej wiedzy technicznej — wystarczy kilka dobrych praktyk stosowanych konsekwentnie. Problem w tym, że przesunięcia layoutu często pojawiają się podstępnie: deweloper testuje stronę na szybkim łączu, gdzie wszystko ładuje się jednocześnie i przesunięć nie widać. Ale użytkownik na wolnym 4G doświadcza zupełnie innej sekwencji ładowania — i to wtedy layout „skacze".
Zawsze deklaruj wymiary obrazów i filmów
To najczęstsza przyczyna słabego CLS i jednocześnie najłatwiejsza do naprawienia. Każdy element <img> i <video> powinien mieć zadeklarowane atrybuty width i height (lub wymiary zdefiniowane w CSS z zachowaniem proporcji przez aspect-ratio).
Gdy przeglądarka zna wymiary obrazu zanim go pobierze, rezerwuje odpowiednią przestrzeń w layoucie. Dzięki temu po załadowaniu obrazu nic się nie przesuwa. Nowoczesne przeglądarki automatycznie obliczają proporcje na podstawie atrybutów width/height, więc wystarczy podać oryginalne wymiary — responsywność zapewnia CSS (max-width: 100%; height: auto;).
Zarezerwuj miejsce na reklamy i embeddy
Dynamicznie ładowane reklamy (Google AdSense, sieć afiliacyjna) są jednym z najgorszych sprawców CLS. Reklama ładuje się po kilku sekundach i „wpycha" całą treść w dół. Rozwiązanie: utwórz kontener o stałych wymiarach (min-height) dla każdego slotu reklamowego.
Analogicznie postępuj z embedowanymi widgetami (YouTube, mapy Google, widgety social media) — zawsze definiuj wymiary kontenera, zanim widget się załaduje. Jeśli to niemożliwe, umieszczaj dynamiczne elementy poniżej linii fold, gdzie ich wpływ na CLS jest mniejszy.
Unikaj wstawiania treści nad istniejącymi elementami
Dynamiczne powiadomienia, bannery cookie, pasy informacyjne — jeśli pojawiają się nad treścią i wypychają ją w dół, generują CLS. Stosuj zamiast tego elementy z position: fixed lub position: sticky, które nakładają się na treść, zamiast ją przesuwać. Wiele witryn rozwiązuje to poprawnie — baner cookie wysuwa się z dołu ekranu, nie wpływając na pozycję pozostałych elementów.
Opanuj przeskoki tekstu przy ładowaniu czcionek
Gdy przeglądarka początkowo renderuje tekst czcionką systemową, a następnie podmienia ją na czcionkę webową, różnica w metrykach czcionek (rozmiar znaków, interlinia, kerning) może powodować przesunięcia layoutu. Oprócz wspomnianego font-display: swap rozważ użycie size-adjust, ascent-override, descent-override i line-gap-override w @font-face, aby czcionka fallbackowa miała jak najbardziej zbliżone metryki do czcionki docelowej. Narzędzie Fontaine lub next/font (w Next.js) automatyzują ten proces.
Stosuj transform zamiast właściwości wpływających na layout
Animacje wykorzystujące właściwości top, left, width, height czy margin mogą generować CLS. Zamiast tego używaj transform (translate, scale) i opacity — te właściwości są obsługiwane przez compositor przeglądarki i nie wpływają na layout innych elementów. To szczególnie ważne przy animacjach wejścia/wyjścia elementów, rozwijanych akordeonach i dynamicznych galeriach.
Optymalizacja INP — responsywność interakcji
Skoro omawiamy poprawę poszczególnych wskaźników, warto poświęcić uwagę również INP. Ten wskaźnik jest szczególnie problematyczny dla stron z dużą ilością JavaScriptu — aplikacji SPA, sklepów internetowych z rozbudowanymi filtrami, witryn z dynamicznymi formularzami.
Kluczowe techniki poprawy INP:
- Dziel długie zadania JavaScript — każde zadanie trwające powyżej 50 ms blokuje główny wątek i opóźnia reakcję na interakcje. Użyj
requestIdleCallback,setTimeout(fn, 0)lubscheduler.yield()(nowe API), aby podzielić ciężkie obliczenia na mniejsze fragmenty, pozwalając przeglądarce reagować na interakcje między nimi. - Minimalizuj obsługę zdarzeń — zbyt wielu event listenerów na elementach DOM spowalnia przetwarzanie interakcji. Stosuj delegację zdarzeń (event delegation) — przypisz jeden listener do kontenera rodzica zamiast osobnych listenerów do każdego elementu.
- Unikaj dużych operacji DOM w event handlerach — jeśli kliknięcie przycisku powoduje przerysowanie setek elementów, rozważ wirtualizację listy lub podzielenie operacji. Informacja zwrotna dla użytkownika (np. spinner, zmiana koloru przycisku) powinna pojawić się natychmiast, a ciężkie obliczenia mogą nastąpić w tle.
- Zoptymalizuj skrypty zewnętrzne — narzędzia analityczne, widgety czatów, skrypty reklamowe — wszystko to obciąża główny wątek. Ładuj je asynchronicznie i z opóźnieniem. Tag Manager, jeśli jest źle skonfigurowany, może dodawać setki milisekund do każdej interakcji. Wpływa to również na model PPS (Pay Per Sale), gdyż wolna strona obniża współczynnik konwersji programów partnerskich.
Narzędzia do monitorowania Web Vitals
Jednorazowy pomiar to za mało. Core Web Vitals zmieniają się w czasie — nowe treści, aktualizacje wtyczek, zmiany w kodzie, zwiększony ruch — wszystko to wpływa na metryki. Potrzebujesz systematycznego monitoringu, który pozwoli wykrywać regresje zanim wpłyną na ranking i doświadczenie użytkowników.
Narzędzia od Google (darmowe)
- Google Search Console — raport Core Web Vitals (opisany wyżej). Najlepsze narzędzie do przeglądu stanu całej witryny. Monitoruj go co tydzień — zmiany w CrUX pojawiają się z opóźnieniem 28 dni, więc wczesne wykrycie problemu daje czas na reakcję.
- PageSpeed Insights — do analizy pojedynczych stron. Udostępnia zarówno dane polowe (CrUX), jak i laboratoryjne (Lighthouse). API PageSpeed Insights pozwala na automatyzację zapytań.
- Chrome DevTools (Performance panel) — zaawansowana diagnostyka. Idealny do debugowania konkretnych problemów — np. „co dokładnie powoduje 3-sekundowy LCP na tej stronie?".
- Lighthouse CI — integracja Lighthouse z CI/CD pipeline. Automatycznie testuje wydajność przy każdym deployu i blokuje merge, jeśli metryki spadną poniżej progów. Doskonałe rozwiązanie dla zespołów deweloperskich.
Narzędzia zewnętrzne (płatne i darmowe)
- WebPageTest — najbardziej rozbudowane narzędzie do testów laboratoryjnych. Pozwala wybrać lokalizację serwera testowego, typ połączenia, przeglądarkę. Waterfall chart jest nieoceniony w diagnostyce problemów z LCP. Darmowy, z opcją płatnych planów.
- GTmetrix — popularny, łączy dane z Lighthouse i WebPageTest. Wykresy historyczne pozwalają śledzić zmiany wydajności w czasie. Plan darmowy umożliwia monitorowanie jednej strony.
- SpeedCurve — płatne narzędzie do ciągłego monitorowania Real User Monitoring (RUM) i testów syntetycznych. Idealne dla dużych witryn wymagających zaawansowanego dashboardu z alertami.
- Treo — wizualizuje dane CrUX w przejrzystej formie, pozwala porównywać się z konkurencją. Darmowy plan wystarczy do podstawowego monitoringu.
- DebugBear — łączy monitoring Lighthouse, CrUX i RUM. Posiada system alertów informujących o spadkach wydajności. Płatne, ale z 14-dniowym trialem.
Monitoring na poziomie kodu (RUM)
Najdokładniejszym sposobem monitorowania Core Web Vitals jest zbieranie danych bezpośrednio od użytkowników za pomocą biblioteki web-vitals (JavaScript, open source od Google). Możesz wysyłać dane do Google Analytics 4, do własnego endpointu lub do dedykowanych narzędzi RUM.
Przykładowa implementacja:
<script type="module">
import {onLCP, onCLS, onINP} from 'https://unpkg.com/web-vitals@4?module';
onLCP(metric => sendToAnalytics('LCP', metric));
onCLS(metric => sendToAnalytics('CLS', metric));
onINP(metric => sendToAnalytics('INP', metric));
</script>
Dane z RUM dają Ci pełny obraz — możesz segmentować wyniki według urządzenia, przeglądarki, lokalizacji, typu strony. Widzisz, że LCP jest dobry na desktopie, ale słaby na iOS Safari? Że CLS pogarsza się tylko na stronach produktowych? Że INP spada w piątki, gdy ruch jest najwyższy? Te wglądy są bezcenne i niedostępne w narzędziach laboratoryjnych.
Monitorowanie Web Vitals jest ściśle powiązane z analizą tzw. link juice — strony z lepszą wydajnością skuteczniej dystrybuują wartość linków wewnętrznych, ponieważ Google chętniej crawluje i indeksuje szybkie strony. Jeśli część Twoich podstron nie jest indeksowana z powodu wolnego ładowania, tracisz potencjał linkowania wewnętrznego.
Checklista monitoringu — co sprawdzać i kiedy
| Częstotliwość | Działanie | Narzędzie |
|---|---|---|
| Codziennie | Przegląd alertów o spadkach wydajności | DebugBear, SpeedCurve lub własny RUM |
| Co tydzień | Raport Core Web Vitals w Search Console | Google Search Console |
| Po każdym deployu | Automatyczny test wydajności | Lighthouse CI |
| Co miesiąc | Porównanie z konkurencją | Treo, CrUX Dashboard |
| Co kwartał | Głęboki audyt wydajnościowy | WebPageTest, PageSpeed Insights, DevTools |
Często w ramach kompleksowej strategii marketingowej łączy się optymalizację techniczną z działaniami public relations i pozyskiwaniem linków — wydajna strona nie tylko lepiej konwertuje, ale też buduje wiarygodność marki. Analogicznie, uruchamiając kampanie Google Ads, warto pamiętać, że Quality Score w Google Ads uwzględnia doświadczenie użytkownika na stronie docelowej — a Core Web Vitals są tego doświadczenia miernikiem.
Kiedy nie warto optymalizować samodzielnie?
Poprawa Core Web Vitals wymaga wiedzy z zakresu front-endu, backendu i infrastruktury serwera. Jeśli nie masz w zespole doświadczonego developera, samodzielna optymalizacja może przynieść więcej szkody niż pożytku — np. źle wdrożony lazy loading obrazów może pogorszyć LCP, a agresywna minifikacja JS może popsuć funkcjonalność strony.
W takich sytuacjach warto rozważyć pomoc specjalistów. Narzędzie Google Disavow Tool, które służy do odrzucania toksycznych linków, to przykład narzędzia, które niewłaściwie użyte może zaszkodzić — analogicznie z optymalizacją wydajności. Jeśli potrzebujesz profesjonalnego wsparcia przy optymalizacji technicznej, skontaktuj się z nami — pomożemy poprawić Core Web Vitals Twojej witryny.
Najczęściej zadawane pytania
Czym są Core Web Vitals?
Core Web Vitals to zestaw trzech metryk Google mierzących jakość doświadczenia użytkownika na stronie internetowej: LCP (szybkość ładowania głównej treści), CLS (stabilność wizualna layoutu) i INP (responsywność na interakcje). Są one oficjalnym sygnałem rankingowym Google od 2021 roku i bazują na danych z prawdziwych wizyt użytkowników Chrome.
Co to jest CLS i LCP?
LCP (Largest Contentful Paint) to czas potrzebny na wyrenderowanie największego widocznego elementu strony — najczęściej głównego obrazu lub bloku tekstu. Dobry wynik to poniżej 2,5 sekundy. CLS (Cumulative Layout Shift) mierzy sumę nieoczekiwanych przesunięć elementów na stronie podczas ładowania — dobry wynik to poniżej 0,1. Oba wskaźniki bezpośrednio wpływają na komfort użytkownika i pozycje w Google.
Jak sprawdzić Core Web Vitals?
Najłatwiejszy sposób to wpisanie adresu strony w narzędziu PageSpeed Insights (pagespeed.web.dev) — otrzymasz wyniki zarówno z danych rzeczywistych użytkowników, jak i testu laboratoryjnego. Kompleksowy przegląd całej witryny znajdziesz w raporcie „Podstawowe wskaźniki internetowe" w Google Search Console. Dodatkowo rozszerzenie Web Vitals do Chrome pokazuje metryki w czasie rzeczywistym podczas przeglądania strony.
Czy Core Web Vitals wpływają na pozycje w Google?
Tak — Google oficjalnie potwierdził, że Core Web Vitals są częścią algorytmu rankingowego od aktualizacji Page Experience w 2021 roku. Nie jest to dominujący czynnik (jakość treści wciąż jest najważniejsza), ale przy porównywalnej jakości treści dwóch stron, ta z lepszymi wynikami Core Web Vitals może zyskać przewagę w rankingu.
Jakie wartości Core Web Vitals są dobre?
Google definiuje trzy progi dla każdego wskaźnika. Dla LCP: dobry wynik to ≤ 2,5 sekundy, wymaga poprawy to 2,5–4,0 s, a słaby to powyżej 4,0 s. Dla CLS: dobry ≤ 0,1, wymaga poprawy 0,1–0,25, słaby > 0,25. Dla INP: dobry ≤ 200 ms, wymaga poprawy 200–500 ms, słaby > 500 ms. Progi odnoszą się do 75. percentyla danych z ostatnich 28 dni — oznacza to, że 75% wizyt musi mieścić się w progu „dobry".
O autorze
Norbert Majewski
Specjalista SEO, założyciel Noril.pl
Od ponad 20 lat zajmuje się pozycjonowaniem stron internetowych i marketingiem w wyszukiwarkach. Pomaga firmom zwiększać widoczność w Google i budować skuteczną obecność online. Założyciel agencji SEO Noril.pl z siedzibą w Gdyni.
Powiązane artykuły
Jak zrobić audyt strony internetowej samodzielnie?
Ponad 90% stron w polskim internecie ma błędy obniżające widoczność w Google. Dowiedz się, jak zrobić audyt strony samodzielnie i naprawić problemy techniczne, treściowe oraz użytkowe.
Co powinien zawierać audyt SEO? Kompletna lista
Ponad 90% stron nie otrzymuje ruchu z Google. Poznaj kompletną listę elementów, które powinien zawierać profesjonalny audyt SEO — od analizy technicznej po strategię treści i link building.
Audyt SEO – co to jest i na czym polega?
Audyt SEO to kompleksowy przegląd techniczny, treściowy i strategiczny strony internetowej. Dowiedz się, na czym polega i jak pomaga usunąć bariery uniemożliwiające wysokie pozycje w Google.