Skip to main content

Compress, batch, inspect.

Drop your images here. JPEG, PNG, WebP. Dial quality, watch savings stack. Your files never leave the tab.

Drop your whole folder.

JPEG, PNG, and WebP, up to 50 MB per file, no session limit. Files are decoded in the browser, never uploaded.

.jpg.jpeg.png.webp.avif.svg
Global qualityDial it until it looks just right.

PNG is lossless. Size change comes from re-encode + metadata strip.

80
QueueNo images queued yet.
File № REF · Reference tables

Image compression reference: formats, quality levels, and size budgets

The tool above compresses JPEG, PNG, and WebP images in the browser at a quality level you set with the slider. The tables below collect the data you actually consult while picking that quality level: expected output ratios by format, quality recommendations by image role, browser support for the Canvas encoder, file-size budgets for common placements, and what metadata gets preserved or stripped on the way through.

Format selection by image content

Match the source's visual character to the encoder that handles it cleanly. Lossy codecs win on continuous-tone photos and lose on sharp synthetic edges.

ContentRecommended formatReason
Photograph (product, landscape, portrait)JPEG or WebPLossy DCT codec; high ratio at acceptable visual cost
UI screenshot with textPNGLossless; preserves sharp edges and 1-pixel strokes
Illustration with flat color regionsPNGLossy ringing visible on flat fills
Hero image with text overlayWebPHandles both photo regions and sharp glyphs
Image with transparencyPNG or WebPOnly formats with an alpha channel here
Animated sourceWebP (animated)Komprs handles static frames in v1; animation deferred
Icon below 32×32PNGPredictable rendering at integer pixel scale
Social card (OG image, 1200×630)JPEGBroadest platform compatibility
Photograph at thumbnail size (≤ 300 px)JPEG @ 70Diminishing returns above quality 70 at small dimensions
Email inline imageJPEGOutlook and some Gmail clients shift PNG colors

Quality slider reference

The slider controls JPEG and WebP lossy quality. Output ratios assume an unoptimized JPEG source from a camera or screenshot tool.

QualityOutput / original (JPEG)First visible artifact
9585 to 95%Effectively visually lossless
9065 to 80%Soft gradients still smooth
8550 to 65%Web-photo sweet spot; minor banding in sky gradients
8245 to 58%Slight ringing on high-contrast text edges
80 (default)40 to 55%Subtle mosquito noise around faces at 1:1 zoom
7532 to 46%Banding becomes visible in gradients
7027 to 38%Edge ringing on type; lower bound for hero use
6522 to 32%Acceptable for thumbnails only
6017 to 26%Blocking artifacts obvious
5011 to 18%Heavy blocking; placeholder territory
408 to 13%Severe blocking
305 to 9%Use only as a blurred LQIP placeholder

PNG output is lossless; the quality slider does not change pixel data. Output size reductions on PNGs come from stripping EXIF, ICC, and ancillary chunks. Expect 5 to 20% reduction on PNGs already saved by a recent editor, more on PNGs that retained large embedded color profiles.

File-size budgets by placement

Targets are based on Lighthouse LCP guidance and CrUX p75 mobile thresholds. The hard ceiling is the value at which the placement starts measurably hurting performance metrics.

PlacementFormat @ qualityTargetHard ceiling
Above-fold hero, 1920×1080WebP @ 80150 KB250 KB
Above-fold hero, 1200×630JPEG @ 8290 KB180 KB
Inline blog photo, 1200×800JPEG @ 80100 KB200 KB
Product gallery photo, 1500×1500WebP @ 80120 KB220 KB
Product thumbnail, 300×300JPEG @ 7218 KB35 KB
OG / Twitter card, 1200×630JPEG @ 8290 KB200 KB
Email inline, 600 px wideJPEG @ 8035 KB80 KB
Author avatar, 96×96WebP @ 855 KB12 KB
Favicon source, 512×512PNG12 KB25 KB
Logo with transparency, UI usePNG-8 or WebP lossless8 KB20 KB
Listing card photo, 600×400JPEG @ 7845 KB90 KB

Browser support for Canvas encoding

HTMLCanvasElement.toBlob(type, quality) and OffscreenCanvas.convertToBlob({type, quality}) accept these MIME types where supported.

FormatChromeFirefoxSafariEdge
image/jpegAll versionsAll versionsAll versionsAll versions
image/pngAll versionsAll versionsAll versionsAll versions
image/webp23+105+14+79+
image/avif (encode)102+Not supportedNot supportedChromium-based
OffscreenCanvas69+105+16.4+79+
createImageBitmap50+42+15+79+
Worker-thread OffscreenCanvas69+105+16.4+79+

