Releases: libjxl/libjxl
Release list
v0.12.0
Added
- A new buffering flag is now available in the CLI, alongside support for
streaming input with buffered output. (#4634) - Introduced the new
jxltrantool, which supports extracting codestreams from
jxlpboxes and packing raw codestreams intojxlcboxes. (#4161, #4165,
#4168, #4196) - Added the
--reconstruct_jpegflag todjxlto losslessly reconstruct a
JPEG and fail if impossible (mutually exclusive with--pixels_to_jpegand
--jpeg_quality). (#4498) - Added
JXL_DEC_UNSUPPORTED(kUnsupported) status code to the core API to
better indicate when requested features or operations are not supported by
the decoder. (#4390) - tools: added support for
ProPhoto(#4824) andAdobe98/AdobeRGB
(#4199) color space names in CLI arguments (cjxl/djxl). - decoder API: support for out-of-order
jxlpboxes (ftyp minor version 1).
(#4741) - encoder API:
JXL_ENC_FRAME_SETTING_OUTPUT_MODEframe setting to control how
the codestream is written to the output. Mode 0 (default) buffers the output
internally and produces a normally ordered, progressively decodable
codestream. Mode 1 uses seek-based streaming (reduces peak memory for large
images, requires a seekable output stream). Mode 2 uses out-of-orderjxlp
boxes (reduces peak memory without requiring seeking, but requires a decoder
that supports ftyp minor version 1). (#4745)
Changed
- Major overhaul for faster decoding and progressive lossless. (#4201, #4641,
#4811)- Progressive lossless images are around 30-40% smaller and are now
multithreaded increasing encoding performance by 2-5x. - Lossless images with faster decoding are now 30-80% smaller and their
decoding speeds properly scale as the faster decoding level increases
from 1-4. - Disabled global palette for progressive images, fixing glitchy progressive
loading for indexed/low color images and restoring transparency support
(Note: this causes a density/speed penalty for very low bit-depth images).
- Progressive lossless images are around 30-40% smaller and are now
- Numerous speed/memory usage improvements.
- Improved encoding speeds by SIMDifying
EstimateCost(+5% performance) and
speeding up uint-coding trials. (#4322, #4330) - Accelerated modular encoding and decoding via SIMD optimizations for
forward RCT transforms and upsampling (up to 4x faster). (#4332, #4384) - Massive overhaul to histogram encoding and decoding, providing significant
performance optimizations for modular mode. (#4123, #4132, #4136, #4185) - Tweaked JPEG recompression logic to improve density and efficiency. (#4202)
- Fixed performance regressions in fast lossless modes and optimized
text-like patch detection. (#4341, #4448) - Refined x86
XCR0CPU checks to prevent issues on specific hardware.
(#4449) - Migrated Windows release builds to use
clang-cl, which improves
performance across the board. (#4529) - Improved use of SIMD in tree construction hot loop. (#4720)
- Improved spline caching. (#4857)
- Postponed JPEG coeffs allocation until first SOS. (#4863)
- Improved encoding speeds by SIMDifying
- The default buffering level in the CLI has been changed to
2, greatly
improving encoding performance for images under 2048x2048. Additionally,
output is buffered by default to allow basic progressive loading. (#4635,
#4637, #4642) - Better Density/Speed tradeoff for lossless effort levels. (#4236)
- Improved visual quality of gradients by using channel-offset blue noise
dithering instead of bayer when decoding to lower bitdepths. (#4305, #4559) - Lossy modular encoding quality/density improvements. (#3575)
local_tone_maptool: Now produces SDR output in theDisplayP3color space
rather thanRec2020. Also added an optional third command-line argument to
dump the HDR image as a rawrgba1010102file for use with thelibultrahdr
example app. (#4210)- Significant improvements to EXR input/output handling for cjxl. Now supports
reading float32, multilayer, per-channel bitdepth, and writing greyscale
EXR images. (#4312, #4460) - The decoder API for
JxlDecoderSetImageOutBufferand
JxlDecoderSetPreviewOutBufferhas been clarified; their timeframes are now
non-intersecting, preventing accidental buffer overwrites. (#4671) - Layered JXL files are no longer coalesced when re-encoding with cjxl, and
can now be decoded to separate PNG/PAM files with djxl by using
--no_coalescing. (#4299) - The progressive flag
-pin cjxl will now encode a more progressive image.
(#4258, #4699) - When lossy encoding, resampling 2 is now enabled at distance 10, and is up to
10x faster below effort 10 by using a faster downsampling method. (#4147) - Faster PNG compression. (#3819)
- decoder API: documented that at most one preview image exists in a
codestream.
(#4671) - encoder API: corrected documentation for box size header in
JxlEncoderAddBox(0 means box extends to end of file, 1 means 64-bit size
follows). (#4081) - Performance & memory: tracked memory for temporary box/codestream storage
(#4852) and reduced allocation overhead inValidateTree(#4851) and low
memory rendering pipeline. (#4495, #4496) - Quality: improved HDR behavior at effort 8+. (#3885)
- tools:
jxlinforewritten in C++ with human-friendly output formatting.
(#4300) - tools: image viewers now perform CMS color transforms in parallel across
threads. (#4326)
Deprecated
- encoder API:
JXL_ENC_FRAME_SETTING_BUFFERINGmode 3 is deprecated; output
buffering should now be controlled viaJXL_ENC_FRAME_SETTING_OUTPUT_MODE.
(#4745)
Removed
- The
jpeglicodebase has been removed as it is now maintained as a separate
project at google/jpegli. (#4657) - Dropped GIMP plugin (
libjxl-gimp-plugin). (#4875)
Fixed
- Allows -E to be used in jpeg-transcoding again. (#4729)
- Fixed an issue where Lossy Delta Palette encoding failed on images larger
than 2048x2048. (#4201) - Fixed Delta Palette with Weighted Predictor decoding. (#4837)
JxlEncoderAddChunkedFrameincorrectly calledJxlEncoderCloseInput
instead ofJxlEncoderCloseFrames, resulting in corrupted files when
trying to add more boxes. (#4466)- Float16 values roundtrip more accurately. (#4461)
- JXL input to cjxl no longer gets double orientation applied and also now
keeps frame names. (#4374, #4561) JxlBasicInfo.alpha_premultipliedwas not correctly forwarded. (#4357)- CMYK JXL files would not decode to PNG correctly. (#4301)
- Encoder would hang with specific parameters on images containing more than
256 groups. (#4302) - Decoding would fail with LZ77 runs that crossed entropy-coded streams within
the same section. (#4298) - Images could be corrupted when encoding effort 1 lossless. (#4027, #4291)
- Extremely high quality lossy would not conform to Level 5 of the spec.
(#4238) - Density regression with Predictor Zero since v0.11. (#4225)
- Progressive VarDCT encoding would create non-progressive files. (#4223)
- Extremely tall/wide images failed to encode using modular. (#3937, #4308)
- Empty DHT markers no longer cause JPEG transcoding to fail. (#2704)
- Fixed photon noise encoding for progressive images. (#4866)
- Correctly handled mistakenly set "interleaved" alpha. (#4862)
- Fixed grayscale over-read in
EncodeWithSJpeg. (#4871) - Fixed
djxlSelectFormatfailure when converting grayscale images to PPM.
(#4691) - Fixed segmentation fault when attempting to open non-existing input files in
CLI tools. (#4846) - Fixed GIF always being decoded as RGBA. (#4849)
- Added a warning when an unsupported GIF disposal mode is encountered. (#3918)
- Fixed PNG color space information reading. (#4598)
- Fixed MSVC ARM64 build and restricted
_sub_overflow_i32to x86/x64. (#4877) - Corrected specialized decoding path for fast lossless. (#4836)
- Rejected duplicate out-of-order
jxlpindices. (#4814) - Used
png_bit_depthto correctly determine pixel layout. (#4854) - Fixed memory leak in
GetContext()injxl_cms.cc. (#4663) - Fixed stdin evaluation if file
-exists. (#4668) - Fixed JXL primary color representation detection. (#4618)
Security
- Extensive security and hardening fixes across the core decoder/encoder, box
buffers, and plugins (EXR, GIF, APNG/PNG, PAM/PNM/PGX). This includes fixes
for integer overflows/underflows, out-of-bounds reads/writes, buffer
overflows, and null pointer guards. (#4629, #4631, #4646, #4683, #4685,
#4687, #4688, #4722, #4746, #4758, #4764, #4766, #4773, #4775, #4777,
#4778, #4788, #4791, #4792, #4795, #4797, #4799, #4808, #4839, #4840,
#4850, #4855, #4870, #4874)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.11.2
Fixed
- fix tile dimension in low memory rendering pipeline (#4495 -
CVE-2025-12474) - fix number of channels for gray-to-gray color transform (#4579 -
CVE-2026-1837) djxl: reject decoding JXL files if "packed" representation size overflows
size_t(#4589 - thanks to Mateusz Jurczyk of Google Project Zero for
identifying this issue)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.10.5
Fixed
- fix tile dimension in low memory rendering pipeline (#4495 -
CVE-2025-12474) - fix number of channels for gray-to-gray color transform (#4579 -
CVE-2026-1837) djxl: reject decoding JXL files if "packed" representation size overflows
size_t(#4589 - thanks to Mateusz Jurczyk of Google Project Zero for
identifying this issue)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.9.5
Fixed
- fix tile dimension in low memory rendering pipeline (#4495 -
CVE-2025-12474) - fix number of channels for gray-to-gray color transform (#4579 -
CVE-2026-1837) djxl: reject decoding JXL files if "packed" representation size overflows
size_t(#4589 - thanks to Mateusz Jurczyk of Google Project Zero for
identifying this issue)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.8.5
Fixed
- fix tile dimension in low memory rendering pipeline (#4495 -
CVE-2025-12474)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.7.3
Fixed
- fix tile dimension in low memory rendering pipeline (#4495 -
CVE-2025-12474)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.7.2
Fixed
- Huffman lookup table size fix (#3871 - CVE-2024-11403)
- Check height limit in modular trees. (#3943 - CVE-2024-11498)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.11.1
Fixed
- Huffman lookup table size fix (#3871 - CVE-2024-11403)
- Check height limit in modular trees. (#3943 - CVE-2024-11498)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.10.4
Fixed
- Huffman lookup table size fix (#3871 - CVE-2024-11403)
- Check height limit in modular trees. (#3943 - CVE-2024-11498)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.
v0.9.4
Fixed
- Huffman lookup table size fix (#3871 - CVE-2024-11403)
- Check height limit in modular trees. (#3943 - CVE-2024-11498)
Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.
Please provide feedback and report bugs here.