Free tool Image compressor: shrink and convert images without uploading them
Drop in photos or screenshots, pick a format, a quality and a maximum size, and the page re-encodes them on your own device. You see the size before and after, the pixels side by side and which hidden metadata, like GPS location, was removed.
- Stays on your device
- Batch and ZIP download
- Built for page speed
Compress and convert images
Settings apply to every image and re-run when you change them. Paste a screenshot with Ctrl+V or Cmd+V, or try the sample photo.
80 is a good starting point for photos.
Lowers quality step by step until the file fits. Works for WebP, JPEG and AVIF.
JPEG has no transparency, so transparent areas are filled with this colour.
Only when format and dimensions stay the same.
No images yet. Choose, drop or paste images, or try the sample photo.
Before
—
After
—
Saved
—
Before and after
Drag across the image or use the slider. Left of the line is the original, right is the compressed version. Zoom in on edges, text and skies, where compression shows first.
What resizing does to a 12-megapixel phone photo
A 4032 × 3024 photo shrunk to fit a square limit. Pixel count drives file size and decoding memory, so resizing usually saves more than any quality setting.
| Max width and height | Output size (px) | Pixels removed | Memory once decoded |
|---|---|---|---|
| Original | 4,032 × 3,024 | — | 46.51 MB |
| 2,560 px | 2,560 × 1,920 | −60% | 18.75 MB |
| 1,920 px | 1,920 × 1,440 | −77% | 10.55 MB |
| 1,200 px | 1,200 × 900 | −91% | 4.12 MB |
| 800 px | 800 × 600 | −96% | 1.83 MB |
Decoded memory = width × height × 4 bytes (one byte each for red, green, blue and alpha), whatever the file size. File sizes depend on the picture, so the tool measures them instead of guessing.
Version v1.0Updated Update history
What the numbers on each image mean
Every row shows the dimensions, the size and what changed. Here is how to judge whether the result is good enough to publish.
Dimensions before → after
The biggest lever. A photo straight off a phone is often 4000 pixels wide; a blog column rarely needs more than 1600 even for sharp screens. Halving the width removes about three quarters of the pixels.
Size and saving
The real file size, measured from the encoded file. A saving shown in red means the new file is larger, which happens when you re-encode an already optimised file or save a photo as PNG.
Quality
The encoder setting from 10 to 100. It is not a percentage of the original quality, and the same number gives different results in JPEG, WebP and AVIF. Judge with your eyes in the comparison view.
Removed metadata
Location, camera model, date taken and colour profile stored in the file. The canvas encoder writes only pixels, so all of it is gone from the output, which also saves a few kilobytes.
For a web page, check the compressed image at the size it will be shown. Artefacts that are visible at 300% zoom often disappear at real size.
Compress images in four steps
The defaults (WebP, quality 80, at most 1920 pixels) suit most website photos.
-
1
Add images
Click to choose, drop files onto the box or paste a screenshot. Up to 60 images at once.
-
2
Pick a format and a size
WebP for websites, JPEG where WebP is not accepted, PNG for screenshots that must stay pixel-exact. Set the max width to the largest size the image is displayed at, times two for sharp screens.
-
3
Check the comparison
Open Compare on the image with the biggest saving and drag the divider over edges and text. Lower the quality until you can see a difference, then go back one step.
-
4
Download
Download images one by one or all of them as a ZIP. Files keep their names with the new extension.
Why smaller images make the largest paint faster
Largest Contentful Paint (LCP) is the time until the biggest image or text block in the viewport is drawn. web.dev splits it into four parts: time to first byte, resource load delay, resource load duration and element render delay. When the largest element is an image, its file size sets the load duration.
- Good LCP: 2.5 seconds or less for at least 75% of page visits (web.dev)
- File size depends on pixel count × bytes per pixel; resizing cuts the first, quality and format the second
- This tool draws each image onto a canvas, scales it in steps of at most half for sharper results, then calls
canvas.toBlob(type, quality) - Compression does not fix a slow server or a late-discovered image: set
widthandheight, do not lazy-load the LCP image and considerfetchpriority="high"
| Format | Type | Transparency | Best for |
|---|---|---|---|
| WebP | Lossy or lossless | Yes | Website photos and graphics; supported by current browsers |
| AVIF | Lossy | Yes | Smallest files for photos; shown only if your browser can encode it |
| JPEG | Lossy | No | Email, upload forms and anything that refuses WebP |
| PNG | Lossless | Yes | Screenshots and UI that must stay pixel-exact; rarely gets smaller |
One phone photo, three decisions
A 4032 × 3024 photo for a blog post whose content column is 800 CSS pixels wide.
| Step | Decision | Result |
|---|---|---|
| 1. Dimensions | 800 px column × 2 for sharp screens → max width 1600, or 1920 for a full-width hero | At 1920: 1920 × 1440, 77% fewer pixels |
| 2. Format | WebP at quality 80 for the page; keep a JPEG copy only if a platform rejects WebP | Typically a large saving on photos; the tool shows the exact size |
| 3. Check | Compare at real size; look at sky gradients and fine text | Lower the quality until artefacts appear, then step back |
| Memory | Decoded size of the original vs a 1200-pixel version | 46.51 MB vs 4.12 MB: what a phone must hold in memory to paint it |
Pixel counts and memory are exact arithmetic; compressed file sizes depend on the picture, so measure them with the tool rather than trusting a rule of thumb.
Where image compression goes wrong
Most oversized images on websites are not under-compressed; they are simply too big.
Uploading the camera original
A 4000-pixel photo shown 800 pixels wide makes every visitor download and decode five times the pixels in each direction. Resize before you compress.
Re-compressing a JPEG again and again
Every lossy save adds artefacts. Keep the original and compress from it, not from the last exported copy.
Saving photos as PNG
PNG is lossless, so photos stay huge. Use PNG for flat screenshots; for photos use WebP, AVIF or JPEG.
Lazy-loading the main image
loading="lazy" on the largest image above the fold delays LCP. Lazy-load images further down the page instead.
See whether your images slow real visitors down
Compressing images is the fix; real-user data tells you which pages need it. TapCub's script measures the same Largest Contentful Paint this page explains, on your visitors' devices.
Core Web Vitals at p75
LCP, INP and CLS for each page at the 75th percentile, the same threshold web.dev uses, collected from the first page load of each visit.
Learn moreSlowest pages first
Pages and templates sorted by LCP, so you compress the images that cost the most visitors first.
Learn morePages and sources together
Compare speed with traffic and conversions on the same pages to decide where an image fix matters.
Learn moreImage compression questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
How do I reduce the file size of an image?
Resize it to the largest size it will be shown at (times two for sharp screens), then save it as WebP or JPEG at quality 70–85. Resizing usually saves more than any quality setting.
How do I compress an image to under 100 KB or 200 KB?
Tick "Compress to a target size", type the limit in KB and the tool lowers the quality until the file fits. If it still does not fit, lower the max width. This tool counts 1 KB as 1,024 bytes; if a site counts 1,000, set the target a little below its limit.
Are my images uploaded?
No. Decoding, resizing and encoding all happen in your browser with the canvas API. You can disconnect from the internet after the page loads and it still works.
Should I use WebP or AVIF?
Both are supported by current versions of the major browsers. AVIF often gives smaller photos but encodes slower and only appears here if your browser can encode it. If you must support very old devices, serve WebP or AVIF in a <picture> element with a JPEG fallback.
Why did my PNG get bigger?
Browsers save PNG losslessly and without the palette tricks that PNG optimisers use, so a file that was already optimised can grow. Convert it to WebP, or shrink its dimensions.
Does compressing remove EXIF and GPS location?
Yes. The output contains only pixels, so location, camera model, date taken and other EXIF, XMP and IPTC data are removed. Each row lists what the original contained. The photo's rotation is applied to the pixels first, so it still appears the right way up.
Why will my iPhone photo (HEIC) not open?
Chrome and most other browsers cannot decode HEIC. Open this page in Safari, or on the iPhone go to Settings → Camera → Formats and switch from High Efficiency to the other option, so new photos are saved as JPEG.
How much does image size affect page speed?
When the largest element in the viewport is an image, its download time is part of LCP, which should be 2.5 seconds or less for 75% of visits. Smaller files help most on mobile networks; a slow server or a late-discovered image still needs separate fixes.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Measure the speed your visitors actually get
Add TapCub's script and see LCP, INP and CLS for every page from real visits, next to traffic and conversions.