jxl-rs is a high-performance, conforming, and memory-safe JPEG XL decoder
written in Rust.
It is the JPEG XL decoder implementation used in Google Chrome / Chromium and Mozilla Firefox.
JPEG XL was standardized in 2022 as ISO/IEC 18181.
While libjxl (C++) is the official ISO/IEC
18181-4 reference software, jxl-rs is a pure-Rust implementation
developed within the JPEG XL project. It is not (yet) an official reference
implementation, it aims for full specification conformance, memory safety, and
high decoding performance across diverse hardware architectures.
The performance of jxl-rs closely matches (and sometimes exceeds) the C++ reference
implementation, while having improved support for progressive rendering and lower
memory requirements.
The vast majority of the code uses safe Rust. Where unsafe is needed for
performance benefits (including SIMD), we require unsafe code to have extensive
safety comments and to be reviewed by a non-author Unsafe Rust expert.
jxl: Core JPEG XL decoder library.jxl_cli: CLI decoding and benchmarking tool.jxl_cms,jxl_simd,jxl_transforms,jxl_macros: Internal crates for color management, SIMD acceleration, transforms, and macros.
# Build
cargo build --release --bin jxl_cli
# Decode an image (PNG, PPM, PGM, APNG, EXR)
target/release/jxl_cli input.jxl output.png
# Print image metadata
target/release/jxl_cli input.jxl --info
# Benchmark decoding speed
target/release/jxl_cli input.jxl --speedtest --num-reps 10The jxl crate is also available on crates.io
for use as a library.
# Run workspace tests
cargo test --release --all
# Run Shuttle concurrency tests
cargo test --release --features shuttle shuttleTo run property-based tests with extended budget:
ARBTEST_BUDGET_MS=10000 cargo test --release --all
SHUTTLE_ITERATIONS=100 cargo nextest run --features shuttle -- shuttleWe strive to decode all conformant JPEG XL bitstreams correctly. If
you encounter an image that decodes with the reference implementation
djxl (from libjxl) but
fails or renders incorrectly with jxl-rs, please open an
issue.
- Main C++ Repository: libjxl/libjxl
- Discord: Join the JPEG XL Discord Server
- JPEG XL Website: jpeg.org/jpegxl & jpegxl.info
- Contributing: Please see CONTRIBUTING.md for contribution guidelines and CLA requirements.