What this site is
Pillow Python is an independent website about Pillow, the image processing library for Python (the maintained fork of PIL, the Python Imaging Library). We publish:
- How-to guides for common image tasks, such as resizing, adding text and converting formats;
- fixes for Pillow errors, each reproduced on a real install;
- browser tools that generate working Pillow code (they run entirely in your browser; your images are not uploaded);
- a concise reference to the modules people use most.
Independence
This site is not the official Pillow website and is not affiliated with, endorsed by or maintained by the Pillow project, its maintainers or Tidelift. The official documentation is at pillow.readthedocs.io and the source code at github.com/python-pillow/Pillow. Bug reports about Pillow itself belong in the official issue tracker, not here. See the disclaimer for details.
How we write and test
- Start from a real problem. Topics come from the errors and questions Python developers actually search for.
- Reproduce it. Error pages show tracebacks captured by running the failing code, not retyped from memory.
- Run every example. Code is executed against Pillow 12.3.0 on Python 3.13 (Linux) in a clean environment. If an example fails, the page is not published. Printed output and images on the page are the real results.
- Check versions against primary sources. Statements such as "removed in Pillow 10.0.0" are checked against Pillow's official release notes.
- Re-test everywhere, automatically. A GitHub Actions job re-runs every example on Linux, Windows and macOS each week, and against the newest Pillow release. The line under each example shows the result per operating system, and where behaviour differs (for example, font lookup on Windows) you can see exactly what happens there.
- Let you run it yourself. Examples with a ▶ Run button execute real Pillow in your browser through Pyodide (Python compiled to WebAssembly). You can edit the code and see the output and images instantly, with nothing to install and nothing uploaded. The button only appears on examples our build has verified behave the same in the browser as on a normal Python install; the browser currently runs Pillow 12.2.0, one release behind the version we test on.
This process applies to everything under Guides and the individual error pages. The older reference pages and homepage recipes are being re-tested the same way; until a page shows a "tested with" line, treat its examples as untested.
Running the code has caught several popular myths. For example, many answers still recommend calling seek(0) on a
BytesIO before Image.open(); current Pillow does this itself
(details).
Corrections
If something is wrong or out of date, email contact@pillowpython.com with the page address and what you saw. We fix confirmed errors promptly and update the page's "tested" date.
Sample images
The photos used in our examples are public-domain NASA photographs of the Artemis II rocket at Launch Pad 39B, Kennedy Space Center, January 2026 (credit: NASA/Sam Lott). We use them because they are real camera photos with a wide-gamut Display P3 colour profile, which makes file-size and colour-profile results realistic. Their use here does not imply endorsement by NASA. Graphics and test patterns are generated with Pillow itself.
Licences and credits
Pillow is © 1995–2011 Fredrik Lundh and contributors, 2010 Jeffrey A. Clark and contributors, and is distributed under the MIT-CMU licence. "Pillow" is used here only to describe the software this site is about. Code examples on this site may be used freely in your own projects; see the terms.