Five real phone photos (35.0 MB) → 7.9 MB on pixsip.com/compress-jpg. DevTools Network transfer size and load timing on a local test page, before and after. No upload, no target-KB slider.

I build PixSip, so I'll say that up front. The numbers below are from a fresh headless run on the live page, not a marketing slide.

The inventory (Network → Img first)

Skip the compressor for a minute. Open the page that feels slow, DevTools → Network, filter Img, disable cache, hard-reload.

On a local test gallery that dropped five full-size phone JPGs into one hero strip, the panel looked like this:

File Camera Pixels Bytes
metro-invalidovna.jpg Pixel 8 Pro 8160×6144 8.6 MB
ayup-market.jpg Samsung SM-A336B 4000×3000 7.5 MB
sturgeons-mill.jpg iPhone 15 Pro Max 4032×3024 6.5 MB
mudbank-adur.jpg Pixel 8 Pro 8160×6144 6.9 MB
ad-column.jpg Pixel 4a 4032×3024 5.4 MB
Total 35.0 MB

DevTools-style inventory of five heavy phone JPGs totaling 35 MB

Lighthouse's "Improve image delivery" opportunity is pointing at the same files. You don't need every JPG on the site — only the ones that dominate transfer size. Compress those, leave the rest alone.

Same five files on a local page, emulated ~10 Mbps, cache off:

Local test page before compression: 35.0 MB transfer, 28.1 s load

  • Img requests: 5
  • Transfer size: 35.0 MB
  • Largest: 8.6 MB
  • Load event: 28.1 s

That's the baseline. Everything after this is "make those five smaller without leaving the browser."

1. Open /compress-jpg and wait for the lock

Go to pixsip.com/compress-jpg. The drop zone starts disabled while the worker (MozJPEG wasm) loads — usually about a second. Wait until the small 🔒 appears under "Drop images here" and the file input is enabled. Dropping too early hangs the job.

PixSip compress-jpg ready state with lock icon under the drop zone

Free plan: up to 20 images × 10 MB each, up to 3 output formats at once. There is no target-KB setting and no quality slider — MozJPEG runs at one calibrated quality. Don't expect "compress to exactly 200 KB."

2. Drop the batch, read the results table

I dropped the five originals as JPG → JPG. Worker ready in ~1.0 s; the batch finished in ~11 s. Nothing over a few KB left the machine (clarity.ms analytics pings only — no image upload).

Results table: 5/5 done, Saved 27.1 MB total · 77% smaller

File Before After Δ
metro-invalidovna.jpg 8.6 MB 2.0 MB −76%
ayup-market.jpg 7.5 MB 963 KB −87%
sturgeons-mill.jpg 6.5 MB 1.7 MB −74%
mudbank-adur.jpg 6.9 MB 1.6 MB −76%
ad-column.jpg 5.4 MB 1.5 MB −71%
Total 35.0 MB 7.9 MB −77%

Card text on the page: "Saved 27.1 MB total · 77% smaller."

3. Verify pixels, EXIF, GPS

Download the ZIP and check what actually changed. Dimensions must stay the same — PixSip does not resize. EXIF and GPS should be gone (four of the five originals carried GPS; none of the outputs do).

Terminal-style check: dimensions unchanged, EXIF/GPS stripped, 35.0 → 7.9 MB

Summary from the real ZIP:

  • Pixel sizes changed: 0 of 5
  • GPS left: 0 of 5
  • EXIF tags left: none

That last point matters for WordPress: if you upload the phone original, WordPress keeps a publicly reachable copy of it (and often its GPS) even after it builds -scaled thumbnails. Strip first, then upload.

4. Compare at 1:1, then your own 100% crop

Hit Compare on any row, then Zoom 1:1. Drag the divider across fine detail — tiles, foliage, sign lettering — not a downscaled preview.

PixSip Compare view with Zoom 1:1 on the mill photo

And a 100% crop from the real files (metro platform tiles + tactile paving), original on the left, PixSip on the right:

100% crop: metro tiles original 8.6 MB vs PixSip 2.0 MB

At this distance the difference is hard to spot. If a crop looks soft, that photo may need a lighter pass elsewhere — or simply a smaller display size in CSS, not a quality slider PixSip doesn't have.

5. Swap the files and re-weigh

Replace the five <img> sources with the compressed JPGs. Same local page, same emulated ~10 Mbps, cache still off:

Local test page after compression: 7.9 MB transfer, 6.4 s load

Metric Before After
Transfer size 35.0 MB 7.9 MB
Largest image 8.6 MB 2.0 MB
Load event (~10 Mbps) 28.1 s 6.4 s

That's the Lighthouse/Network loop closed: inventory → compress the offenders → re-measure. LCP on a real WordPress theme will still depend on font/CSS/JS, but the image bytes are no longer the obvious bottleneck.

Short checklist

  1. Network → Img (or Lighthouse → Improve image delivery) — list the heaviest JPGs only.
  2. Open /compress-jpg, wait for the 🔒.
  3. Drop the batch. Read the results table; download the ZIP.
  4. Confirm dimensions unchanged and EXIF/GPS gone before you upload to WordPress.
  5. Compare + Zoom 1:1 (and a 100% crop of your own) on at least one hero image.
  6. Swap files, re-weigh transfer size. Repeat for the next heavy set if needed.

Free plan caps at 20 × 10 MB; bigger batches are on pricing. For how MozJPEG lands vs other compressors, see the PixSip benchmark. Nothing is uploaded — details in privacy by default.

If the heavy asset is a video hero instead of a photo strip, I also build vidsmaller.com for target-size cloud compression.

Photo credits (CC0)

All five samples are CC0 on Wikimedia Commons:

Related

Related: Medium — Your WordPress images are too heavy · Blogger — Before You Hit Upload in WordPress · DEV.to — Convert images to WebP or AVIF