About

About PicCocoon

A small, single-purpose tool: compress images without handing them to somebody else's server.

Why it runs in the browser

Most free online compressors work the same way: your file is uploaded to a server, processed there, and downloaded back. That is a reasonable trade for a one-off task, but it means handing a copy of your photo to a stranger's computer, and it usually comes with file size caps, queues and an account prompt once you exceed a limit.

Current browsers can already decode, resize and re-encode images. PicCocoon is built on those APIs, so the work happens on the machine that already has the file. Nothing is uploaded, there is no queue, and there is no account, because there is no server-side processing to pay for.

What that costs you

This design is not free of downsides, and it is worth being straight about them:

  • Your device does the work. A large batch of high-resolution photographs will be slower here than on a server with more memory, particularly on a phone.
  • Very large images are refused. A file over 40 MB, or an image over 40 megapixels, is turned away before decoding, because the raw pixel data would not fit in the memory a browser tab is normally given.
  • Animated GIFs are refused. JPG, PNG and WebP are the formats every current browser can both read and write, so those are the three the quality setting applies to. A GIF is accepted when it is a single frame — most GIFs on the web are — and converted to one of those three. An animation is a different problem: a browser can decode a GIF but cannot write one back, so the only option would be keeping the first frame, which silently destroys the file. SVG is a vector and is optimised as text: comments, editor metadata and unused ids are removed, and the drawing is left alone. HEIC and AVIF are not supported.
  • You need a reasonably current browser. The compressor needs the Canvas API and a modern decode path. Anything from the last several years qualifies.

Decisions that were made deliberately

  • Real numbers, always. When a file ends up larger after compression, the tool says so and shows the actual sizes. It does not report a saving that did not happen.
  • No silent resizing. Dimensions change only when you ask them to, and when they do, the result records it.
  • The bytes decide the format. A file's contents are inspected, not its name. A PNG named .jpg is treated as the PNG it really is, and a text file named .png is rejected.
  • Output is verified. After encoding, the result is checked to confirm it really is the format you asked for. Some browsers quietly substitute a different format for WebP; when that happens you get an error rather than a mislabelled file.
  • A slider that does nothing is disabled. PNG is lossless, so the quality control is turned off with an explanation instead of being left to appear functional.
  • No invented statistics. There are no ratings, user counts or promised percentage savings on this site, because no single number could be true for every image.

Technology

Static HTML, CSS and vanilla JavaScript as ES modules. No framework, no build step, no runtime dependencies and no third-party requests. Every image operation uses the browser's own Canvas API. The site is served as plain files, so it runs on an ordinary shared host or behind Nginx with nothing installed beyond a web server.

Privacy

Your images are never uploaded, and the site sets no cookies. The privacy policy describes exactly what is and is not recorded.