Rasterize SVG files to JPEG XL, lossy or lossless, with transparency intact.
Chrome 155, Firefox 158 and Safari decode JPEG XL; keep an AVIF or WebP fallback for Edge and older installs. Our guide to JPEG XL in Chrome and what changes now has the dated state.
Drop SVG files here and get JPEG XL files back, with transparent areas still transparent. Keep the size your SVG declares or pick a long edge up to 4096 pixels; the vector is drawn at that size, so edges stay sharp. The conversion runs in memory at api.mochify.app and nothing is saved to disk.
By default this page makes a high-quality lossy JPEG XL, the smallest file, which is not pixel-exact. Switch on Lossless for a pixel-exact JXL of the rendered SVG; for flat-color graphics a lossless JXL is usually still smaller than the same image as a PNG (see JPEG XL vs PNG for screenshots).
JPEG XL suits a raster master you keep alongside the SVG: an archive copy at 4096 pixels, a handoff to a team whose tools read JXL, or an asset pipeline that already supports it. For a live web page, JXL can now be the first source, with AVIF or WebP as the fallback. Converting images to JPEG XL covers where JXL opens and how to serve it with a fallback; What is a JXL file? covers opening one.
Neither Inkscape's Export dialog nor Figma's export panel offers JPEG XL. Export a PNG at the size you need, then encode it with libjxl's command-line tool: cjxl logo.png logo.jxl -d 0 for lossless, or -d 1 for a high-quality lossy file.
Without an account you can convert 3 images a month; a free account gives you 25 a month, up to 3 at a time, 20MB each. Paid plans (Seller, Pro and Growth) take batches of 25 and files up to 75MB, and a $2 Day Pass gives 100 uploads over 24 hours with no account. The pricing page has the plans.
Through the REST API, on every plan, Free included; full reference in the API documentation:
curl -X POST "https://api.mochify.app/v1/squish?type=jxl&width=4096&lossless=1" \
-H "Content-Type: image/svg+xml" \
-H "Authorization: Bearer $MOCHIFY_API_KEY" \
--data-binary @logo.svg \
--output logo.jxl width sets the output width in pixels and the vector is drawn at that width; lossless=1 makes the file pixel-exact. Leave either out for the defaults.
Also available