files.placeholder.com

Dummy files

Real files to test uploads, downloads, previews and parsers: documents, data, archives, images, audio and video, files of exact sizes, broken and mislabelled files, and every text encoding that breaks importers. All generated, all synthetic, the same bytes forever.

https://files.placeholder.com/<category>/<file>
https://files.placeholder.com/index.json        every file with size, type and sha256

What's there

107 files in nine folders. This is a summary; index.json is the full list.

FolderFiles
documents/sample.pdf, .docx, .xlsx (2 sheets, formulas with cached values), .pptx (3 slides, speaker notes), .odt, .ods, .rtf, .txt, .md, .html
data/sample.csv (quoted fields with commas, quotes and newlines), sample-semicolon.csv, sample-10000-rows.csv, .tsv, .json, .ndjson, .xml (namespace, CDATA), .yaml
archives/sample.zip, .tar, .tar.gz, .tar.bz2, .tar.xz (the same five files in nested folders), sample.txt.gz
images/PNG (also transparent, 100 × 100, 1920 × 1080), JPEG (baseline, progressive, 1920 × 1080), animated GIF, WebP (lossy, lossless), AVIF, SVG, BMP, TIFF, ICO
audio/2-second tone as WAV, MP3, Ogg Vorbis, Opus, FLAC and M4A; silence-1s.wav
video/sample.mp4 (H.264 + AAC) and sample.webm (VP9 + Opus), 320 × 240, 2 s
sizes/Exact byte counts: .bin from 1 KB to 100 MB; .zip 1 to 25 MB; .pdf, .png, .jpg at 1, 5 and 10 MB. 1 MB = 1,048,576 bytes.
edge/Empty files, odd names, wrong extensions, truncated and corrupted files, invalid JSON/XML/CSV, password-protected ZIP and PDF
encodings/The same text and the same CSV as UTF-8, UTF-8 with BOM, UTF-16 LE and BE, Latin-1, CRLF and CR line endings; mixed line endings; no final newline

Edge cases

In index.json, deliberately broken files have "broken": true, files whose bytes don't match their extension have actual_type, and the protected files list their password.

index.json

{"name": "files.placeholder.com", "count": 107, "total_size": 296038390,
 "units": "Size labels use binary units: 1 KB = 1,024 bytes, 1 MB = 1,048,576 bytes.",
 "files": [
   {"path": "documents/sample.pdf", "url": "https://files.placeholder.com/documents/sample.pdf",
    "size": 28462, "sha256": "c488dcf5…", "media_type": "application/pdf",
    "category": "documents", "description": "PDF 1.4, 3 pages: text, table and an embedded JPEG."},
   {"path": "edge/png-named.jpg", …, "media_type": "image/jpeg", "actual_type": "image/png"},
   {"path": "edge/truncated.pdf", …, "broken": true},
   …]}
# Download a file and check it is the one you expect
curl -fsSLO https://files.placeholder.com/sizes/5mb.zip
sha256sum 5mb.zip   # compare with index.json

Behaviour