Sample image files — free download
JPEG, GIF, BMP, TIFF, WEBP, ICO and SVG test images in one place, including an animated GIF, a favicon, both TIFF byte orders, a 32-byte lossless WEBP, and the security cases: an SVG carrying a script, and a JPEG whose magic bytes say something else entirely.
15 ready-made image test files
| File | Size | What it catches | |
|---|---|---|---|
| flat-96x96.webp | 32 bytes | Modern image pipelines. WEBP is a RIFF container, so it starts "RIFF" like a WAV rather than with a signature of its own - the format name sits four bytes later, which signature checks routinely miss. Decodes in every current browser, Pillow and anything built on libwebp. | download |
| transparent-1x1.webp | 32 bytes | Alpha handling and minimum-size assumptions. The alpha channel is half-opaque rather than fully on or off, so a pipeline that flattens transparency shows it immediately. Useful as a tracking-pixel or minimum-upload fixture in the format browsers prefer. | download |
| favicon.ico | 145 bytes | Favicon and icon handling. ICO is a container format, not a single image - parsers that assume one image per file, or that cannot read a PNG-compressed entry, fail here. | download |
| polyglot-gif-html.gif | 192 bytes | Content-type sniffing. If your server serves user uploads without X-Content-Type-Options: nosniff, a browser may sniff this as HTML and execute it from your origin, even though it passed image validation on upload. | download |
| svg-external-entity.svg | 273 bytes | SVG rasterisers backed by a full XML parser with entity resolution left on - a file-disclosure path (XXE) that image-processing code rarely gets audited for. | download |
| svg-plain.svg | 303 bytes | Baseline for the SVG sanitiser cases below - this one must survive sanitisation intact. | download |
| svg-with-script.svg | 457 bytes | The single most commonly missed upload vulnerability: serving user-uploaded SVG from your own origin executes script in your security context. Your handler should either sanitise the markup or serve it with Content-Disposition: attachment and a restrictive CSP. | download |
| gif-static.gif | 774 bytes | Palette/indexed-colour handling. A decoder that assumes truecolour input will mishandle the colour table; the LZW stream also exercises code that many "image" libraries delegate and rarely test. | download |
| jpeg-tiny-16px.jpg | 774 bytes | Decoders with a minimum-dimension assumption, and thumbnail grids that break on an image smaller than the cell. | download |
| fake-jpeg-is-executable.jpg | 2.1 KB | Upload validation that trusts the file extension or the client-supplied Content-Type instead of sniffing actual magic bytes. This is the number one file-upload bypass. | download |
| gif-animated.gif | 2.4 KB | The animation case every static-image test misses. Catches thumbnailers that grab a black first frame, viewers that ignore frame delays, and pipelines that flatten to a single frame silently. Confirm your code reports frame count and honours the infinite-loop marker. | download |
| jpeg-baseline.jpg | 2.8 KB | The single most common image format, and one this corpus can now generate rather than fake. Baseline (not progressive) with real DCT and Huffman coding, so decoders and thumbnailers get a genuine JPEG to chew on. Being lossy, its pixels are close-but-not-identical to the PNG twin - useful for testing perceptual-diff thresholds. | download |
| tiff-rgb-be.tif | 27.2 KB | Byte-order handling. TIFF is the mainstream format that can arrive in either endianness, and readers that assume little-endian silently misread every width, height and offset in the file. | download |
| tiff-rgb-le.tif | 27.2 KB | Scanning, OCR and print pipelines, where TIFF is still the interchange format. Uncompressed and single-strip, so it also exercises readers that only handle tiled or compressed TIFFs. | download |
| bmp-24bit.bmp | 48.1 KB | Decoders that ignore the negative-height convention and render BMPs vertically flipped. Also a size sanity check: uncompressed BMP is far larger than its PNG twin. | download |
Every file is generated from source — no third-party copyright — and each has its own page with a published SHA-256 you can verify after download.
Questions
Where can I download a sample WEBP file?
Two below, both lossless VP8L and both 32 bytes: a flat 96x96 and a 1x1 with a half-transparent pixel. WEBP is worth testing separately because it is a RIFF container, so it begins with the ASCII "RIFF" exactly like a WAV file does and the format name sits four bytes further in. Signature checks that read only the first four bytes get it wrong.
Where can I download a sample TIFF file?
There are two below: one little-endian (II) and one big-endian (MM). TIFF is the only common image format that can be written in either byte order, and a decoder that assumes one of them will read garbage from the other. Both are baseline uncompressed RGB and open in Pillow, ImageMagick and Preview.
Where can I download an animated GIF sample?
The 4-frame looping animated GIF below is generated from source, so it carries no third-party copyright.
Why is SVG a security risk?
SVG is XML and can contain <script>. Serving a user-uploaded SVG from your own origin as image/svg+xml is stored XSS. The SVG-with-script file lets you verify your handling.
What is a polyglot file?
A file that is valid as two formats at once. The GIF/HTML polyglot below is simultaneously a working image and a working HTML page — it defeats validators that check only one of the two.