Kod 200 OK

Co oznacza HTTP 200 OK (RFC 9110), dlaczego jest konieczny, ale niewystarczający do indeksowania, na czym polega pułapka soft 404, czym 200 różni się od 204 i 304 oraz jak potwierdzić, co faktycznie otrzymuje Googlebot.

Opublikowano po raz pierwszy: 3 lip 2026 · Ostatnia aktualizacja: 9 sie 2026 · Advanced
Języki
1 sygnał dowodowy na tej stronie

HTTP 200 OK to standardowy kod powodzenia 2xx (RFC 9110): serwer znalazł zasób i go zwraca. Dla strony jest to kod, którego chcesz — ale konieczny, nie wystarczający. Własna dokumentacja Google mówi, że system indeksowania „może zindeksować treść, ale nie jest to gwarantowane”; jakość, duplikacja, cienka treść i noindex są oceniane dodatkowo. Klasyczna pułapka to soft 404: URL zwraca 200, choć treść przypomina błąd albo pustą stronę; Google wykrywa to na poziomie treści i zgłasza w Search Console soft 404 niezależnie od kodu. 200 oznacza sukces z rzeczywistym ciałem, 204 sukces z pustym ciałem (na stronie traktowany jak soft 404), a 304 to sygnał buforowania, nie decyzja o indeksowaniu. Dopasuj kod do rzeczywistości — usunięte → 404/410, przeniesione → 301, zduplikowane → tag canonical — i zawsze sprawdzaj, co otrzymał sam Googlebot, przez URL Inspection albo logi, a nie tylko to, co widzi przeglądarka.

TL;DR — 200 OK to standardowy kod powodzenia 2xx (RFC 9110 §15.3.1): serwer zrealizował żądanie, a dla GET/HEAD ciało jest reprezentacją zasobu. Domyślnie podlega heurystycznemu buforowaniu. Dla SEO jest konieczny, ale niewystarczający — dokumentacja Google mówi: “may index the content, but that’s not guaranteed,” (tłumaczenie) „może zindeksować treść, ale nie jest to gwarantowane”, więc jakość, duplikacja, cienka treść i noindex nadal decydują o wyniku niezależnie od 200. Klasyczny błąd to soft 404: 200 opakowane wokół błędnej lub pustej treści, które Google wykrywa na poziomie treści i zgłasza jako soft 404 niezależnie od kodu. 200 (ciało oczekiwane) różni się od 204 (puste ciało, na stronach traktowane jak soft 404) i 304 (sygnał buforowania, nie decyzja o indeksowaniu). Potwierdź też, co dostał Googlebot — cloaking, blokowanie botów, reguły geograficzne oraz konfiguracja CDN/WAF mogą podać mu inny kod niż Twojej przeglądarce.

Co oznacza 200 w specyfikacji

RFC 9110 (HTTP Semantics) jest aktualnym źródłem prawdy, a §15.3.1 mówi wprost: “The 200 (OK) status code indicates that the request has succeeded.” (tłumaczenie) „Kod statusu 200 (OK) oznacza, że żądanie zakończyło się powodzeniem.” Zawartość ciała zależy od metody żądania. Dla metod istotnych w przypadku stron — GET i HEAD — treść jest reprezentacją docelowego zasobu. RFC dodaje zastrzeżenie: poza odpowiedziami na CONNECT od 200 oczekuje się treści, chyba że sposób opakowania komunikatu wyraźnie sygnalizuje długość zero — dlatego „200 zawsze ma ciało” to skrót myślowy, a nie absolutna reguła. W praktyce dla strony, którą chcesz zindeksować, celem jest prawdziwe ciało, nie puste. 200 jest też domyślnie „heurystycznie buforowalne”, chyba że dyrektywa cache-control mówi inaczej, dlatego nagłówki walidatorów, takie jak ETag i Last-Modified, mają znaczenie na stronach często ponownie crawlownych. Evidence for this claim RFC 9110 defines 200 OK as indicating that the request succeeded; the response content depends on the request method. Scope: HTTP semantics for 200 responses; this does not guarantee search indexing. Confidence: high · Verified: IETF: RFC 9110 §15.3.1 — 200 OK

Mówiąc ściśle, 200 nie dotyczy wyłącznie stron. RFC opisuje, co oznacza „powodzenie” dla każdej metody:

Metoda żądaniaCiało odpowiedzi 200 reprezentuje
GETdocelowy zasób
HEADdocelowy zasób, ale bez przesyłania ciała
POSTstatus albo wynik działania
PUT, DELETEstatus działania
OPTIONSopcje komunikacji dla zasobu

