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 OKHow to send it
| Node.js / Express | res.status(200).end() |
|---|---|
| Python / Flask | return '', 200 |
| nginx | return 200; |
How to check it
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/