How do you compress multiple images at once without uploading them?
Drop the whole folder onto a tool that compresses every file inside the browser tab. No server. No queue counter. No 20-image cap. Komprs is built around that answer. You drop a batch, drag one quality slider, watch live before/after previews update across the queue, then download the lot as a zip. The images never leave the page.
Most popular options force a tradeoff. Squoosh keeps the work client-side and gives you a real visual diff, but it handles one file at a time. TinyPNG and iLoveIMG handle batches, but the files travel to a server and you hit a session cap before you finish a product shoot. Komprs covers all three at once: client-side, batch, live visual before/after.
Why "no upload" matters in 2026
The honest reason designers and front-end devs ask for a client-side compressor is not paranoia. It is paperwork.
If you work on client images, internal product photography, or anything labelled "do not redistribute," uploading those files to a third-party compressor opens questions you do not want to answer. Where did they go? Were they retained? Were they used to train anything? GDPR review boards and enterprise security teams have started asking. The simplest defence is to compress the file in a way that is verifiable in the network tab. Open DevTools, drop a file, watch zero requests fire. Komprs is built so that test passes every time. The compression engine runs through OffscreenCanvas inside a Web Worker, so the bytes never touch a server.
The second reason is less ceremonious. You stop fighting hidden caps. TinyPNG limits free users to 20 images per session. Compressor.io limits to 50 per day. Optimizilla limits to 20 at a time and only handles JPEG and PNG. iLoveIMG meters you in credits. Shrink.media wants a signup before you see a pixel. None of those caps exist when the work happens locally. There is no per-user counter to bill against, because there is no user.
What Komprs actually does
Eight features, all working the same loop.
Drop a batch. The drop zone accepts JPEG, PNG, and WebP. Drag the folder, click to browse, or mix valid and invalid types. Invalid files surface an inline error per file and the rest queue normally. There is a 50 MB per-file ceiling, which exists to keep tab memory sane, not to bill you.
Watch the queue render. Each row shows filename, original size, format, and state. Pending becomes ready becomes compressing becomes compressed. Remove anything you added by mistake. The queue scrolls past 10 items on mobile and 20 on desktop without breaking layout.
Move one slider for the entire batch. Quality defaults to 80. Drag it; on release, every queued image re-encodes against the new quality and the displayed size updates within 500 ms on standard hardware. The displayed size is the actual Canvas-encoded output, not a formula estimate. PNG is lossless, so the slider does little for PNGs and the UI says so plainly.
Open a live before/after. Click any queued image. On desktop you get a split-slider; on viewports under 481 px you get a stacked side-by-side. Move the global quality slider with the viewer open and the compressed side updates in place. This is the part Squoosh users miss every time they batch through TinyPNG: a real visual diff while you decide what "good enough" looks like.
Download. Single files come out named [original]-compressed.[ext]. Hit Download All and JSZip (lazy-loaded, so it never slows initial load) builds the bundle in the browser. If only one file is ready, Download All falls through to a normal single-file download. No one-item zip nonsense.
Read the privacy badge. It sits above the drop zone. The copy uses words like "in your browser," "OffscreenCanvas," and "never uploaded" because vague marketing language is the wrong register for a privacy claim. The badge links to a privacy policy that repeats the claim in legal phrasing.
How it compares
| Tool | Client-side | Batch | Visual before/after | WebP output | No signup, no caps |
|---|---|---|---|---|---|
| Squoosh | Yes | No | Yes (single file) | Yes | Yes |
| TinyPNG | No (server) | Yes | No | Yes | 20 per session |
| Compressor.io | No (server) | Yes | No | Yes | 50 per day |
| ImageCompressor.com | Yes | Yes | No (size only) | Yes | Yes |
| Optimizilla | No (server) | Yes (20 max) | No | No | Yes |
| Shrink.media | No (server) | Yes | No | Partial | Signup required |
| ImageOptim | Yes (Mac) | Yes | No | No | Mac only |
| Komprs | Yes | Yes | Yes (visual + size) | Yes | Yes |
Squoosh is still the right pick when you are tuning a single hero image with codec-level controls. TinyPNG is fine if your files are not sensitive and you stay under 20 a session. Komprs is the better pick when you have a batch of product photos, you want a visual diff while you choose quality, and you would rather not negotiate with a security team about where the originals went.
Frequently asked questions
Is it safe to use Komprs for client or business images?
Yes, in the specific sense people usually mean. The compression runs locally via OffscreenCanvas and the Canvas API. Open DevTools, watch the Network tab, drop a file: zero requests fire for image data. PostHog analytics capture byte counts, formats, and engine identifiers. No image contents, no filenames.
What is the best free image compressor with no signup and no limits?
"Best" depends on what you optimise for. If you want batch plus a visual diff plus client-side, Komprs is the only tool currently offering all three. If you want maximum codec control on a single file, Squoosh. If your files are not sensitive and 20 per session is enough, TinyPNG.
Can I compress WebP images in the browser without a server?
Yes, in browsers that support WebP encoding through Canvas (current Chrome, Firefox, and Safari 16.4+). Where WebP encoding is unavailable, Komprs detects the gap at runtime and re-encodes the file as its original format with an inline notice on that file.
How do I compare before and after image quality when compressing?
Click any queued image. The before/after viewer opens with the original on one side and the compressed version on the other, and updates live as you move the global quality slider. On desktop the layout is a split-slider; on mobile under 481 px it stacks.
Why do some image compressors limit you to 20 files per session?
Because the work happens on their server and CPU time costs them money. Komprs runs the work on your machine, so the cap problem does not exist by construction.
How do I reduce image file size without losing visible quality?
Open the before/after viewer on a representative file. Drag the slider down until you can see the artefacts, then back it up a notch. Apply that quality to the whole batch. For most product photography, quality 70 to 80 is the floor before degradation becomes visible at typical web sizes.
Try it
Drop a batch at appcrib.com/komprs. No signup. No upload. No limits.