200 OK

The request succeeded.

When to use it

Default for a successful GET, or a POST that returns a result.

Good to know

The biggest 200 gotcha is the “soft 404”: an error page or empty result served with status 200. Google detects many of these and flags them in Search Console, but they waste crawl budget and can keep junk URLs indexed. Single-page apps are frequent offenders because the server returns index.html with 200 for every path; return a real 404 for unknown routes or add noindex.

APIs that wrap errors in a 200 with an error field break monitoring, retries and caching, since everything looks successful. A 200 to GET can be stored by browsers and CDNs, even heuristically when only Last-Modified is present, so set Cache-Control explicitly. Add an ETag or Last-Modified so clients can revalidate and get a cheap 304, and use 204 when there is genuinely nothing to return.

Success (2xx)

2xx codes mean success: the server received, understood and accepted the request.

What it looks like

HTTP/1.1 200 OK

How to send it

Node.js / Expressres.status(200).end()
Python / Flaskreturn '', 200
nginxreturn 200;

How to check it

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Open HTTP Status Codes