Want to test your scaper?
- all status codes at
/<status code> - PDFs
- images
- big content
- cycle redirect
- different content types
- empty content
- JS rendering
- controlled delayed response at
/long-response?responseAfter=5(seconds)
GET /- HTML index page with direct links to every test endpoint.
GET /status/:code- Dynamic status code page (supports all HTTP status codes from 100-511).- Examples:
/status/200,/status/404,/status/500,/status/301.
- Examples:
GET /js/inline- HTML with inline JavaScript rendering (fetch returns minimal HTML).GET /js/external- HTML with external script file rendering.GET /js/image.png- HTML with JavaScript that renders an image tag.GET /js/render.js- Served JavaScript that renders content into the/js/externalpage.
GET /long-response?responseAfter=N- Response delayed by N seconds (default: 5).GET /duplicates/1- Duplicate content (version 1).GET /duplicates/2- Duplicate content (version 2, identical to version 1).GET /redirect/temporary-to-200- 302 redirect to/status/200.GET /redirect/permanent-to-200- 301 redirect to/status/200.GET /headers- Returns all request headers as plain text.GET /uuid- Returns a random UUID.GET /random- Returns random text content.GET /empty- Returns 204 No Content.
GET /markdown- Content-Type:text/markdown.GET /json- Content-Type:application/json.GET /xml- Content-Type:application/xml.GET /html- Content-Type:text/html(unstyled, no CSS).GET /text- Content-Type:text/plain.GET /csv- Content-Type:text/csv.GET /tsv- Content-Type:text/tab-separated-values.
GET /forum?page=1- Forum page 1 with dummy messages.GET /forum?page=2- Forum page 2 with dummy messages.
GET /100Kb- Configurable path for 100KB content.GET /1Mb- Configurable path for 1MB content.GET /10Mb- Configurable path for 10MB content.
GET /pdf- Serves PDF file frompublic/files/pdf/sample.pdf.GET /simple.pdf- Same as/pdf.GET /image.png- Serves PNG image frompublic/images/sample.png.
pnpm install# Development mode with auto-reload
pnpm dev
# Production mode
pnpm startThe server will start on port 3000 by default. You can change this with the PORT environment variable:
PORT=8080 pnpm startFor the size-based endpoints (/100Kb, /1Mb, /10Mb), configure external file paths using environment variables:
PATH_100KB=https://your-storage.com/path/to/100kb-file.txt
PATH_1MB=https://your-storage.com/path/to/1mb-file.txt
PATH_10MB=https://your-storage.com/path/to/10mb-file.txtPlace your test files in the following directories:
public/files/pdf/sample.pdf- PDF file for/pdfand/simple.pdfendpoints.public/images/sample.png- PNG image for/image.pngendpoint.public/js/render.js- JavaScript loaded by/js/external.
This project is designed with Cloudflare Workers compatibility in mind:
- Uses the Hono fetch handler export instead of Express middleware.
- Avoids Node.js-specific APIs beyond the optional
@hono/node-serverconvenience for local runs. - All routes use standard HTTP methods (
GET). - Works with
nodejs_compatand thecloudflarebuild target.
To deploy to Cloudflare Workers, you'll need to:
- Use the default export from
src/index.jsas the Worker entry. - Configure environment variables for Workers.
- Keep static files bundled or served from compatible storage when deploying.
MIT