W przypadku metod innych niż GET często nie zobaczysz 200 — MDN zauważa, że udane żądania PUT lub DELETE “often do not result in a 200 OK response,” (tłumaczenie) „często nie skutkują odpowiedzią 200 OK”, a częstsze są 201 Created lub 204 No Content. Żadna z tych kwestii nie ma znaczenia dla SEO adresów stron; najważniejsza zasada jest taka, że dla dokumentu, który chcesz zindeksować, celem jest 200 z rzeczywistym ciałem.

Konieczny, ale niewystarczający do indeksowania

To najważniejsza rzecz do poprawnego zrozumienia i obszar, w którym większość konkurencyjnych stron słownikowych mówi po prostu nieprawdę. Twierdzą, że „200 oznacza, iż strona zostanie zindeksowana”. Własna dokumentacja Google mówi inaczej. Dla odpowiedzi 200 Google “passes on whatever it received to the next processing step… For Google Search, the next system is the indexing pipeline. The indexing systems may index the content, but that’s not guaranteed.” (tłumaczenie) „przekazuje wszystko, co otrzymał, do następnego etapu przetwarzania… W wyszukiwarce Google kolejnym systemem jest potok indeksowania. Systemy indeksowania mogą zindeksować treść, ale nie jest to gwarantowane.” Evidence for this claim Google passes a 2xx response to its indexing pipeline, which may index the content but does not guarantee that it will do so; error-like content can be classified as a soft 404. Scope: Google Search handling of 2xx page responses and soft 404s. Confidence: high · Verified: Google: HTTP status codes and Search

200 jest więc umową dotyczącą odpowiedzi HTTP, a nie obietnicą dotyczącą losu strony w wyszukiwarce. Po odpowiedzi 200 Google niezależnie ocenia:

  • Jakość — strony cienkie, niskowartościowe albo automatycznie wygenerowane mogą nie zostać zindeksowane.
  • Duplikację — niemal duplikat silniejszego URL-a może zostać połączony z tym URL-em, zamiast być zindeksowany samodzielnie (właśnie to kontroluje tag canonical).
  • Dyrektywynoindex w tagu meta albo nagłówku X-Robots-Tag wyklucza stronę, nawet przy idealnym 200.

Przewodnik Patricka w Ahrefs wyznacza tę samą granicę na poziomie całej rodziny kodów: “Most 2xxs will allow pages to be indexed. However, 204s will be treated as soft 404s and won’t be indexed.” (tłumaczenie) „Większość kodów tej rodziny pozwala na indeksowanie. Jednak odpowiedzi bez treści są traktowane jako błąd braku strony i nie zostaną zindeksowane.” 200 sprawia, że strona jest uprawniona do indeksowania; nie sprawia, że jest zindeksowana.

Pułapka soft 404

Najostrzejszą ilustracją tego, że „200 to nie cała historia”, jest soft 404. Dokumentacja Google o kodach statusu opisuje mechanizm wprost: “If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error.” (tłumaczenie) „Jeśli treść sugeruje błąd w wyszukiwarce Google, pustą stronę albo komunikat błędu, Search Console pokaże błąd oznaczający brak strony.” Zwróć uwagę, co to oznacza — klasyfikacja opiera się na wyrenderowanej treści, a nie na kodzie HTTP. Potok indeksowania Google zagląda poza 200 do tego, co rzeczywiście znajduje się na stronie, i jeśli odczytuje to jako „nie znaleziono”, przypisuje stronę do tej samej kategorii i raportuje ją jak prawdziwe 404.

Przypadki do sprawdzenia intuicją: wycofany produkt, którego strona ładuje teraz pusty szablon; usunięty artykuł, który nadal zwraca powłokę 200; filtrowana strona kategorii albo wynik wyszukiwania z zerową liczbą elementów i komunikatem „nic tu nie ma”. Każdy zwraca technicznie poprawne 200, jednocześnie mówiąc użytkownikom i Google, że nie ma tu nic do zobaczenia.

Ta witryna ma osobny artykuł o błędach soft 404, opisujący mechanikę wykrywania i poprawki — nie będę ich tu powtarzać. Wniosek dla dyskusji o 200 jest prosty: zwracanie 200 na stronie, która naprawdę zniknęła, tworzy warunki dla soft 404. Poprawka polega na dopasowaniu kodu do rzeczywistości.

Powiązana pułapka: powodzenie transportu nie oznacza powodzenia aplikacji

Warto krótko o tym wspomnieć, bo temat pojawia się w kręgach API i monitoringu: warstwa HTTP i warstwa aplikacji mogą się nie zgadzać. Endpoint API może wysłać 200 z obiektem błędu JSON w ciele; strona może wysłać 200, gdy zależność backendu po cichu zawiodła i zamiast prawdziwej treści wyrenderowała uszkodzony blok. Linia statusu mówi „dostarczono poprawnie” — i tylko to twierdzi. To, czy ładunek jest rzeczywiście poprawny, to osobne pytanie, na które kod statusu nie odpowiada. Praktycy naprawdę różnią się w poglądach, czy API powinno sygnalizować błąd statusem innym niż 200, czy statusem 200 opakowującym ładunek błędu; to kontrakt wybierany przez każdy zespół, a nie reguła HTTP. Dla SEO tej witryny odpowiednikiem na poziomie strony jest opisany wyżej soft 404 — zasada jest ta sama: nie ufaj samej linii statusu, sprawdź, co faktycznie zawiera ciało.