Komprs detects OffscreenCanvas and Worker at runtime. On Safari before 16.4 the encoder falls back to main-thread HTMLCanvasElement.toBlob. A WebP-unsupported runtime falls back to re-encoding as the source format with an inline notice on that file.

MIME types, extensions, and file signatures

Sufficient bytes to validate format without a library. Komprs reads the MIME type from the File object and verifies the magic bytes before queueing.

FormatMIME typeExtensionsFirst bytes (hex)
JPEGimage/jpeg.jpg .jpeg .jpeFF D8 FF
PNGimage/png.png89 50 4E 47 0D 0A 1A 0A
WebPimage/webp.webp52 49 46 46 ?? ?? ?? ?? 57 45 42 50
GIF (not supported)image/gif.gif47 49 46 38
HEIC (not supported)image/heic image/heif.heic .heifoffset 4: ftypheic / ftypheix / ftypmif1
AVIF (not supported)image/avif.avifoffset 4: ftypavif
SVG (not supported)image/svg+xml.svg<?xml or <svg (text)
BMP (not supported)image/bmp.bmp42 4D

What Canvas re-encoding strips and preserves

Re-encoding through <canvas> drops every container property that isn't pixel data. This is a privacy benefit and a color-fidelity hazard worth knowing about.

PropertyBehavior after re-encode
EXIF metadata (camera model, GPS, capture time)Stripped
ICC color profileStripped (image converted to sRGB)
XMP / IPTC metadataStripped
Orientation tag (EXIF)Applied, then stripped (image rotated upright)
Alpha channelPreserved for PNG and WebP; dropped for JPEG (composited on white)
Bit depth24-bit RGB or 32-bit RGBA only; 16-bit-per-channel sources downcast
Animation (animated WebP, APNG)First frame only
Wide-gamut color (Display P3, Adobe RGB)Converted to sRGB
Progressive JPEG encodingBrowser chooses; Canvas does not expose the flag
Chroma subsamplingBrowser chooses (typically 4:2:0); not configurable

Stripping ICC profiles can shift colors on sources tagged with a wide-gamut profile. For color-critical work (print catalog masters, brand assets sent to a colorist), keep an unstripped original and use Komprs only on the web-bound copy.

Quality picks by use case

When two values are listed, the JPEG pick is the conservative choice and the WebP pick is the byte-saving choice. Both produce visually equivalent output at these settings on typical input.

Use caseJPEG qualityWebP qualityNotes
Lighthouse-optimized hero7875Encode both, ship the smaller
E-commerce product photo8280Color accuracy matters on fabric and metal
Blog inline photograph8078Default for editorial content
Article featured image8280Slight bump over inline
Documentation screenshot90, or use PNG88, or use lossless WebPSharp text needs the headroom
Avatar / profile picture8582Bytes don't matter at this size; quality does
Thumbnail at or under 300 px7270Diminishing returns above 75
LQIP placeholder3030Generate alongside the full-quality version
Email inline photo80n/a (use JPEG for mail)WebP support in mail clients is uneven
Social-share OG card82n/a (use JPEG for share)Some scrapers reject WebP

Decision grid: source format and intent to output

SourceIntentOutput formatQualityExpected size, 2400×1600 input
DSLR JPEGHeroWebP80110 to 180 KB
Phone JPEGProduct photoJPEG82180 to 260 KB
iPhone HEICWeb inlineConvert to JPEG first, then re-encode80200 to 320 KB
Screenshot PNGDocumentationPNGn/a60 to 90% of original
Flat-color PNGIllustrationPNGn/aNear-original; Canvas does not quantize palettes
PNG with alphaUI assetPNG or WebP losslessn/aMetadata stripped only
Photograph with alphaComposited cardWebP (lossy)80130 to 200 KB
Transparent logoUI usePNG-8 or WebP losslessn/aOften 60 to 85% of original

Related concepts

Lighthouse LCP (Largest Contentful Paint)
The Core Web Vitals metric that drives the hero-image byte budgets above.
Responsive images (srcset, <picture>)
Serve different sizes per viewport from one compressed master.
Image CDN
Runtime resize and re-encode service. Sometimes redundant with pre-compressed assets.
MIME type sniffing
Detecting format from the leading bytes rather than the filename extension.
Lossless vs. lossy compression
Lossless preserves every source bit; lossy discards perceptually weak data for ratio.
Read more on /learn