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 saved for you: a Cloudflare Worker streams the bytes as you download, so even a 2 GB file costs nothing and starts at once. Binary files carry their exact Content-Length, so an interrupted download shows as failed rather than short. Paste the URL into curl, Postman or your test suite.

Build your file

Pick a type and a size, then click Generate. Binary files download from our server; text, data and ZIP files are built right here in your browser, so there is no size limit from us and nothing is uploaded.

↓ 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.

Many files at once

Up to 100,000 files in one ZIP, for testing bulk upload, import jobs, sync clients and extractors. Built entirely in your browser: nothing is sent to a server, so there is no size cap and no queue.

Click Generate to build the archive.

An image of an exact size

For upload limits, layout tests and placeholders. Drawn on a canvas in your browser, so the pixel size is exact and nothing is uploaded. Noise content is the one to reach for when you need a genuinely large image: a flat colour of the same dimensions compresses down to almost nothing.

Choose your settings, then click Generate.

Response behaviour

Things a static file can't do. Use these 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 →