200 a 204 i 304 — nie myl ich

Trzy kody, które ludzie mylą, choć tylko jeden jest sukcesem typu „oto Twoja strona”:

KodKlasaCiałoZnaczenieObsługa SEO
200 OK2xxOczekiwana rzeczywista treśćSukces — oto zasóbUprawniony do indeksowania (niegwarantowane)
204 No Content2xxCelowo pusteSukces, bez ciałaTraktowany jak soft 404 na URL-u strony — zobacz 204-no-content
304 Not Modified3xxBrak„Użyj kopii z pamięci podręcznej” (żądanie warunkowe)Sygnał buforowania, nie decyzja o indeksowaniu

204 jest prawdziwym kodem powodzenia, ale jego puste ciało nie daje crawlerowi nic do zindeksowania — na URL-u strony trafia więc do kategorii soft 404 (to osobny artykuł; nie myl przypadku pustego ciała z normalnym 200). 304 nie należy nawet do tej samej rodziny — odpowiada na żądanie warunkowe (If-None-Match / If-Modified-Since), informując klienta, że jego kopia z pamięci podręcznej nadal jest aktualna. Nie zawiera ciała i nic nie mówi o tym, czy indeksować; jest mechanizmem wydajności crawl, a nie duplikatem 200. Częste pytanie „200 a 304 — czy to nie to samo?” myli optymalizację buforowania z odpowiedzią powodzenia.

Potwierdź, co faktycznie widzi Googlebot

Oto luka pomijana przez niemal każdy konkurencyjny artykuł: różni żądający mogą otrzymać różne kody dla tego samego URL-a. Twoja przeglądarka może zobaczyć czyste 200, a Googlebot coś innego — czasem celowo (cloaking, będący naruszeniem Search Essentials Google), częściej przypadkowo z powodu reguł WAF/blokowania botów, targetowania po adresie geo-IP, logiki brzegu CDN albo konfiguracji testu A/B, która nie działa poprawnie dla botów.

„200 w mojej przeglądarce” nie jest więc dowodem, że „Google widzi 200”. Właściwa diagnostyka polega na sprawdzeniu, co otrzymał sam Googlebot:

  • GSC URL Inspection — uruchom Live Test, aby zobaczyć status i wyrenderowaną treść pobraną przez Google, a nie to, co widzi Twój komputer.
  • Logi serwera / CDN-u — źródło prawdy o tym, jaki kod faktycznie otrzymał każdy user-agent.

Zwykłe curl -I z terminala jest przydatne, ale to tylko kolejny żądający, który może trafić na inne reguły brzegowe niż Googlebot — traktuj je jako punkt danych, a nie ostateczne słowo.

Jak sprawdzać i monitorować odpowiedzi 200s

  • DevTools przeglądarki — karta Network, przeładuj stronę, kliknij żądanie dokumentu i odczytaj kolumnę Status.
  • Wiersz poleceńcurl -I https://example.com/page dla nagłówków pojedynczego żądania, curl -IL, aby śledzić łańcuch przekierowań.
  • Google Search Console — URL Inspection pokazuje zcrawlowany status i umożliwia Live Test.
  • Bing Webmaster Tools — jego narzędzie URL Inspection służy po stronie Bing do potwierdzenia, co otrzymał Bingbot. (Bing nie publikuje osobnej dokumentacji „jak kody statusu wpływają na indeksowanie”, tak jak Google — wolę powiedzieć to wprost, niż wymyślać stanowisko Bing.)
  • Crawlery — Screaming Frog i Ahrefs Site Audit zbiorczo pokazują kody statusu w całej witrynie; bezpłatny Ahrefs SEO Toolbar pokazuje kod bieżącej strony.

Zdrowy stan wygląda tak: ważne, kanoniczne URL-e konsekwentnie zwracają 200 z rzeczywistą treścią, a strony, które powinny zniknąć albo zostać przeniesione, zwracają 404/410 lub 301 zamiast mylącego 200.

Decyzja w jednym wierszu

Dopasuj kod do rzeczywistości. Chcesz mieć w indeksie → 200 z obszerną, wartościową treścią. Zniknęła na dobre → 404 albo 410 (zobacz 404-not-found). Przeniesiona → 301. Duplikat innego URL-a → wskaż tag canonical na preferowaną wersję, zamiast próbować wymuszać kod inny niż 200. 200 jest zielonym światłem dla stron, które rzeczywiście na nie zasługują — niczym więcej i niczym mniej.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.