JPEG XL Converter

Free · no sign-up · no upload

JPEG XL Converter

Turn JPEG, PNG and WebP into .jxl — and .jxl back — without installing libjxl or sending one byte of your image anywhere. Drop a file, read the byte delta, eyeball the same-zoom preview, download.

  • 100% in-browser
  • Same-zoom A/B preview
  • 25 MB / 40 MP safety caps
  • Honest when .jxl encoding is missing

1 · Your image

Drop a file or tap to open your photo library. Files stay on this device.

2 · Output settings

Defaults to .jxl, or .jpg when the input is already .jxl.
Used for .jxl only. max can take 10s+ on large images.
On by default for PNG and JXL input.
Orientation is applied from EXIF. Canvas output is normalised to sRGB.
Value: 90 — ignored when lossless is on or the target is .png

3 · Size & preview

No file yet

The byte comparison appears here the moment you drop an image — original, converted, signed percentage and a verdict.

How it works

Three steps, zero uploads, no libjxl install.

1 · Decode locally

Your file is read with ImageDecoder where the browser has it, otherwise createImageBitmap. EXIF orientation is applied when metadata is kept.

2 · Re-encode

PNG, JPEG and WebP come straight from the canvas encoder. .jxl uses a native encoder when one exists, otherwise the libjxl WebAssembly bundle, fetched once and cached by the browser.

3 · Compare & download

Both files are measured in bytes, drawn as stacked bars, placed under a same-zoom A/B preview, and handed back with the original filename and a new extension.

Built for a 30-second size question

Your image never leaves the device

There is no upload endpoint at all. The only network request is the one-time JPEG XL encoder bundle (~2 MB) — and even that is only needed for .jxl output.

Numbers you can trust

Byte counts come from the real encoded Blob, formatted with tabular figures, and the delta is signed — a bigger output is reported as bigger, not dressed up.

Honest about what it cannot do

No native encoder and no WASM bundle means no .jxl — the tool says so instead of writing a mislabelled PNG. Animated and 10-bit files are converted frame 1 only, with a warning.

Designed at 375 px

Panels stack, the preview collapses to an A/B toggle with swipe, and every control keeps a 44 px tap target.

Effort where it matters

Fast / balanced / max map to libjxl efforts 3 / 5 / 7, so you can trade seconds for kilobytes when the answer matters.

Same-zoom comparison

Both previews are capped identically at 1600 px on the long edge, so banding and blocking show up at a fair scale while downloads stay full resolution.

FAQ

Does my image get uploaded anywhere?

No. The tool has no server endpoint and no analytics on your file. Decoding and encoding happen in your browser's own image pipeline, so the bytes stay in the tab. Bookmark it, pull the network cable, and it still converts.

Why does .jxl output sometimes say "encoder unavailable"?

Browsers ship JPEG XL decoding (Safari does; Chrome removed it) but almost none ship encoding. The tool first asks the canvas for image/jxl, then tries to load the libjxl WebAssembly bundle. If both fail — offline, blocked CDN, locked-down browser — it says so and offers WebP or PNG rather than writing a PNG with a .jxl name.

Is the percentage a fair quality comparison?

It is an honest byte comparison of a fresh re-encode against a file that was already compressed. A JPEG at quality 90 re-encoded at quality 90 is a generation loss; a PNG re-encoded to lossless WebP is a clean pair. Read the verdict line and the A/B preview together.

What happens to EXIF orientation and ICC profiles?

With "keep metadata" on, EXIF orientation is applied so a rotated phone photo comes out upright. Canvas encoding normalises colour to sRGB, so wide-gamut and ICC-tagged inputs may shift slightly; that trade is worth a preview check for print work.

Animated or multi-frame JXL, or HDR?

A multi-frame file is converted frame 1 only and the tool tells you how many frames it skipped. 10-bit / HDR frames are flattened to 8-bit sRGB with a warning, because the canvas path cannot carry the wider range.

Why the 25 MB and 40 MP limits?

Decoding a 200 MP image needs about 800 MB just for pixels, which kills a phone tab. Files over those caps are refused before the heavy work starts, with the measured size in the message.

Latest updates

More free tools

Step-by-step guides in our blog & guides.

Product Mockup Ai Generator Prozentrechner Online Kostenlos Mit Rechenweg Life Counter For Mtg PDF to Image Converter Css Gradient Generator Online Image To Pdf Converter Eur To Usd Converter Photo Compressor To 40kb PDF to Word Converter حاسبة تكلفة البناء في السعودية