A service for generating HTTP codes.
It's useful for testing monitoring services.
Just add the status code you want to the end of the URL, like this: https://statuscode.app/200
If you want to delay a response add the query parameter sleep and specify the duration in milliseconds (maximum: 5000). Example: https://statuscode.app/200?sleep=5000
Beyond status codes, a few other routes are useful for testing:
| Path | Description |
|---|---|
| /echo | Accepts any method and returns a JSON summary of what it received: method, path, query params, headers, and body. |
| /ip | Accepts any method and returns your connecting IP address as plain text, read from the CF-Connecting-IP header Cloudflare sets on every request. |
| /download | Returns a dummy file as an attachment for testing download handling. Customize with query params: filename (default download.txt), size in bytes (default 1024, max 10 MiB), and type for the Content-Type header (default application/octet-stream). Example: /download?filename=report.csv&size=2048&type=text/csv |
| Code | Category | Description |
|---|---|---|
| 1xx | Informational | Request received, continuing process |
| 2xx | Success | The action was successfully received, understood, and accepted |
| 3xx | Redirection | Further action must be taken in order to complete the request |
| 4xx | Client Error | The request contains bad syntax or cannot be fulfilled |
| 5xx | Server Error | The server failed to fulfill an apparently valid request |
Please see the IANA website for all available codes and details.
| Code | Description | Notes |
|---|---|---|
| 100 | Continue | Returns 501 instead — see note below |
| 101 | Switching Protocols | Returns 501 instead — see note below |
| 102 | Processing | Returns 501 instead — see note below |
| 103 | Early Hints | Returns 501 instead — see note below |
| 200 | OK | |
| 201 | Created | |
| 202 | Accepted | |
| 203 | Non-Authoritative Information | |
| 204 | No Content | Empty body — see note below |
| 205 | Reset Content | Empty body — see note below |
| 206 | Partial Content | |
| 207 | Multi-Status | |
| 208 | Already Reported | |
| 226 | IM Used | |
| 300 | Multiple Choices | |
| 301 | Moved Permanently | |
| 302 | Found | |
| 303 | See Other | |
| 304 | Not Modified | Empty body — see note below |
| 305 | Use Proxy | |
| 306 | Switch Proxy | |
| 307 | Temporary Redirect | |
| 308 | Permanent Redirect | |
| 400 | Bad Request | |
| 401 | Unauthorized | |
| 402 | Payment Required | |
| 403 | Forbidden | |
| 404 | Not Found | |
| 405 | Method Not Allowed | |
| 406 | Not Acceptable | |
| 407 | Proxy Authentication Required | |
| 408 | Request Timeout | |
| 409 | Conflict | |
| 410 | Gone | |
| 411 | Length Required | |
| 412 | Precondition Failed | |
| 413 | Request Entity Too Large | |
| 414 | Request URI Too Long | |
| 415 | Unsupported Media Type | |
| 416 | Requested Range Not Satisfiable | |
| 417 | Expectation Failed | |
| 418 | I'm a teapot | |
| 421 | Misdirected Request | |
| 422 | Unprocessable Entity | |
| 423 | Locked | |
| 424 | Failed Dependency | |
| 425 | Too Early | |
| 426 | Upgrade Required | |
| 428 | Precondition Required | |
| 429 | Too Many Requests | |
| 431 | Request Header Fields Too Large | |
| 451 | Unavailable For Legal Reasons | |
| 500 | Internal Server Error | |
| 501 | Not Implemented | |
| 502 | Bad Gateway | |
| 503 | Service Unavailable | |
| 504 | Gateway Timeout | |
| 505 | HTTP Version Not Supported | |
| 506 | Variant Also Negotiates | |
| 507 | Insufficient Storage | |
| 508 | Loop Detected | |
| 510 | Not Extended | |
| 511 | Network Authentication Required |
This service runs on Cloudflare Workers, which implements the Fetch API's Response object rules. Two groups of codes can't be emitted exactly as specced because of that:
Response with a status below 200 at all, so a final 1xx status can't be sent. These routes return 501 Not Implemented with an explanatory body instead.Every other code behaves exactly as documented above, including 306, which has no defined reason phrase (matching Go's net/http.StatusText) and returns an empty body by design.
Created by Austin Miller, Hosted on Cloudflare Workers, Open Sourced on Github.
We don't capture or store any data about the requests you make.