Co to jest lazy loading i jaki ma wpływ na SEO?

Lazy loading to technika optymalizacji wydajności stron, polegająca na odroczeniu ładowania zasobów (obrazów, iframe, wideo) do momentu, gdy użytkownik przewinie stronę do miejsca, gdzie te zasoby stają się widoczne. Efekt: szybszy initial load, mniej requestów HTTP, lepsze Core Web Vitals. Dane z Ahrefs: fraza „lazy loading” generuje w Polsce 300 wyszukiwań miesięcznie (KD 53, traffic potential 150). Według theStacc (marzec 2026), 29% stron internetowych używa natywnego lazy loading – z czego 84% adopcji pochodzi z WordPressa 5.5+, który dodał atrybut loading=”lazy” do wszystkich obrazów domyślnie.

Ale lazy loading to miecz obosieczny. Źle zaimplementowany potrafi obniżyć ruch o 20% – nawet przy wzroście PageSpeed Score. Jak opisuje case study z PPC.land (listopad 2025): agencja Apollo Digital wdrożyła lazy loading na wszystkie obrazy (w tym hero image), PageSpeed wzrósł z 65 do 92, ale ruch spadł o 20%, a LCP pogorszył się z 1,8s do 4,2s. Przyczyna: lazy loading na obrazie hero opóźnił ładowanie najważniejszego elementu above the fold.

Semgence – agencja SEO z Warszawy – weryfikuje implementację lazy loading jako element audytu technicznego SEO. Kluczowa zasada: nigdy nie stosuj lazy loading na elementach above the fold (hero image, LCP element). Lazy loading to narzędzie do below the fold.

Infografika: lazy loading=
Lazy loading – implementacja, wpływ na Core Web Vitals i krytyczne błędy. Źródła: web.dev, Search Engine Land / Semrush, PPC.land case study. Opracowanie: Semgence.

Co to jest lazy loading i jak działa?

Lazy loading odracza ładowanie zasobów – obrazów, iframe, wideo – do momentu, gdy użytkownik zbliży się do nich scrollując stronę. Jak opisuje web.dev w dokumentacji: „obrazy z atrybutem loading=lazy są pobierane dopiero gdy użytkownik zbliży się do nich w viewport.” Bez lazy loading strona z 50 obrazami (typowa kategoria e-commerce) ładuje je wszystkie naraz – 5-10 sekund. Z lazy loading ładowane są 3-5 widocznych, reszta on-demand.

Dwie metody implementacji. Native HTML (zalecane): atrybut loading="lazy" na <img> i <iframe>. Wspierany przez Chrome, Firefox, Edge, Safari – ponad 95% przeglądarek. JS libraries (lazysizes, lozad.js): używają data-src zamiast src – ryzyko SEO, bo Googlebot może nie zobaczyć obrazu jeśli JS się nie wykona. Jak ostrzega theStacc: „jeśli library nie zadziała podczas renderowania Googlebota, obraz nigdy nie dostanie atrybutu src i Google nigdy go nie zaindeksuje.”

Jak lazy loading wpływa na Core Web Vitals?

Lazy loading wpływa bezpośrednio na 2 z 3 metryk Core Web Vitals. LCP (Largest Contentful Paint): poprawia się, bo mniej zasobów ładowanych przy starcie = szybszy paint. Ale UWAGA: lazy loading na hero image (element LCP) pogarsza LCP drastycznie. Jak opisuje web.dev w artykule o LCP i lazy loading: „technika lazy loading stosowana przez WordPress wyraźnie pomaga zredukować bajty obrazów kosztem opóźnionego LCP.” Rozwiązanie: fetchpriority="high" na hero image, lazy loading tylko na obrazach below the fold.

CLS (Cumulative Layout Shift): lazy loading bez width i height na <img> powoduje layout shift – obraz ładuje się z opóźnieniem, strona „skacze.” Rozwiązanie: zawsze podawaj wymiary. INP (Interaction to Next Paint): lazy loading nie ma bezpośredniego wpływu, bo INP mierzy responsywność interakcji, nie ładowanie. INP zastąpił FID w marcu 2024 (Google Search Central).

Jak podsumowuje Search Engine Land (Semrush) w przewodniku po lazy loading: „lazy loading odracza treści takie jak obrazy, wideo i komponenty JavaScript do momentu, gdy są potrzebne – może pomóc poprawić wykorzystanie bandwidth i skrócić czas ładowania.”

Jak poprawnie wdrożyć lazy loading?

