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.