Getting started

The URL scheme

Every file lives at https://loremfile.dev/{format}/{name}. The format is the first path segment and the name says what is inside: pdf/a4-3pages.pdf is three A4 pages, and csv/people-1000.csv is a thousand rows of synthetic people. There is nothing to sign up for and no key to send. Naming and sizes explains the grammar.

Fetch a file

curl -O https://loremfile.dev/pdf/a4-3pages.pdf

A web page on any origin can fetch a file directly: CORS allows GET and HEAD from every origin, and byte-range requests work, so a media player can seek. Query strings are ignored, so ?v=2 neither busts a cache nor changes what you receive.

Check the size first

curl -sI https://loremfile.dev/mp4/720p-5s.mp4 | grep -i content-length

Content-Length equals the bytes field in the manifest. Do not treat the ETag as an MD5.

Verify what you downloaded

Every active file is listed with its SHA-256 hash in sha256sums.txt, in the format sha256sum reads:

# Linux (coreutils)
curl -fsSL https://loremfile.dev/sha256sums.txt | sha256sum -c --ignore-missing
# macOS ships no sha256sum; shasum is preinstalled
curl -fsSL https://loremfile.dev/sha256sums.txt | shasum -a 256 -c --ignore-missing

In a GitHub workflow

- uses: kumarprabhashanand/loremfile/action@action-v1
  with:
    paths: pdf/minimal.pdf mp4/720p-5s.mp4

Files land in loremfile-fixtures/, each checked against its hash in the manifest. Linux and macOS runners; the action downloads one file at a time and backs off if it is rate limited.

Find files without a browser

manifest.json lists every file with its size, hash, MIME type and measured properties, and each format has its own list at /{format}/index.json. Keep automated traffic under 30 requests per second per IP; the action above paces its downloads for you.