Wdrożenie krok po kroku. Krok 1: Zidentyfikuj hero image / LCP element – ten NIE dostaje lazy loading. Użyj fetchpriority="high". Krok 2: Dodaj loading="lazy" do wszystkich obrazów below the fold. Krok 3: Podaj width i height na każdym <img> – zapobiegasz CLS. Krok 4: Testuj w PageSpeed Insights i GSC URL Inspection (sprawdź czy Googlebot widzi obrazy). Screaming Frog z JavaScript rendering pozwala sprawdzić, czy Googlebot renderuje lazy-loaded content.

WordPress 5.5+ automatycznie dodaje loading="lazy" do wszystkich obrazów – ale to obejmuje hero image! WordPress 5.9 naprawił to częściowo, wyłączając lazy loading na pierwszym obrazie. Sprawdź w swoim motywie – w Kadence, Divi i Elementor mechanizm może działać inaczej. Jak zaleca Semrush na blogu: „audytuj kilka najważniejszych stron za pomocą URL Inspection Tool w GSC – sprawdź czy lazy-loaded content, obrazy i linki wewnętrzne są widoczne w renderowanym HTML.”

Najczęstsze błędy lazy loading – case study

Błąd 1: Lazy loading na hero image. Efekt: LCP wzrasta, ruch spada. Case study z PPC.land: PageSpeed ↑ 65→92, ruch ↓ 20%, LCP ↑ 1.8s→4.2s. Fix: hero image z loading="eager" (domyślne) + fetchpriority="high".

Błąd 2: Brak width/height. Efekt: CLS rośnie, Google Page Experience sygnał negatywny. Fix: dodaj wymiary do każdego <img>. Jak pisze web.dev: „lazy loading zapewnia ładowanie na żądanie, ale wymiary muszą być z góry określone.”

Błąd 3: data-src bez src fallback. Efekt: Googlebot nie indeksuje obrazów. JS libraries zastępują src na data-src – jeśli JS się nie wykona (Googlebot timeout), obraz jest niewidoczny. Fix: używaj native loading="lazy", nie JS libraries. Martin Splitt z Google potwierdził w sierpniu 2025 (Google Developers – JS SEO): crawlery indeksują obrazy z prawdziwym atrybutem src i natywnym loading=”lazy” bez problemu.

Lazy loading a widoczność w AI Search

Boty AI (GPTBot, ClaudeBot, PerplexityBot) nie renderują JavaScript – w ogóle. Jak podaje Search Engine Land: „strony wymagające renderowania JavaScript zajmują botom AI 9x dłużej niż statyczny HTML.” Jeśli Twoja treść ładuje się przez JS lazy loading – boty AI jej nie zobaczą. Dlatego treść krytyczna musi być w statycznym HTML, a lazy loading stosowany wyłącznie na mediach (obrazy, wideo). Więcej: audyt widoczności w AI, techniczne SEO.

Case study: lazy loading na stronach z top 10 Google dla „pozycjonowanie” (maj 2026)

Przeskanowaliśmy implementację lazy loading na stronach usługowych 7 polskich agencji SEO rankujących w top 10 Google na frazę „pozycjonowanie stron”. Wyniki poniżej — z realnymi danymi z kodu źródłowego (maj 2026). Audyt przeprowadzony narzędziami Semgence z analizą atrybutów loading, data-src, fetchpriority, width/height na wszystkich <img> w HTML.

Tabela: implementacja lazy loading w top 10 dla „pozycjonowanie”

DomenaObrazówlazydata-src (JS)fetchprioritylazy z w+hHero lazy?Ocena
widoczni.com2231170083/117✅ NIE🟡
eactive.pl4514001/1✅ NIE🔴
ks.pl46300230/30✅ NIE🟢
delante.pl1861011/1✅ NIE🔴
empressia.pl265015/5⚠️ TAK!🟡
zgred.pl23005✅ NIE🟡
semgence.pl0*

* semgence.pl/pozycjonowanie-stron/ — strona usługowa oparta na Kadence, obrazy ładowane przez CSS background lub JS, brak tagów <img> w statycznym HTML. Audyt: 22 maja 2026, źródło: analiza kodu źródłowego HTML (nie renderowanego DOM).

Co wynika z analizy?

