Developer resources

Stable download URLs, a machine-readable manifest with checksums, and guides for the testing tools you already use.

Direct download URLs

Every file has a stable, direct URL with no redirects, tokens or interstitial pages. Sized files follow one pattern:

https://sampletestfiles.com/downloads/{format}/sample-{format}-{size}.{format}

For example, the 1 MB PDF file:

curl -O 'https://sampletestfiles.com/downloads/pdf/sample-pdf-1mb.pdf'

Sizes are written in lower case without a space: 1kb, 5kb, 10kb, 25kb, 50kb, 100kb, 500kb, 1mb, 5mb and 10mb. Not every format exists at every size; the format pages and the manifest list what is available.

These URLs are meant for people and for occasional scripted use. If a test suite or pipeline needs a file on every run, download it once and keep your own copy, so that your builds do not depend on this site being reachable.

File manifest

A JSON manifest of every sample file is published at /files.json. Each entry gives the file name, format, MIME type, exact size, SHA-256 checksum, download URL and page URL.

curl -s 'https://sampletestfiles.com/files.json' \
  | jq '.files[] | select(.format == "pdf") | {name, bytes, sha256, url}'

Use it to pin fixtures by checksum:

echo "5a9dc29742698650bf347aae734b6efd09f554ef70f4d6213e850359328505d4  sample-pdf-1mb.pdf" | sha256sum --check

Testing topics

File uploads

Accepted types, size limits, file names, interruptions and security checks for upload forms and endpoints.

File-size restrictions

Where limits live in a stack, the defaults of common servers and frameworks, and how to test a boundary to the byte.

MIME types and file validation

Extensions, Content-Type headers and signature bytes, and how to check that validation cannot be fooled by a renamed file.

REST APIs

Sending files as multipart form data, raw bodies and base64 JSON, and what to assert in the response.

Download speed and CDN delivery

Measuring throughput honestly, checking range requests and resume, and verifying that every edge returns identical bytes.

Playwright

setInputFiles, file choosers, in-memory files, download assertions and API uploads.

Selenium

send_keys uploads in Python and Java, remote grids, hidden inputs and download checks.

Cypress

selectFile for inputs and drop zones, intercepting upload requests and reading downloads.

CI/CD pipelines

Vendoring fixtures, verifying checksums in a job, and testing artifact and cache limits.

Parsers and importers

Clean inputs and deliberate edge cases for CSV, JSON, XML, email and more.

Storage systems

Exact-size files for quota checks, multipart thresholds and round-trip integrity.

Browser compatibility

Media, image and document samples for checking previews and players across browsers and devices.

What the server sends

Download responses are plain static files. When the site is deployed with the supplied host configuration they are served with:

Text files may be compressed in transit by the host. To measure raw transfer speed, use a BIN sample, which cannot be compressed.

Formats at a glance