🖼️ PNG images
Lossless with transparency — suited to screenshots, logos and diagrams
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
About PNG images
PNG (Portable Network Graphics) is a lossless image format. Compression never degrades the image, which makes it the right choice for screenshots, logos, diagrams, and anything that needs transparency. Its MIME type is image/png and it starts with the bytes 89 50 4E 47.
Sizes from 10 KB to 100 MB are available. Use them to test upload size limits, to exercise image libraries such as ImageMagick, GD, or Pillow, and to verify upload paths into object storage.
Characteristics of PNG
- Lossless — repeated re-saving never degrades quality, the key difference from JPEG
- Supports transparency through an alpha channel
- Colour depths of 8, 16, 24, and 32 bits
- Memory use scales with decoded pixel count, so a small file at large dimensions still consumes a lot of memory
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.