Sample files you can hotlink or download
You are testing something that takes files, and you need a file to feed it. Say a PDF with three pages. Every file here has a URL, so you can hotlink it from a page or a test, or download it and run offline.
Here is one:
https://loremfile.dev/pdf/a4-3pages.pdf
Paste it into a browser. There is no signup, and no key to send.
The files are CC0, so copying one into your own repository is fine. Each has a SHA-256 in our manifest, and your test can compare it with what it downloaded. A published URL never changes its bytes, so a hash you save today still matches next month.
Want to fetch files from code? There are four ways:
- Action is for GitHub
workflows. Add
uses: kumarprabhashanand/loremfile/action@action-v1and it downloads the files and checks each hash. - pip gives you a command. Run
pip install loremfile, thenloremfile get --format pdf. - npm does the same without an install step. Run
npx loremfile get --format pdf. - MCP is for agents. Run
npx -y loremfile mcporuvx loremfile mcpand the agent gets three read-only tools.
We check the live site from outside every day. The results are public on the status page.
Find a file
Browse by format below, or see all formats in one table.
Formats
Data
Edge cases
- edge-case 21
By task
- Sample files for testing file uploads: Files on the edge of every upload check: exact size limits, mislabelled types, rotated and CMYK images, hostile and encrypted archives. Free and CC0.
- Sample files for testing parsers and error handling: Files that must load correctly, must fail, may be recovered or split readers, each with its known contents or measured outcome. Free, CC0, hotlinkable.
- Sample files for testing media playback and seeking: Video and audio that test playback and seeking: where the index sits, range requests, codecs, missing tracks and adaptive HLS. Free, CC0, hotlinkable.
Popular
-
pdf/a4-3pages.pdf4.4 KB (4,351 bytes)A4 portrait, 3 pages of Lorem Ipsum in the Helvetica core font with page numbers. No embedded fonts.
-
png/640x480.png4.2 KB (4,208 bytes)A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 640x480, RGB.
-
jpg/1920x1080.jpg56.8 KB (56,817 bytes)A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 1920x1080, quality 85, 4:2:0 chroma subsampling.
-
mp4/720p-5s.mp42 MB (1,974,574 bytes)1280x720 at 30 fps, five seconds, H.264 plus AAC. The default sample if you need just one.
-
mp3/sine-440hz-30s.mp3480.8 KB (480,788 bytes)A 440 Hz sine wave, thirty seconds, 128 kbps stereo, long enough to test seeking and scrubbing.
-
csv/people-1000.csv249.6 KB (249,645 bytes)1,000 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-1000 fixture.
-
json/people-1000.json512.7 KB (512,687 bytes)An array of 1,000 people objects, pretty-printed with two-space indentation.
-
docx/1page.docx37.2 KB (37,209 bytes)One page: a heading and three paragraphs of Lorem Ipsum in the default Word styles. The page count is what Word renders it as; .docx stores no page count of its own.
-
xlsx/1sheet-1000rows.xlsx156.7 KB (156,719 bytes)One sheet: a bold, frozen header row plus a thousand records of the shared people dataset. The first ten rows are the same records as the ten-row fixture.
-
bin/10mib-plus-1.bin10.5 MB (10,485,761 bytes)Exactly one byte over 10mib, for testing an upload limit's boundary rather than its middle.
Use it from anywhere
JavaScript
const response = await fetch("https://loremfile.dev/json/people-1000.json");
const people = await response.json();
Python
import urllib.request
with urllib.request.urlopen("https://loremfile.dev/csv/people-1000.csv") as response:
data = response.read()
curl
curl -O https://loremfile.dev/pdf/a4-3pages.pdf
For agents
Read llms.txt for a short summary, llms-full.txt for every file, or manifest.json for sizes, hashes and measured properties. Each format also has its own list at /{format}/index.json.
Rules
- Stable URLs. The bytes at a published path do not change; a fix is a new path.
- Rate limit. Stay under 30 requests per second per IP. In CI, download once and cache.
- Licence. Every file is CC0 1.0: use it for anything, no credit needed.
- Host. If this host is ever unavailable, the repository README states the current canonical host.