NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5304 most downloaded on PyPI
A Python image library that sits on top of Pillow, Wand and OpenCV
Last release 11 months ago
26 Oct 2025
Release timing varies
gaps range from 4 weeks to 1.8 years
Nearly every release is documented
notes for 27 of 29 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
34 releases · first in 2014
This release adds support for Python 3.14 and Pillow 12 and later.
This release adds support for Python 3.14 and Pillow 12 and later.
Python 3.9 is end of life and no longer supported as of this release.
Full Changelog: https://github.com/wagtail/Willow/compare/v1.11.0...v1.12.0
Add support for Python 3.14 (Storm Heg)
Drop support for Python 3.9 (Storm Heg)
The minimum required pillow-heif version is now 1.0.0 (Storm Heg)
Add support for Pillow 12 and beyond, removed hard upper bound (Storm Heg)
Adopt deprecated Pillow PNG clipping as expected behavior by @Stormheg in https://github.com/wagtail/Willow/pull/171
One column per quarter.
This release has Willow use the AVIF image format support that shipped with Pillow 11.3 and resolves compatibility issues with pillow_heif 1.0.0.
The minimum required version of Pillow is now 11.3.0.
Full Changelog: https://github.com/wagtail/Willow/compare/v1.10.0...v1.11.0
Switch AVIF support to use Pillow's built-in AVIF support instead of pillow_heif (Storm Heg)
Minimum required Pillow version is now 11.3.0 (Storm Heg)
Unpin pillow_heif upper version limit, no longer required (Storm Heg)
Adopt (deprecated) Pillow PNG channel clipping as expected behavior, see PR #171 for details (Storm Heg)
Remove deprecated PIP_NO_PYTHON_VERSION_WARNING by @Stormheg in https://github.com/wagtail/Willow/pull/164
This release fixes a compatibility issue with Pillow 11.2.1, see #168
Full Changelog: https://github.com/wagtail/Willow/compare/v1.9.0...v1.10.0
Fix PIL.UnidentifiedImageError when operating on AVIF images with Pillow 11.2.1 (Storm Heg)
Pinned pillow_heif upper version limit to v0.22.0 to ensure AVIF support is available, we will unpin it once we no longer rely on the AVIF support it provides - you may see a warning about AVIF support being deprecated by pillow_heif in the meantime (Storm Heg)
Maintenance: run OpenCV testsuite in GitHub Actions (Storm Heg)
This release adds official support for Python 3.13 and Pillow 11. It also drops support for Python 3.8
This release adds official support for Python 3.13 and Pillow 11. It also drops support for Python 3.8
test_process_optimizes_image by @Stormheg in https://github.com/wagtail/Willow/pull/152save_as_heic in README by @laymonage in https://github.com/wagtail/Willow/pull/157Full Changelog: https://github.com/wagtail/Willow/compare/v1.8.0...v1.9.0
Improve type handling when running optimisers (Jake Howard)
Add support for Pillow 11, Python 3.13 (Storm Heg)
Drop support for Python 3.8 (Storm Heg)
Docs: Fix incorrect method name for save_as_heic in README (Sage Abdullah)
Docs: Fix link to changelog (Matt Westcott)
> This release converts CMYK images with an ICC profile to sRGB as CMYK is not supported by PNG, WEBP, AVIF and HEIC Pillow encoders.
[!NOTE] This release converts CMYK images with an ICC profile to sRGB as CMYK is not supported by PNG, WEBP, AVIF and HEIC Pillow encoders.
The issue stems from the fact that when a CMYK image is encoded, it gets converted to RGB, thus resulting in inaccurate colors because Pillow ignores the ICC profile during the conversion. So, we manually force an accurate conversion to RGB before encoding the image. This results in a much more accurate representation of the original CMYK image.
transform_colorspace_to_srgb operation and use it to fix inaccurate colors when saving specific image files by @Stormheg in https://github.com/wagtail/Willow/pull/142Full Changelog: https://github.com/wagtail/Willow/compare/v1.7.0...v1.8.0
Fix sphinx build errors
Remove old imghdr patch test (Storm Heg)
Update the OpenCV detect_faces test for determinism (Stephan Lachnit)
Add transform_colorspace_to_srgb operation and use it to fix inaccurate colors when saving specific image files (Storm Heg)
Note: this forces conversion to sRGB for CMYK images with an ICC profile as CMYK is not supported by PNG, WEBP, AVIF and HEIC Pillow encoders. Otherwise, when a CMYK image is encoded, it gets converted to RGB resulting in inaccurate colors because Pillow ignores the ICC profile when performing the conversion. So, as a workaround, we manually force an accurate conversion to RGB before encoding the image. This results in a much more accurate representation of the original CMYK image.
Add support for ICO images (Jake Howard)
This release is officially tested with Python 3.12, adds shorthand optional dependencies for Pillow/Wand (Willow[Pillow]/Willow[Wand]) so as to get th
This release is officially tested with Python 3.12, adds shorthand optional dependencies for Pillow/Wand (Willow[Pillow]/Willow[Wand]) so as to get the correct image library versions and fixes a few long standing issues
image/heic mime type by @stephanlachnit in https://github.com/wagtail/Willow/pull/132Full Changelog: https://github.com/wagtail/Willow/compare/v1.6.2...v1.7.0
Note: due to various limitations, version 1.6.3 includes some of the fixes present in 1.7.x, most importantly the ICC profile and EXIF data when saving a JPEG to PNG, WebP, AVIF.
Test with Python 3.12 (@zerolab)
Add optional dependencies for Pillow/Wand (@zerolab) One can run pip install Willow[Pillow] or Willow[Wand] and get the correct Pillow or Wand versions.
Replace wrong unicode character in the image/heic mime type (Stephan Lachnit)
Fix color management by keeping ICC color profiles and EXIF data in addition (André Fuchs, Stefan Istrate)
Replaces the wrong unicode character in the image/heic mime type (by @stephanlachnit in #132)
This release:
image/heic mime type (by @stephanlachnit in #132)Full Changelog: https://github.com/wagtail/Willow/compare/v1.6.2...v1.6.3
Replace wrong unicode character in the image/heic mime type (Stephan Lachnit)
Fix color management by keeping ICC color profiles and EXIF data in addition (André Fuchs, Stefan Istrate)
This release ensures that all Willow ImageFile subclasses define a mime_type attribute.
This release ensures that all Willow ImageFile subclasses define a mime_type attribute.
Full Changelog: https://github.com/wagtail/Willow/compare/v1.6.1...v1.6.2
Accounts for the full allowed notation in SVG viewBox, for example -5.000000011410315e-06 (reference)
Accounts for the full allowed notation in SVG viewBox, for example -5.000000011410315e-06 (reference)
NUMBER_PATTERN regex for parsing SVG viewboxes by @jams2 in https://github.com/wagtail/Willow/pull/128Full Changelog: https://github.com/wagtail/Willow/compare/v1.6...v1.6.1
🖼️ This release adds support for AVIF images via pillow-heif for Pillow, or ImageMagick 7.0.25+ for Wand.
🖼️ This release adds support for AVIF images via pillow-heif for Pillow, or ImageMagick 7.0.25+ for Wand.
🚀 It also introduces a new optimizer mechanism that allows optimizing images using dedicated libraries. Out of the box, Willow comes with optimizers for gifsicle, jpegoptim, optipng, pngquant and cwebp.
🐍 Willow no longer supports Python 3.7.
pip install willow[heif] by @zerolab in https://github.com/wagtail/Willow/pull/126Full Changelog: https://github.com/wagtail/Willow/compare/v1.5...v1.6
Configure linting with black, ruff and pre-commit. Add coverage reports (@zerolab)
Switch to flit for packaging, and PyPI trusted publishing (@zerolab)
Drop support for Python 3.7
Add AVIF support (Aman Pandey)
Add support for image optimization libraries via optimizer classes (@zerolab)
Add check for CMYK when saving as PNG (Stan Mattingly, @zerolab)
This release ensures that all Willow ImageFile subclasses define a mime_type attribute.
This release ensures that all Willow ImageFile subclasses define a mime_type attribute.
Full Changelog: https://github.com/wagtail/Willow/compare/v1.5.2...v1.5.3
Accounts for the full allowed notation in SVG viewBox, for example -5.000000011410315e-06 (reference)
Accounts for the full allowed notation in SVG viewBox, for example -5.000000011410315e-06 (reference)
NUMBER_PATTERN regex for parsing SVG viewboxes by @jams2 in https://github.com/wagtail/Willow/pull/128Full Changelog: https://github.com/wagtail/Willow/compare/v1.5.1...v1.5.2
This release fixes an SVG cropping issue (#113, @jams2)
This release fixes an SVG cropping issue (#113, @jams2)
Full Changelog: https://github.com/wagtail/Willow/compare/v1.5...v1.5.1
Drop support for Pillow versions below 9.1 and fix Pillow 10 deprecation warnings (Alex Tomkins)
imghdr with filetype. This allows detecting newer image formats such as HEIC (Herbert Poul)pillow-heif library (Alexander Piskun)Imagemagick 7 compatibility fixes (Matt Westcott)
Drop support for Python 3.4
Imagemagick 7 compatibility fixes (Matt Westcott)
Fix: Implemented consistent behavior between Pillow and Wand for out-of-bounds crop rectangles (Matt Westcott)
Implemented save quality/lossless options for WebP (@mozgsml)
Added .get_frame_count() operaton (@kaedroho)
Added WebP support (@frmdstryr)
Added WebP support (@frmdstryr)
Added .rotate() operation (@mrchrisadams & @simo97)
Added set_background_color_rgb operation
set_background_color_rgb operationOpenCV 3 support (Will Giddens)
Support for image optimisation and saving progressive JPEG files
Support for image optimization and saving progressive JPEG files
Added documentation
Fixed crash in the Pillow auto_orient operation when the image has an invalid Orientation EXIF Tag (Sigurdur J Eggertsson)
A major internals refactor has taken place in this release, there are a number of breaking changes:
A major internals refactor has taken place in this release, there are a number of breaking changes:
Other changes in this release:
Improvements to error handling when an operation cannot be found. There's now three different error classes can be raised (all descend from LookupErro
Changes since beta 3
LookupError). Previously, LookupError was raised in all three cases. See https://github.com/torchbox/Willow/blob/cefc97d83fc8cf689a5249096a5a339eaad1676e/willow/registry.py#L4-L24Image.save() now raises ValueError if the output format isn't recognisedRegistry.route_to_operation with Registry.find_operationNothing published for this version
Release withdrawn due to packaging issues. See beta 3
Release withdrawn due to packaging issues. See beta 3
- #23 Fixed a crash in Pillow backend when saving GIF images with transparency (@shredding)
JPEGs are now detected from first two bytes of their file. Allowing non JFIF/EXIF JPEG images to be loaded
Added has_alpha and has_animation operations
Added loader for BMP files
Added has_alpha and has_animation operations
Added get_pillow_image and get_wand_image operations
Added save_as_{jpeg,png,gif} operations
Crop and resize now all arguments in a tuple (Similar to Pillow)
Dropped Python 2.6 and 3.2 support
Formats now detected using images header instead of extension
Now possible to specify alternative cascade file for face detection
Fix: Images now saved in the same format they were loaded
Fix: 1 and P formatted images now converted to RGB when saving to JPEG
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Initial release
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →