skillfed

pillow-jxl-plugin

Pillow plugin for JPEG-XL, using Rust for bindings.

pillow-jxl-plugin v1.3.8 215.6K downloads/30d#9,398 on PyPI61
License unclear Active released

What it is and what it does

pillow-jxl-plugin is a Pillow plugin that adds JPEG-XL (JXL) codec support via Rust bindings to libjxl. Once imported, it registers itself with Pillow and enables reading and writing JXL images through the standard image interface. The plugin supports both lossless encoding and lossy encoding with quality parameters, and can preserve EXIF metadata during encoding.

It depends on pillow and packaging, and is distributed as pre-compiled wheels for Python 3.10–3.13 across Windows, macOS, and Linux platforms (manylinux and musllinux). Some platform–interpreter combinations lack wheels and require building from source, which needs Rust installed.

Use it for:

  • Convert PNG or JPEG images to JXL format for better compression while preserving quality or lossless fidelity.
  • Read JXL images in image processing pipelines that already use Pillow without learning a separate API.
  • Batch-transcode image collections to JXL as part of web asset optimization workflows.
  • Encode images with EXIF metadata intact when switching to JXL in photo management applications.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Registers JPEG-XL codec support with Pillow, enabling reading and writing of JXL images through the standard image API with lossless and quality-based encoding options.

Yes, if you need JXL support in Pillow and your platform has a compatible wheel. The package is actively maintained, has no known vulnerabilities, and integrates seamlessly with Pillow's standard API. The main caveat is the unclear license status—verify the repository's license before use in proprietary projects. Install friction is moderate due to compiled bindings, but wheels cover most common environments.

Install

pillow-jxl-plugin on PyPI

pip

pip install pillow-jxl-plugin

uv

uv add pillow-jxl-plugin

poetry

poetry add pillow-jxl-plugin

Installing pillow-jxl-plugin

Before you install

Medium install friction due to compiled Rust bindings; wheels are available for Python 3.10–3.13 on Windows, macOS, and Linux (manylinux/musllinux), but not all platform combinations are covered. Actively maintained with a recent release.

License in practice

License status is unclear; no SPDX identifier or raw license text is declared in the package metadata. Verify the actual license terms in the repository before use in proprietary or restricted contexts.

Quickstart

import pillow_jxl
from packaging import version

# After import, use standard image operations
# with Image.open("example.png") as img:
#     img.save("example.jxl", lossless=True)

Requires pillow and packaging as runtime dependencies; Rust toolchain needed only when building from source.

Verify before relying

  • Actual license terms (no SPDX or raw license metadata provided)
  • Performance characteristics and stability guarantees across versions
  • Whether EXIF metadata encoding works reliably across all supported platforms

Package facts

License not declared (unclear)
Python support supports the current Python release (>=3.9)
Install friction medium — platform-specific wheel
Runtime dependencies 2 — packaging, pillow
Maintenance actively maintained — 28 days since the last release
Last repo commit
First released
Downloads 215,553/month — #9,398 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pillow_jxl_plugin-1.3.8-cp310-cp310-macosx_10_12_x86_64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-macosx_11_0_arm64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-musllinux_1_2_aarch64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-musllinux_1_2_armv7l.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-musllinux_1_2_i686.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-musllinux_1_2_x86_64.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-win32.whl; pillow_jxl_plugin-1.3.8-cp310-cp310-win_amd64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-macosx_10_12_x86_64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-macosx_11_0_arm64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-musllinux_1_2_aarch64.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-musllinux_1_2_armv7l.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-musllinux_1_2_i686.whl; pillow_jxl_plugin-1.3.8-cp311-cp311-musllinux_1_2_x86_64.whl

Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyProgramming Language :: Rust

Tags

jpeg-xl pillow codecjxl image format supportpillow jxl pluginread write jpeg-xl imagesjxl encoder decoder
image-codecpillow-pluginrust-bindings

More Graphics packages