🖼️ Image files
Test images in PNG, JPG, WebP and GIF
PNG
102,400 bytes
image/png
104,857,600 bytes
image/png
10,240 bytes
image/png
10,485,760 bytes
image/png
1,048,576 bytes
image/png
26,214,400 bytes
image/png
512,000 bytes
image/png
52,428,800 bytes
image/png
5,242,880 bytes
image/png
JPG
102,400 bytes
image/jpeg
104,857,600 bytes
image/jpeg
10,240 bytes
image/jpeg
10,485,760 bytes
image/jpeg
1,048,576 bytes
image/jpeg
26,214,400 bytes
image/jpeg
512,000 bytes
image/jpeg
52,428,800 bytes
image/jpeg
5,242,880 bytes
image/jpeg
WEBP
102,400 bytes
image/webp
104,857,600 bytes
image/webp
10,240 bytes
image/webp
10,485,760 bytes
image/webp
1,048,576 bytes
image/webp
26,214,400 bytes
image/webp
512,000 bytes
image/webp
52,428,800 bytes
image/webp
5,242,880 bytes
image/webp
GIF
102,400 bytes
image/gif
104,857,600 bytes
image/gif
10,240 bytes
image/gif
10,485,760 bytes
image/gif
1,048,576 bytes
image/gif
26,214,400 bytes
image/gif
512,000 bytes
image/gif
52,428,800 bytes
image/gif
5,242,880 bytes
image/gif
About Image files
Test images are available in four formats — PNG, JPG, WebP and GIF — at sizes from 10 KB to 100 MB. Use them to verify upload features, exercise image libraries, measure transfer speed, and confirm CDN caching behaviour.
Every file lists its MD5, SHA-1 and SHA-256 digests, so you can verify integrity after download or use them as expected values when testing a hashing library. Each detail page also provides ready curl, wget and PowerShell commands.
Pages by image format
- PNG test files — Lossless — for screenshots and transparency handling
- JPG test files — Lossy — for photos and media upload paths
- WebP test files — For browser-support checks and conversion pipelines
- GIF test files — For animation handling and legacy compatibility
Related reference and articles
📖 Where people get stuck
PNG, JPEG, GIF and WebP at sizes from 1 KB to 100 MB, for upload limits, thumbnail pipelines and exercising image libraries. What separates the formats is described above; what trips up an implementation is usually common to all of them.
| Case | What happens | What to do |
|---|---|---|
| A small image exhausts memory | Memory follows decoded pixel count, not file size. A 20 KB PNG at 10,000 by 10,000 pixels asks for roughly 400 MB in RGBA. | Cap dimensions separately from bytes. You can read width and height from the header before decoding — getimagesize() in PHP, or in Pillow right after Image.open() and before load(). |
| Portrait photos display sideways | A camera does not rotate the pixels; it records which way up it was in the EXIF orientation tag. Anything that ignores the tag shows the sensor orientation. | Read the orientation before generating a thumbnail, apply the rotation for real, then clear the tag. Rotating while leaving the tag makes compliant browsers rotate a second time. Inspect a file with the EXIF viewer. |
| A conversion drops the animation and the transparency | A conversion routed through a browser canvas only ever holds one frame, so an animated GIF becomes a still of the first. Convert to JPEG and transparency flattens to white or black. | To keep the animation you need something that understands multiple frames — ImageMagick or libvips rather than a canvas. To keep transparency, target PNG or WebP. |
| A file that looks like an image is not one | Extension and Content-Type are both claims from the sender. An image with other data appended still opens normally in a viewer. |
Check the leading bytes, then re-encode before storing. Decoding and writing back out discards both appended data and embedded metadata. The byte sequences are in the magic bytes reference. |
One exception matters when serving user-submitted images as they arrive: SVG is not an image in the relevant sense. It is a document that can execute script, so serving it from your own origin opens a cross-site scripting path. Serve it from a separate domain, or contain it with Content-Security-Policy and Content-Disposition: attachment.