Compress PNG images

Drop PNGs below and get smaller PNGs back, with transparency intact. Pick Lossless to change nothing, or Smart for the big savings. Up to 16 MB a file as a guest or 32 MB with a free account. Free. No account, no watermark.

  • Stays a PNG
  • Transparency kept
  • Lossless option
Compression Level
None
No compression, only apply settings on image
Lossless
Without any visual change in the image quality
Ultra
Max compression with some quality loss
Smart
Balance between the image quality and compression
Change Format Will allow you to convert images to different extensions
Resize Will allow you to change the width, height or scale of images
Keep EXIF Will allow you to preserve meta data in images
Maximum file size is 16 MB per image and supported formats are: PNG, JPG, JPEG, WEBP, GIF, HEIC, HEIF, TIFF, TIF
Guests get 10 images a day, 10 left today. A free account gets 40 a day.
Delete this image?
The image and its optimized copy will be removed from storage. This cannot be undone.

Rename this image
Choose the name the optimized image downloads with. Its format stays the same.

Uploaded as

Rename the selected images
Each image gets this name and a number, counted in the order they were uploaded. Their formats stay the same.

Share this image
Choose the compression level that suits your images
Level What it promises What happens Pick it when
Lossless
Not one pixel changes in a JPEG, PNG or GIF The file is repacked, never re-encoded. JPEGs get an optimised Huffman table and progressive scan, PNGs a tighter deflate pass, GIFs a lossless gifsicle run. A lossy WebP has no repack step, so it is re-encoded at the highest quality the level allows. A sideways phone JPEG is rotated losslessly on the way through and keeps its colour profile. The one exception to the promise is a PNG or WebP tagged with a wide-gamut profile such as Display P3: its colours are converted to sRGB, so the values change but the picture doesn't. Logos, line art, anything you'll edit again, or when the file is evidence.
Smart
No visible change, targets 40 dB PSNR and a perceptual score of 70 A quality search runs per image and stops at the lowest quality that still clears the PSNR target. That answer is then scored on the SSIMULACRA 2 scale, because an average over every pixel lets a mostly flat picture through at a quality its detail doesn't deserve, and when it falls under 70 the search moves back up until it doesn't. Photos and graphics end up at different qualities because they need different ones; an image that cannot reach the targets inside the quality ceiling is encoded at the ceiling. Almost everything on a website. This is the default for a reason.
Ultra
Smallest file, targets 34 dB PSNR and a perceptual score of 50 The same two-stage search with lower targets. Fine texture softens a little; edges and text stay sharp. Thumbnails, backgrounds, email images, anything shown small or blurred anyway.
None
No compression at all Only the resize, conversion or metadata setting you chose is applied. An untouched upload comes back byte for byte. You only wanted to resize or convert, and quality is someone else's decision.

Measured, not estimated

What compression did to four real PNGs

Two screenshots, a social card and a transparent icon from our showcase, compressed as PNG at each level.

Sample Original Lossless Smart Ultra
Social card 1200 by 630 208 KB PNG 152 KB 27.2% smaller 44 KB 79.1% smaller 36 KB 82.8% smaller
Phone screenshot 1170 by 2532 0.9 MB PNG 745 KB 22.3% smaller 260 KB 72.9% smaller 216 KB 77.5% smaller
App icon 1600 by 1600 113 KB PNG 100 KB 11.6% smaller 19 KB 83% smaller 19 KB 83% smaller
Desktop screenshot 1440 by 900 303 KB PNG 180 KB 40.6% smaller 87 KB 71.4% smaller 78 KB 74.3% smaller

Metadata stripped, no resize. On the icon, Smart and Ultra are the same file. Ultra tries its own colour range, then Smart's, then the full palette, and keeps whichever came out smallest, so it never loses to Smart.

How it works

Two ways to shrink a PNG

The lossless way is repacking. A PNG's pixels are squeezed with deflate, and most software does that quickly, not well. Iminify reruns it with zopfli, a much slower compressor that finds a shorter encoding of the very same pixels. Large files get optipng instead, because zopfli's cost grows with every pixel. Nothing about the image changes either way.

The lossy way is quantisation, and it's where the big numbers come from. A normal PNG can use 16 million colours. pngquant rebuilds it with a palette of at most 256, chosen for that image and dithered where it helps. A screenshot or a logo rarely needs more, and one byte a pixel in place of three or four is a very different file.

pngquant is given a quality range, not a colour count. If it can't reach the bottom of the range it declines to write anything, and the file is repacked losslessly instead. That's how a gradient-heavy PNG avoids visible banding.

What survives

What a PNG keeps when it's compressed

  • Transparency

    Full alpha survives at every level, including partial transparency on anti-aliased edges.

  • Every pixel, at Lossless

    Lossless changes the packing and nothing else. A wide-gamut colour profile is the one exception: it's converted to sRGB.

  • EXIF, when you switch it on

    Rare in PNGs. It's written back as an eXIf chunk if Keep EXIF is on.

  • Animation

    An animated PNG is reduced to its first frame, because neither pngquant nor optipng handles APNG.

When not to

When PNG compression is the wrong tool

  • The PNG is a photograph. It will shrink, but a JPG, WebP or AVIF of it is many times smaller. PNG was never meant for photos.
  • It has smooth gradients and you need them perfect. Use Lossless, not Smart.
  • The format doesn't matter to you. PNG to WebP is smaller than any PNG at the same quality.

How to

Compress a PNG in three steps

  1. 1

    Drop your PNGs

    Change Format stays off, so you get PNGs back.

  2. 2

    Lossless or Smart

    Lossless for source assets. Smart for anything that only has to look right.

  3. 3

    Check, then download

    The difference map in Compare shows exactly which pixels changed, if any.

Questions

PNG compression questions

From the blog

What we've measured so far

We run the encoders on real photos and screenshots and publish the numbers: when WebP beats AVIF, what quality 80 means in each encoder, and how many kilobytes an image on a web page should weigh.

All posts
Bar chart of the resized files WordPress 7.1.2 made on the server and in Chrome: 691 and 640 KB for a 1800 px photo, 1,942 and 2,193 KB for its 6000 px version, 553 and 651 KB for a PNG screenshot.

Does WordPress compress images? What WordPress 7.1 does to your upload

We uploaded the same photo to a fresh WordPress 7.1.2 site twice, both times from Chrome. The file we sent, 832 KB, was stored byte for byte both times. From it WordPress made five resized copies at JPEG quality 82. Through Media > Add Media File those copies came to 691 KB. Through the Upload button on an Image block they came to 640 KB, because in 7.1 that button has the browser make the copies instead of the server. So does WordPress compress images automatically? Not the file you upload, which is stored byte for byte. It re-encodes the resized copies it makes, the JPEG ones at quality 82. In our test a phone and a standard laptop screen downloaded copies of this photo, but a 2x laptop screen got the untouched original, so compressing it is still your job. Since 7.1, which program makes the copies depends on the button you press and the browser you press it in.

8 min read
ComfyUI's Flux Dev example render of a fox-eared girl in a maid dress holding a cake, captioned: 1,215,064-byte PNG to 125,684-byte WebP, and the workflow still loads in ComfyUI.

ComfyUI PNG to JPG loses the workflow. WebP and AVIF can keep it

ComfyUI's Flux Dev example image is a PNG of 1,215,064 bytes, and the two text chunks holding its prompt and workflow take 12,240 of them. The rest is 1024x1024 pixels stored without loss. Across the 92 PNGs in ComfyUI's examples repository that carry a workflow, the text was no more than 3.32 percent of any file, with a median of 0.62 percent. Converting to JPG shrinks the file, but ComfyUI's own loader can't read a workflow back out of a JPG. A WebP or AVIF can keep it, at about a tenth of the size. We took the text-to-image examples of ten models from ComfyUI's examples repository, made smaller copies several ways, and dropped the copies back onto ComfyUI 0.37.0's canvas to see which ones still held the workflow.

6 min read
The fjord photograph from our test set above two bars: 3.07 MB as a PNG and 555 KB as a JPEG at quality 90.

Why is my PNG file so large? Four causes, measured

We took the fjord photograph from our test images, a 1,800 by 1,200 JPEG of 832 KB, and saved the same pixels as a PNG. It came to 3.34 MB at the default setting of Pillow, the Python imaging library. Through zopflipng, a slower lossless compressor, 3.07 MB. As a JPEG at quality 90 it's 555 KB, and it scores 84.22 on a perceptual scale where 80 means an average observer can't see the difference side by side. A photograph was the most expensive of the four causes in the comparisons below. The four: It's a photograph. It has more pixels than it will be shown at. It stores more per pixel than the picture needs: 16 bits per colour channel, or millions of colours where 256 would do. The program that saved it didn't compress it very hard. Each has its own fix, and the fix for one can be wrong for another. A JPEG rescues a photograph. Our desktop screenshot came out bigger as a JPEG than as a PNG through zopflipng.

7 min read

Make your PNGs lighter

Drop a PNG, pick a level and check the difference map before you download.