Drop JPEG photos here and get JPEG XL (JXL) files back: one high-quality re-encode per photo, with nothing to set. Up to 3 files a month with no signup and 20MB per file, or 25 a month with a free account. Files are processed in memory at api.mochify.app and wiped the moment your download is ready.
Up to 3 per batch to start, no account needed.
There is nothing to type and nothing to set: this page does one job, a JPG to JXL conversion, and starts it as soon as the files land.
Each JXL comes back in seconds.
JPEG XL is known for a trick: it can repack an existing JPEG losslessly, smaller, and give the exact original JPEG back later. This page does not do that. It decodes your JPEG to pixels and encodes them as JPEG XL with one high-quality setting. The result looks the same on screen and is usually smaller, but it is a second generation of a lossy file and it cannot be turned back into your original JPEG byte for byte. If you are archiving a photo library and want the reversible transcode, keep your JPEG masters and use a desktop tool that offers it; if you want a smaller, good-looking JXL for a pipeline or viewer that reads the format, this page is the quick way.
Metadata is stripped by default, GPS included, with nothing to set on this page. If you need the camera data kept, the Mochify web app has a Strip EXIF switch and the API takes stripExif=false.
As a format, JPEG XL compresses photographs more efficiently than JPEG at the same visual quality and supports things JPEG cannot, such as transparency, higher bit depth and progressive decoding. As a file on the web, JPEG still wins on one thing: it opens everywhere, including email clients, chat apps and browsers that have not updated since Chrome 155 and Firefox 158 began decoding JXL in October 2026. So the answer is "better format, narrower compatibility, closing fast". Our guide to JPEG XL in Chrome and what changes now has the dated state of browser support, What is a JXL file? covers which apps open one, and the practical JPEG XL guide walks through the JPEG path and the fallback pattern. If what you actually need is a smaller JPEG rather than a new format, the jpegli guide explains how Mochify's JPEG encoder gets more quality per byte while staying a plain .jpg.
A JXL from this page is standard-range. On Mochify only JPG output carries an HDR gain map, so a phone photo with a gain map comes back as a normal-range JXL; use the SDR to HDR page if the HDR version is what you need.
Seller and Pro accounts convert up to 25 files per batch at up to 75MB each, and a Day Pass gives you 100 uploads in 24 hours for $2 with no account. The same conversion runs from the terminal with the Mochify CLI (mochify, sign in once with mochify auth login), from an AI agent through the hosted or local MCP server, and from the REST API:
curl -X POST "https://api.mochify.app/v1/squish?type=jxl" \
-H "Authorization: Bearer $MOCHIFY_KEY" \
--data-binary @IMG_0001.jpg \
-o IMG_0001.jxl Every route converts at api.mochify.app in memory and keeps nothing. Full parameter reference in the API documentation. Have PNGs or AVIFs instead? PNG to JXL and AVIF to JXL each use a path chosen for their input.
Also available