Compression without the cloud
Chat apps, CMS fields, and email gateways punish multi-megabyte phone photos. Classic advice is “run it through TinyPNG.” That works—and uploads your file to a specialized encoder. LocalKit offers a private alternative: dial JPEG quality, optionally cap width, and compare before/after byte sizes side by side. Processing uses canvas in your tab. Nothing is posted to LocalKit.
When canvas compression is enough
For chat, email, web previews, and most CMS uploads, browser JPEG encoding at 70–85% quality with a 1600–1920px max width is often plenty. You see the size change immediately. If the output grows (re-encoding an already tiny JPEG at high quality), lower the slider or set a max width. For stubborn hard caps like “under 50 KB,” switch to Resize to exact KB, which binary-searches quality and downscales when needed.
How it compares to TinyPNG
Server encoders can beat canvas on tricky PNGs with few colors or on heavily optimized pipelines. LocalKit does not claim to win every byte. It claims to win on privacy, speed-to-first-result, and zero accounts. If you need absolute minimum size and are comfortable uploading, use a specialist. If you need “good enough, stays here,” use LocalKit.
HEIC and other inputs
HEIC inputs are decoded first (Safari native or WASM), then compressed as JPEG. WebP/AVIF decode through the browser. Always keep originals until you confirm the compressed preview looks acceptable on the device where it will be viewed.
Trust UX
Drop-zone hover states, live status text, and before/after labels exist so you never wonder whether a spinner means “uploading.” It does not. Pair with EXIF strip if the destination might preserve GPS from the original capture.