Rapier could not start
Reload this file. Your document has not been opened or changed.
Convert PNG, JPG, GIF and video to JPEG XL (JXL), free. Files are made on your device, offline; nothing is uploaded. Choose the quality: Lossless, High or Medium. Under Lossless a JPEG converts exactly: smaller, and the original restores byte for byte.
Also: Free painting app online · Free drawing app online · Private notes app
Yes. Rapier is free and open source, with no account, ads or tracking.
No. Files are converted on your device.
Yes. The encoder is inside Rapier. Videos and animations need JPEG XL complete, a one-time download; after that they convert offline too.
Lossless is. High and Medium are lossy and much smaller. A JPEG converted under Lossless restores byte for byte.
An exact JPEG: usually 10 to 20% smaller. A 710 KB PNG painting: 428 KB lossless, 73 KB at High, 35 KB at Medium.
Transparency, 16-bit PNG (Lossless), color profiles such as Display P3 and Adobe RGB, and HDR PNGs (PQ or HLG). Video sound is dropped.
Any number. Rapier converts a few at a time; Cancel stops it. If the device runs out of memory, finished files are kept.
Chrome 155, Firefox 158 and Safari 17 and later. Safari does not play animated JPEG XL. Any browser can make the files here.
The JPEG XL encoder is part of Rapier, which is one offline HTML file. Your browser reads each picture, or plays each video frame by frame, and the encoder writes the JPEG XL file on your device. Nothing is uploaded. A JPEG is carried into JPEG XL without decoding it, then restored and checked against the original before you download.
In Lossless mode a JPEG converts to a smaller file and restores the exact original. Other pictures come out smaller at the same quality. JPEG XL also holds transparency, high dynamic range and animation.
rapier-jxl is the JPEG XL encoder inside Rapier: pure JavaScript with optional WebAssembly, MIT licensed, no dependencies. It encodes lossless and lossy pictures and animations, carries a JPEG exactly, and keeps alpha and HDR. The still encoder is about 86 KB gzipped; the complete one, with animation and the rest of the format, about 153 KB. Run npm install rapier-jxl, then import {toJXL} from rapier-jxl/image: toJXL(file, {worker}) returns a JPEG XL Blob.
Rapier could not start
Reload this file. Your document has not been opened or changed.