# loremfile.dev > Free, CC0, hotlink-friendly sample files and test fixtures for every common file type. Stable URLs, open CORS, byte-range support, SHA-256 manifest. No ads, no signup, no rate-limit keys. ## How to use - Every fixture: https://loremfile.dev/{format}/{name} — see the manifest for all paths. - Machine-readable list of everything: https://loremfile.dev/manifest.json (JSON, includes sha256, bytes, mime, measured properties) - Per-format lists: https://loremfile.dev/{format}/index.json - Verify: https://loremfile.dev/sha256sums.txt ## Formats - Documents: [docx](https://loremfile.dev/docx) (5), [epub](https://loremfile.dev/epub) (1), [pdf](https://loremfile.dev/pdf) (12), [pptx](https://loremfile.dev/pptx) (3), [rtf](https://loremfile.dev/rtf) (1), [xlsx](https://loremfile.dev/xlsx) (6) - Images: [avif](https://loremfile.dev/avif) (1), [bmp](https://loremfile.dev/bmp) (1), [gif](https://loremfile.dev/gif) (2), [ico](https://loremfile.dev/ico) (1), [jpg](https://loremfile.dev/jpg) (9), [png](https://loremfile.dev/png) (8), [svg](https://loremfile.dev/svg) (2), [tiff](https://loremfile.dev/tiff) (1), [webp](https://loremfile.dev/webp) (2) - Video: [avi](https://loremfile.dev/avi) (1), [hls](https://loremfile.dev/hls) (6), [mkv](https://loremfile.dev/mkv) (1), [mov](https://loremfile.dev/mov) (1), [mp4](https://loremfile.dev/mp4) (9), [ogv](https://loremfile.dev/ogv) (1), [ts](https://loremfile.dev/ts) (1), [webm](https://loremfile.dev/webm) (1) - Audio: [aac](https://loremfile.dev/aac) (1), [aiff](https://loremfile.dev/aiff) (1), [flac](https://loremfile.dev/flac) (1), [m4a](https://loremfile.dev/m4a) (1), [mp3](https://loremfile.dev/mp3) (7), [ogg](https://loremfile.dev/ogg) (1), [opus](https://loremfile.dev/opus) (1), [wav](https://loremfile.dev/wav) (2) - Text: [ini](https://loremfile.dev/ini) (1), [log](https://loremfile.dev/log) (2), [md](https://loremfile.dev/md) (2), [srt](https://loremfile.dev/srt) (1), [txt](https://loremfile.dev/txt) (16), [vtt](https://loremfile.dev/vtt) (1) - Web: [css](https://loremfile.dev/css) (1), [har](https://loremfile.dev/har) (1), [html](https://loremfile.dev/html) (4), [ipynb](https://loremfile.dev/ipynb) (1), [js](https://loremfile.dev/js) (1), [webmanifest](https://loremfile.dev/webmanifest) (1) - Data: [arrow](https://loremfile.dev/arrow) (1), [avro](https://loremfile.dev/avro) (1), [csv](https://loremfile.dev/csv) (9), [geojson](https://loremfile.dev/geojson) (1), [gpx](https://loremfile.dev/gpx) (1), [json](https://loremfile.dev/json) (6), [kml](https://loremfile.dev/kml) (1), [kmz](https://loremfile.dev/kmz) (1), [ndjson](https://loremfile.dev/ndjson) (1), [parquet](https://loremfile.dev/parquet) (2), [sql](https://loremfile.dev/sql) (1), [sqlite](https://loremfile.dev/sqlite) (2), [toml](https://loremfile.dev/toml) (1), [tsv](https://loremfile.dev/tsv) (1), [xml](https://loremfile.dev/xml) (3), [yaml](https://loremfile.dev/yaml) (1) - Archives: [7z](https://loremfile.dev/7z) (1), [bz2](https://loremfile.dev/bz2) (1), [gz](https://loremfile.dev/gz) (2), [tar](https://loremfile.dev/tar) (3), [xz](https://loremfile.dev/xz) (1), [zip](https://loremfile.dev/zip) (8), [zst](https://loremfile.dev/zst) (1) - Fonts: [otf](https://loremfile.dev/otf) (1), [ttf](https://loremfile.dev/ttf) (1), [woff](https://loremfile.dev/woff) (1), [woff2](https://loremfile.dev/woff2) (1) - Binary: [bin](https://loremfile.dev/bin) (23), [wasm](https://loremfile.dev/wasm) (1) - Calendar and mail: [eml](https://loremfile.dev/eml) (2), [ics](https://loremfile.dev/ics) (2), [mbox](https://loremfile.dev/mbox) (1), [vcf](https://loremfile.dev/vcf) (2) - Certificates: [der](https://loremfile.dev/der) (1), [pem](https://loremfile.dev/pem) (1) - Edge cases: [edge](https://loremfile.dev/edge) (21) ## Rules - Query strings are ignored. Stay under 30 requests/second per IP. - License: CC0 1.0 for all fixtures. Source: https://github.com/kumarprabhashanand/loremfile ## Fixtures ### 7z | Path | Bytes | Description | Properties | |---|---|---|---| | 7z/3-text-files.7z | 1356 | Three small Lorem Ipsum text files in a 7z archive with LZMA2 compression. | | ### aac | Path | Bytes | Description | Properties | |---|---|---|---| | aac/adts-30s.aac | 490385 | A 440 Hz sine wave, thirty seconds, 48 kHz stereo AAC at 128 kbps as a raw ADTS stream. | 30.042 s, aac | ### aiff | Path | Bytes | Description | Properties | |---|---|---|---| | aiff/3s.aiff | 529254 | A 440 Hz sine wave: three seconds of 44.1 kHz, 16-bit, stereo big-endian PCM. | 3 s, pcm_s16be | ### arrow | Path | Bytes | Description | Properties | |---|---|---|---| | arrow/people-1000.arrow | 260674 | 1,000 rows of the shared people dataset in the Arrow IPC file format (not the stream format), one record batch. | 1,000 rows | ### avi | Path | Bytes | Description | Properties | |---|---|---|---| | avi/640x480-5s.avi | 1734596 | 640x480 at 30 fps, five seconds, MPEG-4 Part 2 video with MP3 audio. | 640x480, 5.04 s, mpeg4, mp3 | ### avif | Path | Bytes | Description | Properties | |---|---|---|---| | avif/640x480.avif | 1284 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, encoded to AVIF with avifenc at speed 6, single-threaded. | 640x480 | ### avro | Path | Bytes | Description | Properties | |---|---|---|---| | avro/people-1000.avro | 109157 | 1,000 rows of the shared people dataset as Avro, deflate-compressed, with the writer schema embedded in the file header. | 1,000 rows | ### bin | Path | Bytes | Description | Properties | |---|---|---|---| | bin/1-byte.bin | 1 | A single NUL byte. The smallest non-empty file, for minimum-size and off-by-one checks. | | | bin/100kb.bin | 100000 | Exactly 100,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/100mb.bin | 100000000 | Exactly 100,000,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/10kb.bin | 10000 | Exactly 10,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/10mb-minus-1.bin | 9999999 | Exactly one byte under 10mb, for testing an upload limit's boundary rather than its middle. | | | bin/10mb-plus-1.bin | 10000001 | Exactly one byte over 10mb, for testing an upload limit's boundary rather than its middle. | | | bin/10mb.bin | 10000000 | Exactly 10,000,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/10mib-minus-1.bin | 10485759 | Exactly one byte under 10mib, for testing an upload limit's boundary rather than its middle. | | | bin/10mib-plus-1.bin | 10485761 | Exactly one byte over 10mib, for testing an upload limit's boundary rather than its middle. | | | bin/10mib.bin | 10485760 | Exactly 10,485,760 bytes of high-entropy SHAKE-256 output (binary units). Incompressible, so transfer sizes are honest. | | | bin/1kb.bin | 1000 | Exactly 1,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/1kib.bin | 1024 | Exactly 1,024 bytes of high-entropy SHAKE-256 output (binary units). Incompressible, so transfer sizes are honest. | | | bin/1mb-minus-1.bin | 999999 | Exactly one byte under 1mb, for testing an upload limit's boundary rather than its middle. | | | bin/1mb-plus-1.bin | 1000001 | Exactly one byte over 1mb, for testing an upload limit's boundary rather than its middle. | | | bin/1mb.bin | 1000000 | Exactly 1,000,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/1mib-minus-1.bin | 1048575 | Exactly one byte under 1mib, for testing an upload limit's boundary rather than its middle. | | | bin/1mib-plus-1.bin | 1048577 | Exactly one byte over 1mib, for testing an upload limit's boundary rather than its middle. | | | bin/1mib.bin | 1048576 | Exactly 1,048,576 bytes of high-entropy SHAKE-256 output (binary units). Incompressible, so transfer sizes are honest. | | | bin/50mb.bin | 50000000 | Exactly 50,000,000 bytes of high-entropy SHAKE-256 output (decimal units). Incompressible, so transfer sizes are honest. | | | bin/incrementing-1mb.bin | 1000000 | One megabyte of 0x00-0xFF repeating. Every byte value appears and any offset is obvious by eye, which makes range requests easy to check. | | | bin/ones-1mb.bin | 1000000 | One megabyte of 0xFF bytes. | | | bin/zeros-10mb.bin | 10000000 | Ten megabytes of NUL bytes, for compression and sparse-file behaviour. | | | bin/zeros-1mb.bin | 1000000 | One megabyte of NUL bytes. Compresses to almost nothing, which is the point. | | ### bmp | Path | Bytes | Description | Properties | |---|---|---|---| | bmp/24bit-256x256.bmp | 196662 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, uncompressed 24-bit BMP. | 256x256 | ### bz2 | Path | Bytes | Description | Properties | |---|---|---|---| | bz2/lorem-1mb.txt.bz2 | 151824 | Exactly 1,000,000 bytes of Lorem Ipsum compressed as a single bzip2 stream, so the compression ratio is that of ordinary text. | | ### css | Path | Bytes | Description | Properties | |---|---|---|---| | css/basic.css | 579 | A small stylesheet with custom properties, a grid layout, a media query for dark mode and a feature query. | | ### csv | Path | Bytes | Description | Properties | |---|---|---|---| | csv/10mb.csv | 9749583 | About 10MB of people rows, fitted to within 5% of the nominal size. Still a prefix of the same dataset. | 38,461 rows | | csv/1mb.csv | 965447 | About 1MB of people rows, fitted to within 5% of the nominal size. Still a prefix of the same dataset. | 3,846 rows | | csv/people-10-quoted-commas.csv | 2706 | Ten people rows where the bio field contains a comma inside a quoted field. The field-level twin of people-10-quoted-newlines.csv: that one breaks splitting on lines, this one breaks splitting on commas. | 10 rows | | csv/people-10-quoted-newlines.csv | 2697 | Ten people rows where the bio field contains a real newline inside a quoted field, which is where line-by-line splitting goes wrong. | 10 rows | | csv/people-10-semicolon.csv | 2679 | The same ten people rows delimited by semicolons, as European locales export. | 10 rows | | csv/people-10-utf8-bom.csv | 2682 | Ten people rows preceded by a UTF-8 byte-order mark, which many CSV readers leave attached to the first column name. | 10 rows | | csv/people-10.csv | 2679 | 10 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-10 fixture. | 10 rows | | csv/people-1000.csv | 249645 | 1,000 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-1000 fixture. | 1,000 rows | | csv/people-100k.csv | 25395296 | 100,000 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-100k fixture. | 100,000 rows | ### der | Path | Bytes | Description | Properties | |---|---|---|---| | der/self-signed-ed25519-cert.der | 359 | The self-signed Ed25519 certificate for fixture.example in binary DER encoding, byte for byte the same certificate as the PEM fixture. | | ### docx | Path | Bytes | Description | Properties | |---|---|---|---| | docx/10mb.docx | 10110885 | About 10MB: one Lorem Ipsum paragraph per embedded incompressible seeded-noise PNG, so the size is honest rather than padded. | | | docx/1mb.docx | 1024867 | About 1MB: one Lorem Ipsum paragraph per embedded incompressible seeded-noise PNG, so the size is honest rather than padded. | | | docx/1page.docx | 37209 | 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. | | | docx/with-images.docx | 41377 | Two published PNG fixtures embedded as pictures, read from the bytes that were actually published rather than regenerated. | | | docx/with-table.docx | 37092 | A ten-row table of the shared people dataset with a bold header row, in the Table Grid style. | | ### edge | Path | Bytes | Description | Properties | |---|---|---|---| | edge/csv-ragged-rows.csv | 65 | A CSV whose rows carry different field counts: one short, one long. | invalid-syntax, varies | | edge/gif-zip-polyglot.gif | 200 | One file that is a valid GIF image and a valid zip archive at once: the archive is everything after the GIF trailer. Scanners and proxies sometimes refuse polyglots outright — see the notes on the page. | polyglot, varies | | edge/jpg-truncated-50pct.jpg | 7496 | The first half of jpg/640x480.jpg: scan data ends with no end-of-image marker. | truncated, may-recover | | edge/json-bom.json | 80 | Valid JSON preceded by a UTF-8 byte-order mark, which RFC 8259 does not allow. | bom, varies | | edge/json-trailing-comma.json | 64 | JSON with a trailing comma in an array and an object: valid JavaScript, invalid JSON. | invalid-syntax, must-fail | | edge/mp4-truncated-50pct.mp4 | 987287 | The first half of mp4/720p-5s.mp4: a partial media stream inside a box that claims more. | truncated, may-recover | | edge/pdf-truncated-60pct.pdf | 2610 | The first 60% of pdf/a4-3pages.pdf: the header reads, then the file stops mid-object. | truncated, may-recover | | edge/pdf-with-png-extension.png | 1795 | The bytes of pdf/a4-1page.pdf under a .png name, served as image/png. | mismatched-extension, varies | | edge/pdf-zip-polyglot.pdf | 800 | One file that is a valid PDF and a valid zip archive at once: a PDF reader shows a page, a zip reader extracts readme.txt. Scanners and proxies sometimes refuse polyglots outright — see the notes on the page. | polyglot, varies | | edge/png-with-pdf-extension.pdf | 1387 | The bytes of png/100x100.png under a .pdf name, served as application/pdf. | mismatched-extension, varies | | edge/utf8-invalid-bytes.txt | 143 | Text served as UTF-8 that contains byte sequences UTF-8 does not allow. | invalid-encoding, may-recover | | edge/xml-unclosed-tag.xml | 122 | XML with an element that is never closed, so it is not well-formed. | invalid-syntax, must-fail | | edge/zero-byte.csv | 0 | An empty file served as text/csv, with no header row. | zero-byte, must-fail | | edge/zero-byte.json | 0 | An empty file served as application/json, where a parser expects at least a value. | zero-byte, must-fail | | edge/zero-byte.mp4 | 0 | An empty file served as video/mp4. | zero-byte, must-fail | | edge/zero-byte.pdf | 0 | An empty file served as application/pdf. | zero-byte, must-fail | | edge/zero-byte.png | 0 | An empty file served as image/png. | zero-byte, must-fail | | edge/zero-byte.txt | 0 | An empty file served as text/plain. | zero-byte, varies | | edge/zero-byte.zip | 0 | An empty file served as application/zip, with not even an end-of-central-directory record. | zero-byte, must-fail | | edge/zip-directory-traversal-name.zip | 782 | A readable zip holding an entry named ../evil.txt. An extractor that joins entry names to a destination without sanitising them writes outside that directory. | hostile-name, varies | | edge/zip-truncated-50pct.zip | 911 | The first half of zip/3-text-files.zip: local headers survive, the central directory does not. | truncated, may-recover | ### eml | Path | Bytes | Description | Properties | |---|---|---|---| | eml/plain-text.eml | 1531 | A single text/plain message: the simplest thing a mail parser has to read, with a fixed date and Message-ID. | | | eml/with-attachments.eml | 4089 | A message carrying two published fixtures as attachments, a PDF and a PNG, read from the bytes that were published. | | ### epub | Path | Bytes | Description | Properties | |---|---|---|---| | epub/epub3-3chapters.epub | 4871 | EPUB 3.0: three XHTML chapters of Lorem Ipsum, a nav document with a table of contents, and a stylesheet. Identifier and modification date are fixed, so the bytes never move. | 3 chapters | ### flac | Path | Bytes | Description | Properties | |---|---|---|---| | flac/sine-440hz-30s.flac | 411820 | A 440 Hz sine wave, thirty seconds, 48 kHz stereo, losslessly compressed. | 30 s, flac | ### geojson | Path | Bytes | Description | Properties | |---|---|---|---| | geojson/points-100.geojson | 35344 | A FeatureCollection of 100 Point features with names, categories, elevations and timestamps, inside a bounding box over the South Atlantic. | 100 features, utf-8, LF | ### gif | Path | Bytes | Description | Properties | |---|---|---|---| | gif/1x1.gif | 43 | A single-pixel GIF: the smallest useful image of this format. | 1x1 | | gif/animated-10frames-256x256.gif | 37550 | An animated GIF of 10 frames at 100 ms, looping forever. | 256x256, 10 frames | ### gpx | Path | Bytes | Description | Properties | |---|---|---|---| | gpx/track-100-points.gpx | 12873 | A GPX 1.1 track of 100 points in one segment, each with an elevation and a monotonic timestamp. | utf-8, LF | ### gz | Path | Bytes | Description | Properties | |---|---|---|---| | gz/lorem-1mb.txt.gz | 252288 | Exactly 1,000,000 bytes of Lorem Ipsum compressed as a single gzip stream, so the compression ratio is that of ordinary text. | | | gz/multi-member-3.gz | 839 | Three gzip members concatenated into one file, which a reader must decompress to the end to read in full. | | ### har | Path | Bytes | Description | Properties | |---|---|---|---| | har/simple-3-requests.har | 3636 | One page and three requests — a document, a stylesheet and an image — with fixed start times and timings. | 1 pages | ### hls | Path | Bytes | Description | Properties | |---|---|---|---| | hls/720p-10s/index.m3u8 | 258 | The media playlist: VOD type, five segments of about two seconds, relative URIs and a closing #EXT-X-ENDLIST. | 5 segments | | hls/720p-10s/seg-000.ts | 819680 | Segment 0 of the 720p HLS stream: H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 2.021 s, h264, aac | | hls/720p-10s/seg-001.ts | 841676 | Segment 1 of the 720p HLS stream: H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 2.059 s, h264, aac | | hls/720p-10s/seg-002.ts | 814792 | Segment 2 of the 720p HLS stream: H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 2.053 s, h264, aac | | hls/720p-10s/seg-003.ts | 834720 | Segment 3 of the 720p HLS stream: H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 2.048 s, h264, aac | | hls/720p-10s/seg-004.ts | 811220 | Segment 4 of the 720p HLS stream: H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 2.069 s, h264, aac | ### html | Path | Bytes | Description | Properties | |---|---|---|---| | html/all-elements.html | 2609 | Semantic sections, a table with a caption and header cells, a form with no action, lists, a figure, and media elements pointing at published fixtures. | | | html/basic.html | 779 | A minimal, valid HTML5 document: a doctype, a declared charset, a heading and two paragraphs. | | | html/with-inline-css.html | 696 | A document whose styles live in a style block rather than an external sheet. | | | html/with-inline-js.html | 947 | A document with one inline script that logs a line and does nothing else. The edge serves it with a sandbox CSP, so a browser runs nothing. | | ### ico | Path | Bytes | Description | Properties | |---|---|---|---| | ico/favicon-16-32-48.ico | 1507 | A favicon containing 16x16, 32x32 and 48x48 images in one file, the shape a real favicon.ico has. | 48x48 | ### ics | Path | Bytes | Description | Properties | |---|---|---|---| | ics/recurring-weekly-rrule.ics | 318 | A weekly series of ten occurrences expressed as one event plus an RRULE, the form a client must expand itself. | | | ics/single-event.ics | 403 | One timed event of an hour with a summary, description and location, in UTC. | | ### ini | Path | Bytes | Description | Properties | |---|---|---|---| | ini/config.ini | 468 | A configuration file with sections, ';' and '#' comments, quoted and empty values, a comma list and non-ASCII characters. | utf-8, LF | ### ipynb | Path | Bytes | Description | Properties | |---|---|---|---| | ipynb/simple-with-outputs.ipynb | 1094 | Three cells — one Markdown, two code — with an execution result and a stdout stream already stored in the file. | | ### jpg | Path | Bytes | Description | Properties | |---|---|---|---| | jpg/100x100.jpg | 4615 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 100x100, quality 85, 4:2:0 chroma subsampling. | 100x100 | | jpg/10mb.jpg | 10006097 | About 10MB of seeded noise at quality 95, 4:4:4 — noise does not compress, so the size is honest. | 1024x4035 | | jpg/1920x1080.jpg | 56817 | 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. | 1920x1080 | | jpg/1mb.jpg | 991379 | About 1MB of seeded noise at quality 95, 4:4:4 — noise does not compress, so the size is honest. | 1024x400 | | jpg/4000x3000.jpg | 279204 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 4000x3000, quality 85, 4:2:0 chroma subsampling. | 4000x3000 | | jpg/640x480.jpg | 14992 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 640x480, quality 85, 4:2:0 chroma subsampling. | 640x480 | | jpg/cmyk-640x480.jpg | 25267 | A CMYK JPEG, the colour space that trips pipelines expecting RGB. | 640x640 | | jpg/exif-orientation-6-640x480.jpg | 16048 | Pixels stored rotated with EXIF orientation 6. The label reads upright only when the viewer honours the tag, so a viewer that ignores EXIF shows it sideways. | 480x640 | | jpg/progressive-1920x1080.jpg | 30994 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, saved as a progressive JPEG rather than baseline. | 1920x1080 | ### js | Path | Bytes | Description | Properties | |---|---|---|---| | js/hello-console.js | 158 | A function and a console.log call. The whole file, so what it can do is obvious at a glance. | | ### json | Path | Bytes | Description | Properties | |---|---|---|---| | json/10mb.json | 9996549 | About 10MB of people objects, fitted to within 5% of the nominal size. | utf-8, LF | | json/1mb.json | 997720 | About 1MB of people objects, fitted to within 5% of the nominal size. | utf-8, LF | | json/all-types.json | 708 | Every JSON scalar shape worth testing: null, booleans, negative zero, exponents, integers beyond 2^53 and 2^63, unicode escapes, a surrogate pair, and empty containers. | utf-8, LF | | json/nested-100-levels.json | 1380 | An object nested 100 levels deep, for parsers with a recursion limit. | utf-8, LF | | json/people-10.json | 5186 | An array of 10 people objects, pretty-printed with two-space indentation. | utf-8, LF | | json/people-1000.json | 512687 | An array of 1,000 people objects, pretty-printed with two-space indentation. | utf-8, LF | ### kml | Path | Bytes | Description | Properties | |---|---|---|---| | kml/placemarks-10.kml | 2394 | A KML 2.2 document with ten Point placemarks, each with a name and description. | utf-8, LF | ### kmz | Path | Bytes | Description | Properties | |---|---|---|---| | kmz/placemarks-10.kmz | 790 | Ten Point placemarks zipped as KMZ, with doc.kml as the first entry as the format expects. | | ### log | Path | Bytes | Description | Properties | |---|---|---|---| | log/json-lines-app-1000.log | 167666 | 1,000 application log records, one JSON object per line. | utf-8, LF | | log/nginx-access-1000-lines.log | 110093 | 1,000 nginx combined-format access lines with fixed timestamps and RFC 5737 documentation IP addresses. | utf-8, LF | ### m4a | Path | Bytes | Description | Properties | |---|---|---|---| | m4a/aac-30s.m4a | 486931 | A 440 Hz sine wave, thirty seconds, 48 kHz stereo AAC at 128 kbps in an MP4 container. | 30 s, aac | ### mbox | Path | Bytes | Description | Properties | |---|---|---|---| | mbox/3-messages.mbox | 2922 | Three plain-text messages separated by `From ` lines, each with a fixed date and Message-ID. | | ### md | Path | Bytes | Description | Properties | |---|---|---|---| | md/all-elements.md | 920 | Markdown exercising every common element: headings, emphasis, ordered and nested lists, a table, fenced code blocks with languages, a blockquote, a link, an image, a footnote and a raw HTML block. | utf-8, LF | | md/readme-style.md | 4096 | A README-shaped Markdown document of exactly 4,096 bytes. | utf-8, LF | ### mkv | Path | Bytes | Description | Properties | |---|---|---|---| | mkv/720p-5s.mkv | 1971254 | 1280x720 at 30 fps, five seconds, H.264 plus AAC in Matroska. | 1280x720, 5.021 s, h264, aac | ### mov | Path | Bytes | Description | Properties | |---|---|---|---| | mov/720p-5s.mov | 1974629 | 1280x720 at 30 fps, five seconds, H.264 plus AAC in a QuickTime container. | 1280x720, 5 s, h264, aac | ### mp3 | Path | Bytes | Description | Properties | |---|---|---|---| | mp3/10mb.mp3 | 9950996 | About 10MB of 440 Hz sine at a constant 128 kbps — roughly ten minutes of audio. | 621.912 s, mp3 | | mp3/1mb.mp3 | 996116 | About 1MB of 440 Hz sine at a constant 128 kbps, so the duration follows from the size rather than the other way round. | 62.232 s, mp3 | | mp3/silence-5s.mp3 | 81044 | Five seconds of digital silence — a valid MP3 with nothing in it, for code that treats silence as failure. | 5.04 s, mp3 | | mp3/sine-440hz-30s.mp3 | 480788 | A 440 Hz sine wave, thirty seconds, 128 kbps stereo — long enough to test seeking and scrubbing. | 30.024 s, mp3 | | mp3/sine-440hz-3s.mp3 | 48788 | A 440 Hz sine wave, three seconds, 128 kbps stereo. The smallest useful audio sample. Measured duration is 3024 ms: an MP3 frame holds 1152 samples, so the encoder rounds up to a whole frame. | 3.024 s, mp3 | | mp3/stereo-lr-5s.mp3 | 81044 | 440 Hz in the left channel, 880 Hz in the right. If your pipeline swaps or downmixes channels, this is the file that shows it. | 5.04 s, mp3 | | mp3/with-id3v2-tags-3s.mp3 | 51480 | Three seconds of 440 Hz carrying ID3v2.3 tags — title, artist, album, year and a PNG cover image taken from the published 100x100 fixture. | 100x100, 3.024 s, png, mp3 | ### mp4 | Path | Bytes | Description | Properties | |---|---|---|---| | mp4/1080p-10s.mp4 | 7829049 | 1920x1080 at 30 fps, ten seconds, H.264 plus AAC. | 1920x1080, 10 s, h264, aac | | mp4/10mb.mp4 | 10062489 | About 10MB: 1280x720 at 30 fps for sixty seconds, two-pass at a flat bitrate. | 1280x720, 60 s, h264, aac | | mp4/1mb.mp4 | 979114 | About 1MB: 1280x720 at 30 fps for ten seconds, two-pass at a flat bitrate so the size is met by the encoder rather than by padding. | 1280x720, 10 s, h264, aac | | mp4/360p-5s.mp4 | 577525 | 640x360 at 30 fps, five seconds, H.264 plus AAC. The small one, for quick tests. | 640x360, 5 s, h264, aac | | mp4/50mb.mp4 | 50081140 | About 50MB: 1280x720 at 30 fps for two minutes, two-pass at a flat bitrate. The largest video in the launch set. | 1280x720, 120 s, h264, aac | | mp4/720p-5s.mp4 | 1974574 | 1280x720 at 30 fps, five seconds, H.264 plus AAC. The default sample if you need just one. | 1280x720, 5 s, h264, aac | | mp4/h264-baseline-720p-5s.mp4 | 2085508 | H.264 Baseline profile at level 3.0 — the constrained profile old devices and some hardware decoders need. | 1280x720, 5 s, h264, aac | | mp4/no-audio-720p-5s.mp4 | 1890893 | 1280x720 with no audio track at all — for code paths that assume every video has one. | 1280x720, 5 s, h264 | | mp4/vertical-1080x1920-5s.mp4 | 4286625 | Portrait 1080x1920, the shape phones record and social apps expect. Five seconds. | 1080x1920, 5 s, h264, aac | ### ndjson | Path | Bytes | Description | Properties | |---|---|---|---| | ndjson/people-1000.ndjson | 408525 | 1,000 people objects, one compact JSON object per line. | utf-8, LF | ### ogg | Path | Bytes | Description | Properties | |---|---|---|---| | ogg/vorbis-30s.ogg | 95083 | A 440 Hz sine wave, thirty seconds, 48 kHz stereo Vorbis at quality 4. | 30 s, vorbis | ### ogv | Path | Bytes | Description | Properties | |---|---|---|---| | ogv/720p-5s.ogv | 3801030 | 1280x720 at 30 fps, five seconds, Theora video with Vorbis audio. | 1280x720, 5 s, theora, vorbis | ### opus | Path | Bytes | Description | Properties | |---|---|---|---| | opus/30s.opus | 431592 | A 440 Hz sine wave, thirty seconds, stereo Opus at 96 kbps. | 30.006 s, opus | ### otf | Path | Bytes | Description | Properties | |---|---|---|---| | otf/loremfile-sans.otf | 4268 | The Loremfile Sans family as OpenType with CFF outlines: 95 printable ASCII glyphs drawn as rectangles of varying width, with fixed head timestamps and an unrestricted embedding permission. | | ### parquet | Path | Bytes | Description | Properties | |---|---|---|---| | parquet/people-1000.parquet | 114469 | 1,000 rows of the shared people dataset as Parquet, snappy-compressed, in a single row group. The same rows as every other people fixture. | 1,000 rows | | parquet/people-100k.parquet | 9756012 | 100,000 rows of the shared people dataset as Parquet, snappy-compressed, in a single row group. The same rows as every other people fixture. | 100,000 rows | ### pdf | Path | Bytes | Description | Properties | |---|---|---|---| | pdf/10mb.pdf | 9924917 | About 10MB: A4 pages each embedding one incompressible seeded-noise JPEG plate, so the size is honest rather than padded. | 42 pages | | pdf/1mb.pdf | 976137 | About 1MB: A4 pages each embedding one incompressible seeded-noise JPEG plate, so the size is honest rather than padded. | 4 pages | | pdf/a4-10pages.pdf | 11246 | A4 portrait, 10 pages of Lorem Ipsum in the Helvetica core font with page numbers. No embedded fonts. | 10 pages | | pdf/a4-1page.pdf | 1795 | A4 portrait, 1 page of Lorem Ipsum in the Helvetica core font. No embedded fonts. | 1 pages | | pdf/a4-3pages.pdf | 4351 | A4 portrait, 3 pages of Lorem Ipsum in the Helvetica core font with page numbers. No embedded fonts. | 3 pages | | pdf/a4-encrypted-1page.pdf | 1875 | AES-128 encrypted. User password 'loremfile', owner password 'loremfile-owner' - both are published here on purpose, because an encrypted fixture nobody can open would be useless. Printing and copying are permitted. | 1 pages, encrypted | | pdf/a4-landscape-1page.pdf | 1682 | A4 landscape, one page — the page box is wider than it is tall. | 1 pages | | pdf/a4-with-images-2pages.pdf | 27542 | Two pages, each embedding a published image fixture: the 640x480 PNG and the 640x480 JPEG. Built from the published bytes, not regenerated. | 2 pages | | pdf/a4-with-table-1page.pdf | 2059 | One page holding a ten-row table of the shared people dataset. | 1 pages | | pdf/blank-1page.pdf | 966 | A structurally valid PDF with one page and no content at all. | 1 pages | | pdf/letter-1page.pdf | 1860 | US Letter portrait, one page. Same content as the A4 fixture, different page box. | 1 pages | | pdf/minimal.pdf | 586 | The smallest structurally valid PDF this catalog offers: one page, the word 'Hello', a hand-written cross-reference table and nothing else. | 1 pages | ### pem | Path | Bytes | Description | Properties | |---|---|---|---| | pem/self-signed-ed25519-cert.pem | 542 | A self-signed Ed25519 certificate for fixture.example, valid from 2020 to 2120, with a fixed serial. Ed25519 signs deterministically, so the bytes never move. | | ### png | Path | Bytes | Description | Properties | |---|---|---|---| | png/100x100.png | 1387 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 100x100, RGB. | 100x100 | | png/1920x1080.png | 11110 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 1920x1080, RGB. | 1920x1080 | | png/1mb.png | 1000147 | About 1 MB of seeded RGB noise. Incompressible, so the size is honest. | 1024x325 | | png/1x1.png | 69 | A single white pixel: the smallest useful PNG. | 1x1 | | png/640x480.png | 4208 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode. 640x480, RGB. | 640x480 | | png/animated-apng-10frames-128x128.png | 9083 | An animated PNG of 10 frames at 100 ms, the colour bars rotating one step per frame so the animation is obviously running. | 128x128, 10 frames | | png/grayscale-512x512.png | 1881 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, converted to 8-bit greyscale. | 512x512 | | png/transparent-256x256.png | 3231 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, with a horizontal alpha ramp so transparency is visible rather than uniform. | 256x256 | ### pptx | Path | Bytes | Description | Properties | |---|---|---|---| | pptx/10slides.pptx | 37736 | Ten 16:9 title-and-content slides of Lorem Ipsum, each with its own title. | 10 slides | | pptx/1mb.pptx | 1028118 | About 1MB: one slide per embedded incompressible seeded-noise PNG, each with a speaker note, so the size is honest rather than padded. | 5 slides | | pptx/1slide.pptx | 28621 | A single 16:9 title-and-content slide of Lorem Ipsum. | 1 slides | ### rtf | Path | Bytes | Description | Properties | |---|---|---|---| | rtf/simple.rtf | 1694 | Three paragraphs of Lorem Ipsum in Times New Roman. Every byte is ASCII, so no reader has to guess an encoding. | utf-8, LF | ### sql | Path | Bytes | Description | Properties | |---|---|---|---| | sql/people-1000-inserts-portable.sql | 429863 | One CREATE TABLE and 1,000 INSERT statements for the shared people dataset, using only syntax that every major database accepts. | utf-8, LF | ### sqlite | Path | Bytes | Description | Properties | |---|---|---|---| | sqlite/multi-table-with-fk-indexes-views.sqlite | 131072 | Four tables with a foreign key from orders to people, two indexes, a view aggregating order totals, and an insert trigger. What a schema inspector should be tested against. | | | sqlite/people-1000.sqlite | 270336 | A single table holding 1,000 rows of the shared people dataset. Page size 4096, journal mode DELETE, vacuumed so the file is byte-stable. | | ### srt | Path | Bytes | Description | Properties | |---|---|---|---| | srt/3-cues.srt | 268 | Three consecutive cues of three seconds each, the smallest useful subtitle file. | utf-8 | ### svg | Path | Bytes | Description | Properties | |---|---|---|---| | svg/simple-shapes.svg | 683 | A rectangle, a circle and a polyline path with explicit width and height attributes. No script, no external references. | 200x200, utf-8, LF | | svg/with-embedded-png.svg | 3370 | An SVG whose only raster content is a PNG data URI, so nothing is fetched from the network when it renders. | 200x200, utf-8, LF | ### tar | Path | Bytes | Description | Properties | |---|---|---|---| | tar/3-text-files.tar | 10240 | Three small Lorem Ipsum text files in an uncompressed tar, every entry owned by uid 0 with a fixed timestamp. | | | tar/3-text-files.tar.gz | 1152 | The same three text files, gzip-compressed: the .tar.gz that most tooling means by 'a tarball'. | | | tar/3-text-files.tar.xz | 1268 | The same three text files, xz-compressed. | | ### tiff | Path | Bytes | Description | Properties | |---|---|---|---| | tiff/rgb-640x480.tiff | 921740 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, uncompressed RGB TIFF. | 640x480 | ### toml | Path | Bytes | Description | Properties | |---|---|---|---| | toml/config.toml | 751 | Tables, nested tables, an array of tables, multi-line basic and literal strings, underscored integers, and offset, local, date and time values. | utf-8, LF | ### ts | Path | Bytes | Description | Properties | |---|---|---|---| | ts/720p-5s.ts | 2054840 | 1280x720 at 30 fps, five seconds, H.264 plus AAC in an MPEG-2 transport stream. | 1280x720, 5.021 s, h264, aac | ### tsv | Path | Bytes | Description | Properties | |---|---|---|---| | tsv/people-1000.tsv | 249645 | 1,000 rows of the shared people dataset, tab-delimited, with a header row. | 1,000 rows | ### ttf | Path | Bytes | Description | Properties | |---|---|---|---| | ttf/loremfile-sans.ttf | 5616 | The Loremfile Sans family as TrueType: 95 printable ASCII glyphs drawn as rectangles of varying width, with fixed head timestamps and an unrestricted embedding permission. | | ### txt | Path | Bytes | Description | Properties | |---|---|---|---| | txt/crlf.txt | 8981 | 100 lines of Lorem Ipsum with Windows (CRLF) line endings. | utf-8, CRLF | | txt/emoji-only.txt | 1488 | Nothing but emoji sequences, including ZWJ families and skin-tone modifiers. | utf-8, LF | | txt/latin1.txt | 1151 | Western European text encoded as ISO-8859-1, not UTF-8. | iso-8859-1, LF | | txt/lf.txt | 9039 | 100 lines of Lorem Ipsum with Unix (LF) line endings. | utf-8, LF | | txt/lorem-100kb.txt | 100000 | Exactly 100,000 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/lorem-10mb.txt | 10000000 | Exactly 10,000,000 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/lorem-10mib.txt | 10485760 | Exactly 10,485,760 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/lorem-1kb.txt | 1000 | Exactly 1,000 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/lorem-1mb.txt | 1000000 | Exactly 1,000,000 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/lorem-1mib.txt | 1048576 | Exactly 1,048,576 bytes of Lorem Ipsum, LF line endings, cut at a word boundary and space-padded before the final newline. | utf-8, LF | | txt/shift-jis.txt | 1709 | Japanese pseudo-text encoded as Shift-JIS; every character is representable in that charset. | shift_jis, LF | | txt/utf16le-bom.txt | 2788 | UTF-16 little-endian text with a byte-order mark. | utf-16 with BOM, LF | | txt/utf8-bom.txt | 1437 | UTF-8 text preceded by a byte-order mark, which many parsers mishandle. | utf-8 with BOM, LF | | txt/utf8-multilingual.txt | 1308 | One line per script — Latin, Greek, Cyrillic, Arabic, Hebrew, Devanagari, Thai, CJK, Hangul — plus emoji, combining marks, bidi controls and unusual space characters. | utf-8, LF | | txt/very-long-line-1mb.txt | 1000000 | A single line of exactly 1,000,000 bytes, for tools that read a whole line into memory. | utf-8, LF | | txt/windows-1252.txt | 1606 | Text encoded as Windows-1252, the charset mislabelled as Latin-1 most often. | windows-1252, LF | ### vcf | Path | Bytes | Description | Properties | |---|---|---|---| | vcf/vcard3-single.vcf | 421 | A vCard 3.0 contact with a name, organisation, email, telephone, URL and note. | | | vcf/vcard4-single.vcf | 384 | A vCard 4.0 contact using the typed, URI-shaped properties RFC 6350 introduced. | | ### vtt | Path | Bytes | Description | Properties | |---|---|---|---| | vtt/3-cues.vtt | 251 | The WEBVTT signature and three plain cues: what a track element needs and nothing more. | | ### wasm | Path | Bytes | Description | Properties | |---|---|---|---| | wasm/minimal-add.wasm | 41 | A minimal module exporting add(i32, i32) -> i32: enough for a host to instantiate it and call the export, and nothing more. | | ### wav | Path | Bytes | Description | Properties | |---|---|---|---| | wav/10mb.wav | 10000000 | Exactly 10,000,000 bytes: a 44-byte header plus 2,499,989 frames of 44.1 kHz 16-bit stereo sine. Not approximately — exactly. | 56.689 s, pcm_s16le | | wav/sine-440hz-3s-44k-16bit-stereo.wav | 529244 | A 440 Hz sine wave: three seconds of 44.1 kHz, 16-bit, stereo PCM — CD format, and what most software assumes a WAV is. | 3 s, pcm_s16le | ### webm | Path | Bytes | Description | Properties | |---|---|---|---| | webm/720p-5s-vp9.webm | 621241 | 1280x720 at 30 fps, five seconds, VP9 video with Opus audio. | 1280x720, 5.008 s, vp9, opus | ### webmanifest | Path | Bytes | Description | Properties | |---|---|---|---| | webmanifest/site.webmanifest | 542 | A manifest with a name, short name, start URL, scope, display mode, colours and two icons that point at published PNG fixtures. | | ### webp | Path | Bytes | Description | Properties | |---|---|---|---| | webp/alpha-256x256.webp | 1168 | A lossless WebP with an alpha ramp. | 256x256 | | webp/lossy-640x480.webp | 2834 | A colour-bar test card with a border, centre cross and a label giving the dimensions and mode, saved as lossy WebP at quality 80. | 640x480 | ### woff | Path | Bytes | Description | Properties | |---|---|---|---| | woff/loremfile-sans.woff | 1848 | The Loremfile Sans family as WOFF, the web font wrapper: 95 printable ASCII glyphs drawn as rectangles of varying width, with fixed head timestamps and an unrestricted embedding permission. | | ### woff2 | Path | Bytes | Description | Properties | |---|---|---|---| | woff2/loremfile-sans.woff2 | 1072 | The Loremfile Sans family as WOFF2, the Brotli-compressed web font: 95 printable ASCII glyphs drawn as rectangles of varying width, with fixed head timestamps and an unrestricted embedding permission. | | ### xlsx | Path | Bytes | Description | Properties | |---|---|---|---| | xlsx/10mb.xlsx | 10081121 | About 10MB: a people sheet plus a second sheet of embedded incompressible seeded-noise PNGs, so the size is honest rather than padded. | 2 sheets, 52 rows | | xlsx/1mb.xlsx | 994556 | About 1MB: a people sheet plus a second sheet of embedded incompressible seeded-noise PNGs, so the size is honest rather than padded. | 2 sheets, 6 rows | | xlsx/1sheet-1000rows.xlsx | 156719 | 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. | 1 sheets, 1,001 rows | | xlsx/1sheet-10rows.xlsx | 7150 | One sheet: a bold, frozen header row plus ten records of the shared people dataset across all fourteen columns. | 1 sheets, 11 rows | | xlsx/with-formulas.xlsx | 5489 | SUM, AVERAGE, IF and VLOOKUP over a ten-line order table, each with its result cached in the file. Readers that do not calculate — pandas, openpyxl's data_only mode — still see the values. | 1 sheets, 11 rows | | xlsx/with-types-and-formats.xlsx | 5516 | One row per cell type and number format: text, integer, float, negative, booleans, date, time, datetime, percentage, currency, scientific, an empty cell, and text that only looks numeric ('007', '2020-01-01', a phone number). | 1 sheets, 17 rows | ### xml | Path | Bytes | Description | Properties | |---|---|---|---| | xml/people-10.xml | 5843 | Ten people records as elements, one child element per column. | utf-8, LF | | xml/rss2-feed.xml | 4036 | An RSS 2.0 feed with ten items and fixed publication dates. | utf-8, LF | | xml/with-namespaces.xml | 913 | A default namespace, two prefixed namespaces, a namespaced attribute and xml:lang. | utf-8, LF | ### xz | Path | Bytes | Description | Properties | |---|---|---|---| | xz/lorem-1mb.txt.xz | 198972 | Exactly 1,000,000 bytes of Lorem Ipsum compressed as a single xz stream, so the compression ratio is that of ordinary text. | | ### yaml | Path | Bytes | Description | Properties | |---|---|---|---| | yaml/config-all-types.yaml | 1091 | Anchors, aliases and a merge key, two documents in one stream, literal and folded block scalars, and every scalar type including .inf, .nan, dates and timestamps. | utf-8, LF | ### zip | Path | Bytes | Description | Properties | |---|---|---|---| | zip/100mb.zip | 99030316 | About 100MB of incompressible seeded noise in one member, the largest archive in the launch set. | | | zip/10mb.zip | 9993166 | About 10MB of incompressible seeded noise in one member. | | | zip/1mb.zip | 999421 | About 1MB: one incompressible seeded-noise member, so the archive's size is honest rather than padded. | | | zip/3-text-files.zip | 1822 | Three small Lorem Ipsum text files, deflated, with fixed timestamps and permissions. | | | zip/aes256-password-loremfile.zip | 2064 | AES-256 encrypted with the password 'loremfile', published here on purpose because an encrypted fixture nobody can open would be useless. | encrypted | | zip/empty.zip | 22 | The empty zip: a 22-byte end-of-central-directory record and nothing else. Valid, and rejected by plenty of readers. | | | zip/mixed-fixtures.zip | 5175 | Four published fixtures in one archive: a PDF, a PNG, a CSV and a JSON file, read from the bytes that were published. | | | zip/nested-directories.zip | 1215 | Four entries in a three-level directory tree, for extractors that must create directories. | | ### zst | Path | Bytes | Description | Properties | |---|---|---|---| | zst/lorem-1mb.txt.zst | 239346 | Exactly 1,000,000 bytes of Lorem Ipsum compressed as a single zstd stream, so the compression ratio is that of ordinary text. | |