On-demand generator

Generate a test file of any size, instantly

Pick a type and a size and get a direct download URL. Nothing is stored — a Cloudflare Worker streams the bytes as you download, so even multi-gigabyte files are free and instant. Paste the URL into curl, Postman or your test suite.

Build your file

The URL updates as you change the options — copy it straight into a script.

↓ Download

Tip: sizes accept kb, mb and gb (e.g. 500mb, 2gb). Files are generated deterministically, so the same URL always returns the same bytes.

Response behaviour

Things a static file can't do — for testing timeouts, retries and error handling.

/slow?size=10mb&bps=50000Throttled download, for timeout testing
/truncate?size=10mbDeclares a length, then closes at half
/no-content-length?size=5mbChunked, no Content-Length header
/delay?ms=5000Stalls before the first byte
/status/503Any HTTP status code
/redirect/5An N-hop redirect chain

Request inspection & auth httpbin-style

Echo back what your client actually sent — useful when debugging headers, auth and CORS.

/anythingEchoes your method, headers, query & body
/headersThe request headers you sent
/ipYour IP address
/uuidA random UUIDv4
/basic-auth/user/pass401 unless correct Basic auth is sent
/cors?origin=echoConfigurable CORS headers & preflight

Mock REST API

Three deterministic collections — 250 users, 500 products, 1,000 posts. The same id always returns the same record, so you can assert against it. Nothing is stored; writes are echoed back with the correct status.

/api/usersA paginated collection. Also /api/products and /api/posts
/api/users/42One record — out-of-range ids return a JSON 404
/api/products?page=2&limit=50Pagination, with Link and X-Total-Count headers
/api/posts?q=cacheCase-insensitive search across text fields
/api/products?sort=-priceSort by any field; prefix - for descending
/api/users?delay=2000Slow the response, to test loading states

Writes: POST /api/users returns 201 with a Location header, PUT/PATCH return 200 and DELETE returns 204 — all echoing your body back, all completely stateless.

Unreliable on purpose

For retry logic, backoff and timeout handling — the failures a healthy staging environment never gives you.

/flaky?rate=30Fails 30% of requests with 503 + Retry-After
/flaky?rate=50&status=500Choose the failure status code
/flaky?rate=50&seed=7Add a seed to make the outcome reproducible
/jitter?min=100&max=3000Random latency in a range, every request

Full list at /endpoints — everything is stateless and free.

Prefer a ready-made file, or your own machine?

Browse the deterministic catalog — every file has a published SHA-256 — or copy commands to build files locally.

Browse test files CLI commands →