Sample files you can hotlink
loremfile.dev — sample files you can hotlink.
Free and CC0, with stable URLs. PDFs, images, audio, video, office documents, data files, text in many encodings and exact-size binary blobs. Open CORS, byte ranges and a SHA-256 manifest. No ads, no signup, no keys.
curl -O https://loremfile.dev/pdf/a4-3pages.pdf
Find a file
Browse by format below, or see all formats in one table.
Formats
Data
Edge cases
- EDGE 21
Popular
-
pdf/a4-3pages.pdf4.4 KBA4 portrait, 3 pages of Lorem Ipsum in the Helvetica core font with page numbers. No embedded fonts.
-
png/640x480.png4.2 KBA colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 640x480, RGB.
-
jpg/1920x1080.jpg56.8 KBA 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 MB1280x720 at 30 fps, five seconds, H.264 plus AAC. The default sample if you need just one.
-
mp3/sine-440hz-30s.mp3480.8 KBA 440 Hz sine wave, thirty seconds, 128 kbps stereo — long enough to test seeking and scrubbing.
-
csv/people-1000.csv249.6 KB1,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 KBAn array of 1,000 people objects, pretty-printed with two-space indentation.
-
docx/1page.docx37.2 KBOne 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 KBOne 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 MBExactly one byte over 10mib, for testing an upload limit's boundary rather than its middle.
Use it from anywhere
curl
curl -O https://loremfile.dev/pdf/a4-3pages.pdf
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()
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.