Strona główna / Warto wiedzieć ! / 3 błędy w optymalizacji obrazów, które windują koszty i zabijają SEO

3 błędy w optymalizacji obrazów, które windują koszty i zabijają SEO

Obrazy to jeden z tych elementów strony, które na pierwszy rzut oka wydają się proste. Wrzucasz plik, dodajesz alt text i tyle. Tymczasem to właśnie one często są najcięższym składnikiem witryny, odpowiadając nawet za 60–70% wagi całej strony. W e-commerce, gdzie szybkość ładowania bezpośrednio przekłada się na konwersję, złe zarządzanie obrazami to drogi błąd.

Widziałem sklepy, które traciły kilkanaście procent przychodu tylko dlatego, że ich zdjęcia produktowe były nieoptymalne. I nie chodzi o to, że były niskiej jakości – wręcz przeciwnie, często były przesadnie dopracowane, ważyły po 5 MB i ładowały się tak długo, że klient zdążył pójść do konkurencji.

Oto trzy błędy, które najczęściej popełniają firmy – i jak je naprawić, żeby nie stracić ani pieniędzy, ani pozycji w Google.

1. Używanie formatu JPEG dla zdjęć produktowych z przezroczystością

Brzmi jak banał, ale wciąż widzę to na co drugiej stronie. Ktoś przygotowuje zdjęcie produktu z przezroczystym tłem, zapisuje jako JPEG, a przezroczystość znika – zostaje białe tło, ale wokół produktu pojawiają się artefakty. W efekcie zdjęcie wygląda amatorsko.

Jeszcze gorzej, gdy obraz z przezroczystością zapisany jako JPEG jest konwertowany do formatu, który tej przezroczystości nie obsługuje – pojawia się czarne tło. Takie błędy obniżają zaufanie do sklepu.

Rozwiązanie: Jeśli potrzebujesz przezroczystości, używaj WebP z kanałem alfa lub AVIF. Obie formaty są nowoczesne, mają lepszą kompresję niż PNG i są obsługiwane przez większość przeglądarek. Dla pozostałych możesz użyć PNG jako fallbacku. Pamiętaj też, że w 2025 roku WebP to standard – Google od dawna promuje ten format, a jego wsparcie jest niemal powszechne. Nie ma więc wymówki, żeby dalej używać ciężkich PNG.

2. Zapominanie o srcset i sizes – ten sam obraz na wszystkie urządzenia

To klasyk. Firma wgrywa jeden obraz w wysokiej rozdzielczości (np. 1920×1920 px) i ustawia go na stronie jako szerokość 300 px. Przeglądarka i tak pobiera ten ogromny plik na smartfonie z małym ekranem. Efekt? Strona ładuje się dwa razy dłużej niż powinna.

Widziałem sytuację, gdzie po dodaniu srcset i sizes strona zaczęła ładować się w 1,5 sekundy zamiast w 4. To nie magia – to świadome serwowanie odpowiedniego rozmiaru obrazu dla danego viewportu.

Jak to zrobić? W HTML używasz atrybutu srcset, który wskazuje przeglądarce różne wersje tego samego obrazu, oraz sizes, który mówi, jaka przestrzeń zajmie obraz na ekranie.

Przykład:

<img src="produkt-800.jpg"
     srcset="produkt-400.jpg 400w,
             produkt-800.jpg 800w,
             produkt-1200.jpg 1200w"
     sizes="(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw"
     alt="Nazwa produktu">

Dzięki temu przeglądarka pobierze tylko ten plik, który jest potrzebny. Ogromna oszczędność danych i czasu.

3. Brak lazy loadingu dla obrazów poniżej folda

Kolejny powszechny błąd: ładujesz wszystkie obrazy na stronie od razu, nawet te, które są widoczne dopiero po przewinięciu. W efekcie na początkowy rendering czekasz dłużej, bo przeglądarka musi pobrać wszystko naraz.

Klient wchodzi na landing page – widzi puste miejsce na baner, a pod nim powoli pojawiają się zdjęcia. Zniecierpliwiony zamyka kartę.

Jak to naprawić? Wystarczy dodać atrybut loading="lazy" do znaczników <img> i <iframe>. To native HTML, wspierany przez wszystkie nowoczesne przeglądarki od lat. Możesz też użyć Intersection Observer do własnoręcznej implementacji, ale w większości przypadków native wystarczy.

Przykład:

<img data-src="produkt.jpg" alt="Nazwa" class="lazy" width="800" height="800">
<script>
document.addEventListener("DOMContentLoaded", function() {
  var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));
  if ("IntersectionObserver" in window) {
    let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
      entries.forEach(function(entry) {
        if (entry.isIntersecting) {
          let lazyImage = entry.target;
          lazyImage.src = lazyImage.dataset.src;
          lazyImage.classList.remove("lazy");
          lazyImageObserver.unobserve(lazyImage);
        }
      });
    });
    lazyImages.forEach(function(lazyImage) {
      lazyImageObserver.observe(lazyImage);
    });
  }
});
</script>

Dla prostoty możesz też użyć wbudowanego loading="lazy", ale pamiętaj, że starsze przeglądarki mogą go nie obsługiwać – warto mieć polyfill.

Podsumowanie

Obrazy to nie tylko kwestia estetyki – to fundament wydajności i pozycjonowania. Popełniając te trzy błędy, możesz tracić frakcje sekund, które zsumowane kosztują Cię konkretne przychody.

Zadbaj o odpowiedni format (WebP/AVIF), dostosuj rozmiar do urządzenia (srcset) i ładuj obrazy leniwie. To proste zmiany, które realnie zwiększą szybkość strony i poprawią wskaźniki Core Web Vitals.

Jeśli nie masz czasu na ręczną optymalizację, istnieją automatyzacje – ale to już temat na osobny artykuł. Na początek sprawdź, czy Twój sklep nie popełnia tych błędów, bo rozwiązanie jest często tańsze niż myślisz.

Tagi:

Zostaw odpowiedź

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *