⚡ Image Compression · Technical Analysis
TinyPNG's 5 MB Ceiling Is Not a Design Choice. It's a Server Bill.
Every time TinyPNG rejects your photo, it's protecting AWS compute costs, not your image quality. Here's what actually happens when you drop a modern camera file on it—and what a browser-native compressor does differently.
Open a fresh iPhone 16 Pro photo in Finder. It's probably 14–18 MB. Drag it to TinyPNG. Processing doesn't start—you see this immediately:
That ceiling isn't about what TinyPNG's algorithm can handle—pngquant can process any size PNG. The limit exists because TinyPNG runs on cloud servers. Decompressing a 48MP ProRAW file on an AWS EC2 instance costs real money per image. At scale, the math only works if large files are paywalled.
This matters because smartphone cameras have crossed 48MP. The average "share-ready" photo from a modern device is already 8–24 MB. TinyPNG's 5 MB free limit was set when 2012-era 8MP cameras were standard.
📐 Live File Size Calculator
Drag to set your file size — see what each tool does
Upgrade required ($39/yr).
No file size ceiling. Free always.
Estimates based on JPEG/PNG at standard quality (80%). Actual output varies by image content.
The science behind TinyPNG (and where it gets complicated)
TinyPNG runs a well-respected open-source tool called pngquant. The algorithm works by scanning every pixel in a 24-bit PNG (which can encode 16.7 million unique colors) and mapping the image down to an 8-bit indexed palette of at most 256 colors, then adding dithering to smooth out the visible transitions.
For the right images, this is genuinely impressive. A flat UI screenshot that uses 40 actual colors drops to a quarter of its weight with zero perceptible difference. An app icon with a transparent drop shadow compresses cleanly because pngquant's alpha dithering is well-optimized for that specific case.
For the wrong images—specifically, continuous-tone photography—the story changes. A sky gradient that transitions from #87CEEB to #4169E1 through thousands of imperceptible steps gets collapsed into whatever 256-color palette pngquant chose. Modern browser canvas engines can handle the same job without palette restriction because they keep the image in full DCT coefficient space (for JPEG) rather than truncating the color model.
If you're here because a photo exceeded TinyPNG's 5MB limit:
Open Shrinkify Image Compressor →No upload · No account · No file size ceiling · Works in your browser tab
Where TinyPNG still holds a genuine edge
This isn't a hit piece. There are real scenarios where TinyPNG's server-side architecture is the right call.
TinyPNG's Photoshop plugin lets agencies compress assets directly from the canvas without opening a browser. If your studio's entire export pipeline runs through Creative Cloud, this is worth paying for.
For 32×32 or 64×64 app icons with soft drop shadows, pngquant's alpha dithering has more tuning than browser canvas implementations. The difference is visible at small sizes.
WordPress and custom CMS backends that auto-compress user uploads server-side need a REST API endpoint, not a browser tab. TinyPNG's API is well-documented and widely used.
Full specification comparison
Questions we get asked about this
Why doesn't Shrinkify have a 5MB limit?
Because there's no server to protect. When your image is compressed in the browser, your own computer's CPU does the work. Shrinkify incurs zero per-image compute costs, so there's no financial reason to impose a file size ceiling. The only real limit is how much RAM your browser tab has available—which for most modern machines is several gigabytes.
Does pngquant's 8-bit output look worse?
It depends entirely on the image. For flat illustrations, logos, and screenshots: no visible difference. For complex photography with smooth gradients, especially skies and skin tones: sometimes yes. The dithering algorithm masks most of it, but on high-resolution displays with good color accuracy, subtle banding can appear. Browser-native JPEG compression doesn't have this issue because it uses DCT coefficients rather than palette indexing.
Is client-side compression safe for private photos?
Yes—by definition. When compression runs in your browser, the image never becomes a network packet. No server ever receives a byte of your photo. The file is read from your disk into browser RAM, the Canvas API renders a compressed version, and that compressed blob is written back to your disk. TinyPNG's process is the inverse: your original file travels to AWS EC2, gets processed, sits in cloud storage for up to an hour for download, then is deleted on a schedule.