Eactive.pl — 40 obrazów z data-src (JS lazy loading) 🔴. To najpoważniejszy problem w całym zestawieniu. 40 z 45 obrazów używa data-src zamiast src — co oznacza, że Googlebot może nie zobaczyć tych obrazów, jeśli JavaScript się nie wykona w czasie crawlu. Brak fetchpriority na jakimkolwiek obrazie. Rekomendacja: migracja z JS lazy loading na native loading="lazy".

Delante.pl — 186 obrazów, tylko 1 z lazy loading 🔴. Strona ładuje 186 obrazów bez lazy loading (185 bez atrybutu loading). To oznacza, że przeglądarka pobiera wszystkie 186 obrazów naraz — obciążenie bandwidth, wolniejszy initial load. Stąd lab LCP = 10.5s (najgorszy w naszym case study Lighthouse). Pozytyw: fetchpriority na 1 obrazie i hero image nie jest lazy.

Widoczni.com — 223 obrazy, 117 lazy, ale 34 bez width+height 🟡. Dobra implementacja native lazy loading (117 obrazów), ale 34 z tych lazy obrazów nie ma width + height — ryzyko CLS (layout shift). Stąd lab CLS = 0.335 (najgorszy w zestawieniu Lighthouse). Hero image nie jest lazy — poprawnie. Brak fetchpriority — warto dodać na LCP element.

KS.pl — wzorcowa implementacja 🟢. 30 obrazów z loading="lazy", wszystkie 30 z width + height (100%), 2 obrazy z fetchpriority, hero image nie jest lazy. To jedyna strona z zestawienia, która spełnia wszystkie best practices: native lazy loading + wymiary + fetchpriority + brak lazy na hero.

Empressia.pl — hero image z lazy loading ⚠️. Jedyna strona w zestawieniu, gdzie pierwszy obraz (hero) ma loading="lazy". To klasyczny błąd opisany wyżej — LCP element ładowany z opóźnieniem. Pozytyw: fetchpriority na 1 obrazie i wszystkie lazy obrazy mają wymiary. Rekomendacja: usunąć loading="lazy" z hero image, dodać loading="eager" + fetchpriority="high".

Zgred.pl — brak lazy loading, ale najlepsze fetchpriority 🟡. Żaden obraz nie ma loading="lazy", ale za to 5 obrazów ma fetchpriority — najwyższy wynik w zestawieniu. Przy 23 obrazach brak lazy loading nie jest krytyczny, ale przy rozbudowie serwisu warto wdrożyć native lazy na obrazach below the fold.

Wniosek: tylko 1 z 7 zbadanych serwisów (ks.pl) ma wzorcową implementację lazy loading. Najczęstsze błędy: brak lazy loading w ogóle (delante.pl), JS lazy loading z data-src (eactive.pl), lazy bez wymiarów (widoczni.com), lazy na hero image (empressia.pl). Narzędzia do audytu: Screaming Frog (Custom Extraction → loading atrybut na <img>), PageSpeed Insights, Semrush Site Audit.

Najczęściej zadawane pytania o lazy loading

Czy lazy loading szkodzi SEO?

Nie, jeśli jest wdrożony poprawnie. Native loading="lazy" na obrazach below the fold poprawia Core Web Vitals i nie wpływa negatywnie na indeksację. Problemy zaczynają się przy lazy loading na hero image (pogorsza LCP) i przy JS libraries z data-src (Googlebot może nie zobaczyć obrazów). Źródło: web.dev.

Czy powinienem stosować lazy loading na wszystkich obrazach?

Nie. Hero image i pierwszy widoczny obraz powinny ładować się natychmiast (loading="eager" + fetchpriority="high"). Lazy loading stosuj tylko na obrazach below the fold. Jak zaleca Search Engine Land: „natywne lazy loading + fetchpriority to najlepsza kombinacja.”

Jak sprawdzić czy lazy loading działa poprawnie?

Trzy narzędzia: PageSpeed Insights (audyt LCP, CLS), GSC URL Inspection (sprawdź renderowany HTML), Screaming Frog z JavaScript rendering (symulacja crawlu Googlebota). Semrush Site Audit flaguje „Pages Have Slow Load Speed” i problemy z Core Web Vitals.

WordPress automatycznie dodaje lazy loading – czy to problem?

WordPress 5.5+ dodaje loading="lazy" do wszystkich obrazów. WordPress 5.9 wyłączył lazy loading na pierwszym obrazie. Sprawdź source code swoich stron – jeśli hero image ma loading="lazy", zmień na loading="eager". Narzędzia: Screaming Frog (Custom Extraction → szukaj loading=”lazy” na pierwszym img).

Podobne wpisy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *