Lazy loading może poprawić szybkość strony, zmniejszyć wagę początkowego ładowania i pomóc w Core Web Vitals, ale tylko wtedy, gdy jest wdrożony rozsądnie. Najważniejsza zasada SEO: nie ukrywaj przed Google treści, obrazów, produktów, linków, FAQ ani elementów nawigacji, które mają być indeksowane. Obrazy i sekcje znajdujące się niżej na stronie można ładować leniwie, ale treść widoczna od razu, obraz LCP, główny nagłówek, ważne linki i kluczowa zawartość strony powinny być dostępne bez opóźnienia, bez kliknięcia i bez błędów JavaScript.
Lazy loading brzmi jak oczywista wygrana.
Strona ładuje mniej zasobów na start.
Obrazy poniżej ekranu nie obciążają pierwszego widoku.
Iframe'y, mapy, wideo i galerie mogą załadować się dopiero wtedy, gdy użytkownik się do nich zbliży.
Użytkownik szybciej widzi stronę.
Serwer i przeglądarka wykonują mniej pracy na początku.
Wyniki PageSpeed mogą się poprawić.
Core Web Vitals mogą wyglądać lepiej.
Ale lazy loading ma też drugą stronę.
Jeśli zostanie wdrożony źle, może sprawić, że Google nie zobaczy części treści.
Może nie zobaczyć obrazów.
Może nie zobaczyć produktów.
Może nie zobaczyć opinii.
Może nie zobaczyć FAQ.
Może nie zobaczyć linków do kolejnych produktów albo artykułów.
Może nie zobaczyć elementów, które pojawiają się dopiero po scrollu, kliknięciu, interakcji albo błędnym JavaScripcie.
Lazy loading jest dobry dla SEO wtedy, gdy przyspiesza stronę, ale nie ukrywa przed Google niczego ważnego.
Najczęstszy błąd?
Developer ładuje leniwie wszystko.
Obraz hero.
Główny baner.
Produkty na kategorii.
Opis usługi.
FAQ.
Opinie.
Linki wewnętrzne.
Paginację.
Sekcje "polecane artykuły".
A potem firma dziwi się, że strona wygląda dobrze dla użytkownika, ale nie rankuje.
W SEO nie chodzi o to, żeby ładować wszystko od razu.
Chodzi o to, żeby ładować właściwe rzeczy we właściwym momencie.
Ten poradnik pokazuje, jak wdrażać lazy loading obrazów i treści bez ukrywania ważnych elementów przed Google, kiedy stosować `loading="lazy"`, kiedy używać Intersection Observer, czego nie ładować leniwie, jak testować stronę w Google Search Console i jak połączyć lazy loading z Core Web Vitals, JavaScript SEO oraz e-commerce.
Lazy loading a SEO - najkrótsza odpowiedź
Najkrótsza odpowiedź:
Lazy loading jest bezpieczny dla SEO, jeśli treść, obrazy i linki ważne dla indeksacji są dostępne dla Google bez kliknięcia, bez niestabilnego JavaScriptu i bez ukrywania za interakcją użytkownika. Obrazy poniżej pierwszego ekranu można ładować leniwie, ale obrazu LCP, głównej treści, H1, linków, produktów i kluczowych sekcji nie należy opóźniać w sposób, który utrudnia renderowanie.
Dobre lazy loading SEO:
- ładuje leniwie obrazy poniżej pierwszego ekranu,
- nie ładuje leniwie obrazu LCP,
- nie ukrywa głównej treści strony,
- nie wymaga kliknięcia do pokazania treści SEO,
- ma poprawne atrybuty
src,srcset,width,heightialt, - działa bez błędów JavaScript,
- zapewnia crawlable linki,
- nie ukrywa produktów i paginacji,
- jest testowane w Google Search Console,
- poprawia wydajność bez psucia indeksacji.
Złe lazy loading SEO:
- opóźnia obraz hero i LCP,
- ładuje główną treść dopiero po scrollu,
- ładuje produkty dopiero po kliknięciu bez crawlable URL-i,
- używa placeholderów w
src, a właściwy obraz tylko wdata-src, - ukrywa linki wewnętrzne,
- ładuje FAQ dopiero po interakcji,
- wymaga JavaScriptu, który może się nie wykonać,
- nie ma fallbacku,
- nie jest sprawdzone w wyrenderowanym HTML-u Google.
Najprostsza zasada:
Lazy-loaduj elementy pomocnicze i zasoby poniżej pierwszego ekranu. Nie lazy-loaduj tego, co decyduje o temacie strony, indeksacji, linkowaniu i pierwszym wrażeniu użytkownika.
Czym jest lazy loading?
Lazy loading, czyli leniwe ładowanie, to technika polegająca na opóźnieniu ładowania zasobów do momentu, gdy są potrzebne.
Zamiast ładować wszystkie obrazy, iframe'y, wideo, moduły i sekcje na start, strona ładuje część z nich dopiero wtedy, gdy użytkownik zbliża się do danego miejsca.
Lazy loading może dotyczyć:
- obrazów,
- iframe'ów,
- wideo,
- map,
- galerii,
- sekcji opinii,
- FAQ,
- produktów,
- rekomendacji,
- komentarzy,
- modułów JavaScript,
- elementów poniżej pierwszego ekranu.
Przykład prostego lazy loadingu obrazu:
<img src="/images/zdjecie.webp" alt="Opis zdjęcia" loading="lazy" width="800" height="600">
Przeglądarka może wtedy opóźnić pobranie obrazu, dopóki nie będzie potrzebny.
To bardzo przydatne przy:
- długich artykułach blogowych,
- galeriach,
- listach produktów,
- stronach z wieloma zdjęciami,
- mapach osadzonych,
- wideo z YouTube,
- sekcjach niżej na stronie.
Ale lazy loading musi być wdrożony tak, żeby Google mogło zobaczyć treść, którą ma ocenić i zaindeksować.
Czy lazy loading jest dobry dla SEO?
Tak, lazy loading może być dobry dla SEO.
Ale nie dlatego, że sam w sobie jest czynnikiem rankingowym.
Jest dobry, gdy poprawia:
- szybkość ładowania,
- wydajność strony,
- zużycie transferu,
- czas do pierwszego renderowania,
- komfort użytkownika,
- Core Web Vitals,
- ładowanie długich stron,
- działanie na mobile.
Lazy loading jest szczególnie dobry dla obrazów i iframe'ów poniżej pierwszego widoku.
Przykład:
Artykuł ma 18 zdjęć, ale użytkownik na początku widzi tylko pierwsze zdjęcie i lead. Nie ma sensu pobierać wszystkich 18 zdjęć od razu. Obrazy niżej mogą ładować się dopiero wtedy, gdy użytkownik zbliży się do nich.
Ale SEO wymaga ostrożności.
Lazy loading może być problemem, gdy:
- ukrywa główną treść,
- ukrywa obrazy, które mają być indeksowane,
- ukrywa produkty,
- ukrywa linki do kolejnych URL-i,
- wymaga kliknięcia, którego Googlebot nie wykona,
- zależy od błędnego JavaScriptu,
- ładuje zasoby dopiero po zbyt późnym scrollu,
- opóźnia największy element LCP.
Lazy loading jest więc narzędziem.
Może pomóc.
Może zaszkodzić.
Decyduje wdrożenie.
Kiedy lazy loading szkodzi SEO?
Lazy loading szkodzi SEO wtedy, gdy elementy ważne dla indeksacji i rankingu nie są dostępne dla Google.
Najczęstsze sytuacje:
- opis kategorii ładuje się dopiero po scrollu,
- produkty na kategorii ładowane są dopiero po JavaScripcie bez fallbacku,
- FAQ pojawia się dopiero po kliknięciu,
- obrazy nie mają prawdziwego
src, - linki do produktów pojawiają się dopiero po interakcji,
- paginacja działa tylko jako przycisk "Załaduj więcej",
- treść jest wczytywana przez API blokujące Googlebota,
- lazy loading wymaga scrolla, którego crawler nie wykonuje jak człowiek,
- błąd JS zatrzymuje ładowanie treści,
- obraz LCP ma
loading="lazy".
Przykład złego wdrożenia:
<section data-lazy-content="/api/category-description"></section>
Jeśli opis kategorii jest ważny dla SEO, a pojawia się dopiero po JS i API, trzeba sprawdzić, czy Google widzi go po renderowaniu.
Przykład złego obrazu:
<img src="/placeholder.svg" data-src="/produkt.webp" alt="Buty trekkingowe">
Jeśli JavaScript nie zamieni placeholdera na właściwy obraz, Google może zobaczyć tylko placeholder.
Przykład złego "load more":
<button onclick="loadMoreProducts()">Załaduj więcej</button>
Jeśli nie ma crawlable linków do kolejnych stron produktów, Google może mieć problem z odkryciem dalszej części listy.
Lazy loading obrazów - jak robić to poprawnie?
Najbezpieczniejszym i najprostszym sposobem lazy loadingu obrazów jest natywny atrybut:
<img src="/images/zdjecie.webp" alt="Opis zdjęcia" loading="lazy" width="800" height="600">
Dobre wdrożenie obrazu powinno mieć:
- prawdziwy
src, - poprawny
alt, - ustawione
widthiheight, - odpowiedni format obrazu,
- kompresję,
- responsywne warianty przez
srcset, - lazy loading tylko wtedy, gdy obraz nie jest krytyczny dla pierwszego widoku.
Dobry przykład:
<img
src="/images/sprzatanie-biura-lublin.webp"
srcset="/images/sprzatanie-biura-lublin-480.webp 480w,
/images/sprzatanie-biura-lublin-960.webp 960w"
sizes="(max-width: 600px) 480px, 960px"
alt="sprzątanie biura w Lublinie przez profesjonalną firmę sprzątającą"
width="960"
height="640"
loading="lazy">
Dla obrazów poniżej ekranu to dobre rozwiązanie.
Dla obrazów w pierwszym widoku trzeba uważać.
Obrazy above the fold zwykle powinny ładować się normalnie.
Obraz hero, główne zdjęcie produktu lub największy element widoczny na start nie powinien być opóźniany.
Dlaczego nie wolno lazy-loadować obrazu LCP?
LCP, czyli Largest Contentful Paint, mierzy czas załadowania największego elementu widocznego w pierwszym widoku.
Często jest nim:
- obraz hero,
- duże zdjęcie produktu,
- baner,
- główna grafika artykułu,
- duży blok tekstu.
Jeśli obraz LCP ma:
loading="lazy"
przeglądarka może opóźnić jego pobranie.
To pogarsza LCP.
Czyli lazy loading, który miał przyspieszyć stronę, może spowolnić najważniejszy element pierwszego widoku.
Zły przykład:
<img src="/hero.webp" alt="Agencja SEO dla firm" loading="lazy">
Lepszy przykład:
<img src="/hero.webp" alt="Agencja SEO dla firm" fetchpriority="high" width="1200" height="700">
Albo z preloadem, jeśli ma to sens:
<link rel="preload" as="image" href="/hero.webp">
Zasada:
Lazy loading stosuj dla obrazów poza pierwszym widokiem. Obraz LCP powinien dostać priorytet, nie opóźnienie.
Lazy loading treści tekstowej - największe ryzyko
Lazy loading obrazów jest normalną praktyką.
Lazy loading treści tekstowej wymaga dużo większej ostrożności.
Treść tekstowa to często główny powód, dla którego strona ma rankować.
Dotyczy to:
- opisów usług,
- opisów kategorii,
- artykułów blogowych,
- FAQ,
- sekcji eksperckich,
- poradników,
- treści lokalnych,
- opisów produktów,
- case studies,
- recenzji.
Jeśli ta treść ładuje się dopiero po scrollu, kliknięciu albo wywołaniu API, musisz sprawdzić, czy Google ją widzi.
Zły model:
<main>
<h1>Sprzątanie biur Lublin</h1>
<div id="content-placeholder"></div>
</main>
<script>
loadContentAfterScroll();
</script>
Lepszy model:
<main>
<h1>Sprzątanie biur Lublin</h1>
<p>Profesjonalne sprzątanie biur w Lublinie dla firm, administracji i obiektów usługowych...</p>
<section>...kluczowa treść SEO...</section>
</main>
A elementy mniej krytyczne można ładować później.
Treść SEO powinna być dostępna bez konieczności interakcji.
Lazy loading produktów w e-commerce
W sklepach internetowych lazy loading produktów może być bardzo ryzykowny.
Kategoria produktowa musi pokazać Google:
- produkty,
- linki do produktów,
- nazwy produktów,
- ceny,
- dostępność,
- obrazy produktów,
- paginację,
- linki do podkategorii,
- opis kategorii.
Jeśli produkty ładują się dopiero po JavaScripcie, trzeba sprawdzić, czy są widoczne po renderowaniu.
Szczególnie groźne są:
- produkty ładowane dopiero po scrollu,
- produkty ładowane dopiero po kliknięciu "Załaduj więcej",
- brak URL-i do kolejnych stron paginacji,
- karty produktów jako divy bez linków
href, - obrazy produktów tylko w
data-src, - API blokujące Googlebota,
- puste HTML kategorii przed JS.
Zły przykład karty produktu:
<div class="product-card" onclick="goToProduct(123)">
<img data-src="/product.webp">
<span>Krzesło drewniane</span>
</div>
Lepszy przykład:
<a class="product-card" href="/produkt/krzeslo-drewniane/">
<img src="/product.webp" alt="Krzesło drewniane" loading="lazy" width="400" height="400">
<span>Krzesło drewniane</span>
</a>
Dla e-commerce najważniejsze:
Lazy loading może opóźniać obrazy produktów poniżej ekranu, ale nie powinien ukrywać linków do produktów i struktury kategorii.
Lazy loading opinii, FAQ i sekcji pomocniczych
Opinie, FAQ i sekcje pomocnicze często są ładowane leniwie.
To może mieć sens wydajnościowy.
Ale z perspektywy SEO trzeba rozróżnić:
- sekcje czysto pomocnicze,
- sekcje ważne dla treści strony,
- sekcje wpływające na zaufanie,
- sekcje oznaczone schema,
- sekcje odpowiadające na long tail.
Jeśli FAQ jest częścią strategii SEO, nie powinno być ukryte za ładowaniem, którego Google nie widzi.
Jeśli opinie wspierają produkt i dane strukturalne, trzeba sprawdzić, czy są widoczne w wyrenderowanym HTML-u.
Dobre podejście:
- najważniejsze FAQ renderuj w HTML-u,
- opinie krytyczne dla strony produktu renderuj stabilnie,
- mniej ważne elementy można ładować później,
- nie oznaczaj schema treści, której użytkownik i Google nie widzą,
- testuj Rich Results Test i Inspekcję URL.
Lazy loading sekcji pomocniczych jest OK.
Lazy loading sekcji, które mają budować temat strony, wymaga testów.
Lazy loading a JavaScript SEO
Lazy loading często działa przez JavaScript.
Dlatego trzeba go analizować razem z JavaScript SEO.
Problem pojawia się, gdy:
- JS nie uruchamia się poprawnie,
- Intersection Observer nie ładuje elementów w środowisku crawlera,
- treść wymaga scrolla,
- API zwraca błąd,
- zasoby są blokowane,
- elementy są dodawane do DOM zbyt późno,
- nie ma fallbacku,
- crawler nie widzi linków do kolejnych treści.
Sprawdź różnice między:
- źródłem HTML,
- DOM-em po renderowaniu,
- widokiem użytkownika,
- widokiem w Inspekcji URL GSC,
- crawlem bez JS,
- crawlem z JS.
Jeśli treść istnieje tylko w widoku użytkownika, ale nie ma jej w renderze Google, lazy loading jest problemem SEO.
Native lazy loading, czyli loading="lazy"
Natywny lazy loading to najprostsza metoda dla obrazów i iframe'ów.
Przykład obrazu:
<img src="/blog/zdjecie.webp" alt="Opis grafiki" loading="lazy" width="900" height="600">
Przykład iframe:
<iframe
src="https://www.youtube.com/embed/example"
title="Film instruktażowy"
loading="lazy"
width="560"
height="315">
</iframe>
Zalety:
- proste wdrożenie,
- brak dodatkowej biblioteki JS,
- wsparcie w przeglądarkach,
- mniej ryzyka niż własny skrypt,
- dobre dla obrazów niżej na stronie.
Ograniczenia:
- nie używaj dla obrazu LCP,
- nie stosuj automatycznie do każdego obrazu,
- nie rozwiązuje problemu lazy loadingu treści tekstowej,
- nie zastępuje optymalizacji obrazów,
- nie zastępuje dobrego
alt,srcseti rozmiarów.
Dobra zasada:
Native lazy loading stosuj dla obrazów i iframe'ów poza pierwszym widokiem. Dla elementów krytycznych używaj normalnego ładowania i priorytetu.
Intersection Observer i lazy loading przez JavaScript
Intersection Observer pozwala ładować elementy wtedy, gdy zbliżają się do viewportu.
To dobre rozwiązanie dla bardziej zaawansowanych przypadków.
Przykład:
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
To może działać dobrze.
Ale trzeba uważać na SEO.
Ryzyka:
- właściwy obraz nie istnieje w
src, - treść nie pojawia się bez scrolla,
- skrypt ładuje się zbyt późno,
- błąd JS blokuje ładowanie,
- nie ma fallbacku,
- API nie odpowiada Googlebotowi,
- elementy są zbyt daleko ładowane dopiero po faktycznym wejściu w viewport.
Dobre praktyki:
- ustaw odpowiedni root margin, żeby ładować elementy zanim użytkownik je zobaczy,
- nie używaj JS lazy loadingu dla elementów krytycznych,
- zapewnij prawdziwe linki HTML,
- testuj wyrenderowany DOM,
- dla ważnych obrazów rozważ natywny lazy loading lub normalne ładowanie,
- dla treści SEO preferuj SSR/SSG lub stabilny HTML.
Noscript fallback - kiedy warto go stosować?
Fallback w <noscript> może pomóc w niektórych wdrożeniach lazy loadingu, szczególnie gdy obrazy są ładowane przez JavaScript.
Przykład:
<img data-src="/image.webp" alt="Opis obrazu" class="lazy">
<noscript>
<img src="/image.webp" alt="Opis obrazu">
</noscript>
To może być użyteczne, ale nie powinno być wymówką dla złego wdrożenia.
Lepszym rozwiązaniem jest często:
<img src="/image.webp" alt="Opis obrazu" loading="lazy" width="800" height="600">
Fallback warto rozważyć, gdy:
- używasz starszej biblioteki lazy loadingu,
- obrazy są ważne dla SEO,
- strona musi działać przy wyłączonym JS,
- masz obrazy ładowane przez niestandardowy mechanizm,
- chcesz zwiększyć odporność wdrożenia.
Nie polegaj jednak wyłącznie na noscript.
Testuj, co Google widzi po renderowaniu.
Lazy loading a infinite scroll i przycisk "Załaduj więcej"
Infinite scroll i przycisk "Załaduj więcej" są blisko związane z lazy loadingiem.
Problem SEO pojawia się, gdy kolejne produkty lub artykuły nie mają własnych URL-i i linków.
Zły model:
<button onclick="loadMore()">Załaduj więcej</button>
Lepszy model:
<a href="/blog/page/2/">Następna strona</a>
Możesz mieć UX z infinite scroll, ale pod spodem powinny istnieć crawlable strony:
/blog/
/blog/page/2/
/blog/page/3/
Albo:
/kategoria/krzesla/
/kategoria/krzesla/page/2/
/kategoria/krzesla/page/3/
Dobra paginacja dla Google:
- ma osobne URL-e,
- ma linki HTML,
- działa bez interakcji użytkownika,
- ma self-canonicale,
- nie jest blokowana robots.txt,
- nie ukrywa produktów i wpisów za JS.
Infinite scroll bez crawlable paginacji może sprawić, że Google zobaczy tylko pierwszą porcję treści.
Lazy loading a crawl budget
Lazy loading może wpływać na crawl budget pośrednio.
Dobre wdrożenie może zmniejszyć obciążenie strony i poprawić wydajność.
Złe wdrożenie może powodować, że Googlebot trafia na:
- puste URL-e,
- JS-only paginację,
- błędy API,
- zasoby blokowane,
- duplikaty przy infinite scroll,
- treści niedostępne bez interakcji,
- produkty, których nie da się odkryć.
W dużych serwisach warto sprawdzić logi serwera.
Zobacz:
- czy Googlebot pobiera obrazy,
- czy crawluje kolejne strony paginacji,
- czy trafia na błędy przy API,
- czy odwiedza produkty z dalszych stron,
- czy crawl nie kończy się tylko na pierwszej porcji lazy-loaded listy.
Lazy loading nie powinien być ścianą dla crawlera.
Ma być optymalizacją zasobów.
Lazy loading a Core Web Vitals
Lazy loading może pomóc w Core Web Vitals, ale może też je pogorszyć.
Może pomóc, gdy:
- opóźnia obrazy poniżej ekranu,
- opóźnia iframe'y,
- zmniejsza wagę początkowego ładowania,
- ogranicza pracę przeglądarki na starcie,
- zmniejsza liczbę zasobów pobieranych od razu.
Może pogorszyć, gdy:
- lazy-loadujesz obraz LCP,
- nie ustawiasz wymiarów obrazów,
- powodujesz przesunięcia layoutu,
- ładujesz duże zasoby zbyt późno,
- używasz ciężkiej biblioteki JS do prostych obrazów,
- opóźniasz treść above the fold.
Z punktu widzenia Core Web Vitals:
- nie lazy-loaduj LCP,
- ustaw
widthiheight, - stosuj
fetchpriority="high"dla ważnego obrazu, jeśli to uzasadnione, - lazy-loaduj iframe'y i obrazy niżej,
- nie używaj ciężkiego JS tam, gdzie wystarczy natywny atrybut,
- testuj realne dane, nie tylko laboratoryjne.
Lazy loading to nie automatyczna poprawa szybkości.
To technika, którą trzeba zastosować selektywnie.
Lazy loading a obrazy produktowe i grafiki blogowe
Obrazy produktowe i blogowe mają znaczenie dla SEO, UX i konwersji.
Przy obrazach produktowych:
- pierwsze zdjęcie produktu zwykle nie powinno być lazy-loaded, jeśli jest w pierwszym widoku,
- kolejne zdjęcia galerii mogą być ładowane leniwie,
- obrazy na dalszych kartach kategorii mogą być lazy-loaded,
- każdy obraz powinien mieć poprawny
src,alt,widthiheight, - miniatury powinny prowadzić do crawlable kart produktów przez linki.
Przy grafikach blogowych:
- grafika główna nad treścią nie powinna szkodzić LCP,
- obrazy niżej w artykule mogą być lazy-loaded,
- każdy obraz powinien mieć opisowy alt,
- nie używaj placeholderów jako jedynego
src, - testuj, czy obrazy są widoczne w renderowanym HTML-u.
Przykład:
<img
src="/blog/lazy-loading-seo.webp"
alt="schemat lazy loading SEO dla obrazów i treści"
width="1200"
height="675"
loading="lazy">
To dobry zapis dla grafiki niżej w artykule.
Dla głównej grafiki hero lepiej pominąć loading="lazy".
Jak sprawdzić, czy Google widzi lazy-loaded content?
Nie zakładaj, że Google widzi wszystko.
Sprawdź to.
1. Google Search Console - Inspekcja URL
Użyj Inspekcji URL i sprawdź:
- czy strona jest indeksowana,
- czy renderowanie działa,
- czy zrzut ekranu pokazuje właściwą treść,
- czy są problemy z zasobami,
- czy Google widzi lazy-loaded sekcje,
- czy canonical jest poprawny.
2. Renderowany HTML
Porównaj:
- źródło strony,
- DOM po renderowaniu,
- widok w crawlerze z JS,
- widok w GSC.
3. Crawl z renderowaniem JavaScript
Użyj narzędzia, które renderuje JS i sprawdź:
- czy treść się pojawia,
- czy obrazy mają właściwe URL-e,
- czy linki są widoczne,
- czy produkty są w DOM,
- czy FAQ jest dostępne,
- czy dane strukturalne są obecne.
4. Test fragmentów treści
Możesz sprawdzić, czy unikalne fragmenty lazy-loaded treści pojawiają się w Google.
To nie jest idealny test, ale może pomóc w diagnozie.
5. Logi serwera
Przy dużych stronach sprawdź:
- czy Googlebot pobiera zasoby,
- czy crawluje paginację,
- czy odwiedza URL-e z kolejnych porcji treści,
- czy nie trafia na błędy API.
Nie wiesz, czy lazy loading ukrywa treść przed Google?
Sprawdzimy lazy loading obrazów, produktów, treści, FAQ, opinii, paginacji, infinite scroll, JavaScript, Core Web Vitals, GSC, crawler JS i logi serwera. Dostaniesz konkretną diagnozę, co Google widzi, czego nie widzi i co trzeba poprawić.
Zarezerwuj audyt lazy loading SEOJak naprawić źle wdrożony lazy loading?
Naprawa zależy od problemu.
| Problem | Naprawa | Priorytet |
|---|---|---|
| Obraz LCP ma loading="lazy" | Usuń lazy loading, rozważ preload lub fetchpriority | Wysoki |
| Główna treść ładuje się po scrollu | Renderuj treść w HTML-u lub przez SSR/SSG | Wysoki |
| Produkty są za przyciskiem "Załaduj więcej" | Dodaj crawlable paginację i linki HTML | Wysoki |
| Obrazy mają tylko data-src | Użyj natywnego loading="lazy" albo fallbacku | Średni |
| FAQ ładuje się dopiero po kliknięciu | Renderuj ważne FAQ w HTML-u | Średni |
| JS lazy loading ma błędy | Napraw skrypt albo uprość wdrożenie | Wysoki |
| Iframe'y spowalniają start strony | Dodaj loading="lazy" dla iframe poniżej ekranu | Średni |
Ogólna kolejność naprawy:
- Usuń lazy loading z elementów above the fold.
- Usuń lazy loading z obrazu LCP.
- Upewnij się, że główna treść SEO jest w HTML-u lub renderuje się stabilnie.
- Dodaj crawlable linki do produktów i paginacji.
- Zamień ciężkie biblioteki na natywny lazy loading, gdy to możliwe.
- Dodaj rozmiary obrazów, żeby ograniczyć CLS.
- Przetestuj GSC, crawl JS i renderowany DOM.
- Monitoruj Core Web Vitals.
Najczęstsze błędy lazy loading SEO
Najczęstsze błędy to:
- lazy loading obrazu LCP,
- lazy loading wszystkich obrazów bez wyjątku,
- ukrywanie głównej treści za JS,
- ładowanie opisów kategorii dopiero po scrollu,
- ładowanie produktów bez crawlable linków,
- przycisk "Załaduj więcej" bez osobnych URL-i,
- infinite scroll bez paginacji,
- obrazy tylko w
data-src, - brak
alt, - brak wymiarów obrazów,
- lazy loading FAQ ważnego dla SEO,
- lazy loading opinii używanych w schema,
- brak testów w Google Search Console,
- ciężka biblioteka JS do prostych obrazów,
- brak fallbacku dla niestandardowego JS lazy loadingu.
Najgroźniejszy błąd:
Strona ładuje leniwie elementy, które są kluczowe dla zrozumienia tematu strony, a nikt nie sprawdził, czy Google widzi je po renderowaniu.
Lazy loading trzeba testować po wdrożeniu.
Nie wystarczy, że działa u developera.
Checklista lazy loading SEO
Poniżej praktyczna checklista do audytu lazy loadingu.
| Punkt kontroli | Tak/Nie | Co sprawdzić? |
|---|---|---|
| Czy obraz LCP nie ma loading="lazy"? | Hero, główne zdjęcie produktu, baner | |
| Czy główna treść SEO jest dostępna bez interakcji? | H1, opis usługi, opis kategorii, lead | |
| Czy obrazy mają prawdziwy src? | Nie tylko data-src i placeholder | |
| Czy obrazy mają poprawne alt texty? | Opisowe, zgodne z grafiką i kontekstem | |
| Czy obrazy mają width i height? | Ograniczenie CLS | |
| Czy produkty są widoczne po renderowaniu? | Kategorie, karty produktów, linki | |
| Czy paginacja ma crawlable linki? | Nie tylko przycisk "Załaduj więcej" | |
| Czy FAQ i opinie są widoczne dla Google? | Zwłaszcza jeśli używasz schema | |
| Czy JS lazy loading działa bez błędów? | Konsola, GSC, crawler JS | |
| Czy iframe'y poniżej ekranu są ładowane leniwie? | Mapy, YouTube, embed social media | |
| Czy Google widzi lazy-loaded content? | Inspekcja URL, renderowany HTML, crawl JS | |
| Czy lazy loading poprawia, a nie pogarsza CWV? | LCP, CLS, INP, PageSpeed, CrUX |
Jeśli wiele odpowiedzi brzmi "nie", lazy loading może ukrywać ważne elementy albo pogarszać wydajność zamiast ją poprawiać.
Plan 90 dni: jak uporządkować lazy loading na stronie?
Poniżej praktyczny plan naprawy lazy loadingu pod SEO.
| Okres | Priorytet | Działania |
|---|---|---|
| Dni 1-7 | Audyt widoczności | Porównanie źródła HTML, DOM, GSC, crawlera JS i widoku użytkownika |
| Dni 8-14 | Mapa elementów lazy-loaded | Lista obrazów, treści, produktów, FAQ, opinii, iframe'ów i sekcji ładowanych leniwie |
| Dni 15-25 | LCP i above the fold | Usunięcie lazy loadingu z obrazu LCP i elementów pierwszego widoku |
| Dni 26-35 | Treść SEO | Renderowanie głównej treści w HTML-u, SSR lub stabilnym renderze JS |
| Dni 36-45 | Obrazy | Poprawa src, srcset, alt, width, height, kompresji i loading lazy dla obrazów poniżej ekranu |
| Dni 46-55 | E-commerce | Produkty, kategorie, karty produktów, obrazy, paginacja i linki do produktów |
| Dni 56-65 | Infinite scroll i load more | Dodanie crawlable URL-i i linków HTML do kolejnych porcji treści |
| Dni 66-75 | Core Web Vitals | Testy LCP, CLS, INP, PageSpeed, Lighthouse, CrUX i realnych danych użytkowników |
| Dni 76-90 | Monitoring | GSC, indeksacja, crawl JS, logi serwera, obrazy w Google, widoczność produktów i FAQ |
Po 90 dniach strona powinna mieć:
- bezpieczny lazy loading obrazów,
- brak lazy loadingu dla LCP,
- widoczną treść SEO,
- crawlable produkty i linki,
- poprawne obrazy z altami,
- mniejsze ryzyko ukrywania treści,
- lepsze Core Web Vitals,
- poprawne renderowanie w GSC,
- czytelny standard dla developerów.
Najczęstsze pytania
Czy lazy loading jest dobry dla SEO?
Lazy loading jest dobry dla SEO, jeśli poprawia szybkość strony i nie ukrywa przed Google ważnej treści, obrazów, produktów, linków, FAQ ani elementów nawigacji. Najbezpieczniej stosować go dla obrazów i iframe'ów poniżej pierwszego widoku, a nie dla elementów kluczowych dla indeksacji.
Czy można lazy-loadować obraz główny strony?
Zwykle nie należy lazy-loadować obrazu głównego, jeśli jest on elementem LCP lub znajduje się w pierwszym widoku. Obraz hero, główne zdjęcie produktu albo największa grafika above the fold powinny ładować się normalnie, a czasem z podwyższonym priorytetem.
Czy Google widzi lazy-loaded images?
Google może widzieć lazy-loaded images, jeśli są wdrożone poprawnie, mają prawdziwy adres obrazu, poprawny alt, działają po renderowaniu i nie wymagają interakcji użytkownika. Problemy pojawiają się, gdy właściwy obraz jest tylko w data-src, a JavaScript nie zamienia go poprawnie na src.
Czy można lazy-loadować treść tekstową?
Treść tekstową można ładować leniwie tylko bardzo ostrożnie. Jeśli jest to główna treść SEO, opis kategorii, opis usługi, FAQ, opinie lub sekcja ważna dla indeksacji, lepiej renderować ją w HTML-u albo upewnić się w Google Search Console, że Google widzi ją po renderowaniu.
Czy loading="lazy" wystarczy?
Atrybut loading="lazy" jest dobrym i prostym rozwiązaniem dla obrazów oraz iframe'ów poniżej pierwszego widoku. Nie zastępuje jednak optymalizacji obrazów, poprawnych altów, wymiarów width i height, srcset, kontroli LCP oraz testowania, czy Google widzi ważne elementy strony.
Jak sprawdzić, czy lazy loading nie ukrywa treści przed Google?
Najlepiej użyć Inspekcji URL w Google Search Console, crawla z renderowaniem JavaScript, porównania źródła HTML z wyrenderowanym DOM-em oraz testów danych strukturalnych. Warto sprawdzić, czy Google widzi treść, obrazy, produkty, linki, FAQ i sekcje ładowane leniwie.
Lazy loading ma przyspieszać stronę, a nie chować ją przed Google.
Lazy loading jest bardzo dobrym narzędziem, jeśli jest używany z głową.
Najważniejsze zasady:
- lazy-loaduj obrazy i iframe'y poniżej pierwszego widoku,
- nie lazy-loaduj obrazu LCP,
- nie opóźniaj głównej treści SEO,
- nie ukrywaj produktów i linków do produktów,
- nie opieraj paginacji wyłącznie na przycisku "Załaduj więcej",
- używaj prawdziwego
srci opisowegoalt, - ustawiaj
widthiheight, - testuj renderowanie w Google Search Console,
- sprawdzaj Core Web Vitals po wdrożeniu,
- dla treści ważnej SEO wybieraj stabilne renderowanie zamiast przypadkowego JS.
Jeśli lazy loading jest wdrożony dobrze, strona może być szybsza i nadal w pełni zrozumiała dla Google. Jeśli jest wdrożony źle, użytkownik może widzieć stronę, a Google może widzieć jej uboższą, niepełną albo opóźnioną wersję. W SEO ta różnica potrafi kosztować ruch, indeksację i sprzedaż.








