Pillow

The friendly PIL fork that adds image processing capabilities to Python

Library
PyPI
v13.0.0
13,920 stars
MIT-CMU

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 100
Maintenance 84
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
86 /100 Excellent
Architecture 88
Code Quality 90
Innovation 82
Learning Curve 85

Pillow is the actively maintained fork of the original Python Imaging Library (PIL), giving Python programs the ability to open, manipulate, and save images across dozens of file formats. It exposes an efficient internal pixel representation backed by a C extension (_imaging), so common operations like resizing, cropping, filtering, and color-space conversion run fast even on large images.

Beyond the core Image object, Pillow ships drawing primitives, font rendering, color management (ICC profiles), and format-specific plugins for everything from PNG and JPEG to less common formats like TIFF, WebP, AVIF, and FITS. It has been the de facto standard for image I/O in Python for over a decade and is a dependency of most Python web frameworks, data science stacks, and ML pipelines that touch images.

What You Get

  • A unified Image.open()/Image.save() API that reads and writes 30+ image formats (PNG, JPEG, GIF, BMP, TIFF, WebP, AVIF, ICO, PPM, and more) through a plugin architecture
  • Pixel-level and region-level operations: crop, resize, rotate, paste, composite, and per-pixel access via load()
  • A drawing and typography toolkit (ImageDraw, ImageFont) for rendering shapes and TrueType/OpenType text onto images
  • A filter and enhancement pipeline (ImageFilter, ImageEnhance, ImageOps) for blurring, sharpening, contrast, and color adjustments
  • ICC color-management support (ImageCms) and color-space conversions (RGB, CMYK, LAB, grayscale, palette)
  • A C-accelerated core (libImaging) so hot-path operations like decode/resize/composite avoid pure-Python overhead

Common Use Cases

  • Generating and resizing thumbnails or responsive image variants in a Django/Flask web app
  • Preprocessing images (resize, normalize, convert to arrays) before feeding them into a PyTorch or scikit-learn pipeline
  • Batch format conversion and metadata (EXIF) extraction for a photo-management or asset pipeline
  • Server-side generation of OG images, watermarks, or dynamically composed graphics
  • Reading and validating uploaded images (format sniffing, decompression-bomb protection) in an API backend

Under The Hood

Architecture — Pillow’s design centers on the Image class in src/PIL/Image.py (roughly 4,300 lines), which acts as a thin, lazily-evaluating Python wrapper around a C-level image buffer. File-format support is implemented as a plugin system: each of the ~90 *ImagePlugin.py modules registers itself with the core Image module and provides format-specific decode/encode logic, so adding or excluding a format is a matter of importing (or not) that plugin. The performance-critical inner loop — pixel decoding, resampling, geometric transforms, compositing — lives in src/libImaging/ (roughly 90 C source/header files) and src/_imaging.c, exposed to Python via a hand-written C extension rather than a wrapper generator like SWIG or Cython. Optional native codecs (AVIF, WebP, FreeType-based font rendering, LittleCMS color management, morphology) are separate C extension modules (_avif.c, _webp.c, _imagingft.c, _imagingcms.c, _imagingmorph.c) built conditionally depending on which system libraries are available at install time.

Tech Stack — The Python surface targets 3.11+ and is built with a custom PEP 517 backend (_custom_build/backend.py) on top of setuptools, because Pillow needs to detect and link against system imaging libraries (libjpeg, zlib, libtiff, libwebp, OpenJPEG, LittleCMS, FreeType, raqm) at build time rather than relying on pure-Python packaging. Wheels are built via cibuildwheel across Linux/macOS/Windows with vendored or system dependencies depending on platform, which is why pip install pillow works without a local C toolchain. pybind11 is used for parts of the extension glue.

Code Quality — The Tests/ directory contains 175+ test files exercising individual format plugins, drawing operations, color conversions, and known CVE regressions (e.g. test_decompression_bomb.py), run via pytest with coverage tracking (pytest-cov) and parallelization (pytest-xdist). The project enforces mypy --strict-style settings (disallow_untyped_defs, disallow_any_generics) on the Python layer, ruff and black for linting/formatting, and bandit for security scanning of src/, all wired into pre-commit hooks. Fuzz testing against OSS-Fuzz (Tests/oss-fuzz/) is used to catch memory-safety issues in the C decoders, which is notable given the historical CVE surface of image-parsing libraries.

API Design — The library optimizes for a low-boilerplate happy path — Image.open(path) followed by chained method calls (.resize().convert().save()) — while still surfacing format-specific metadata (EXIF, ICC profiles, animation frames) through consistent attribute and method names across otherwise very different file formats. Method and module naming is stable across more than a decade of releases, which is part of why Pillow remains a safe default dependency: code written against PIL/Pillow in the 2.x era largely still runs.

Used by 65 apps in this directory

TypeScript
49%
Apache 2.0

LTX-Desktop

AI Design Tools · Video Editors

2,141

An open-source Electron app that runs LTX-2 text-to-video, image-to-video, and video editing models locally on your GPU, or via a cloud API when your hardware can't keep up.

View details
76
Repo Health
82
Technical
73
Dependency
Built with
TypeScript 49%
Python 46%
Updated 1 weeks ago
TypeScript
44%
Other

Magic

AI Agents · Automation · Low Code Platforms

5,055

Magic is an enterprise-grade open-source AI agent platform combining a generalist AI agent, workflow engine, IM, and collaborative office system for running an AI-powered digital workforce.

View details
68
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 44%
PHP 32%
Updated 2 months ago
Svelte
32%
GPL 3.0

Mathesar

Databases

5,158

Spreadsheet-like interface for your PostgreSQL database — self-hosted, no SQL required, native Postgres access control.

View details
70
Repo Health
80
Technical
68
Dependency
Built with
Svelte 32%
TypeScript 27%
Python 21%
Updated 6 days ago
Python
66%
Other

Morphik

AI Development · Databases · Search

3,717

Morphik is an AI-native ingestion and retrieval engine that lets developers store, search, and reason over visually rich documents — scanned PDFs, manuals, slides, and video — without duct-taping together OCR, an embedding model, and a vector database.

View details
64
Repo Health
71
Technical
67
Dependency
Built with
Python 66%
TypeScript 23%
Updated 1 weeks ago
Python
52%
Other

Odoo

CRM · ERP · Productivity

55,289

The open source ERP platform that integrates CRM, accounting, inventory, manufacturing, and 60+ business apps into one seamlessly connected suite.

View details
87
Repo Health
82
Technical
64
Dependency
Built with
Python 52%
JavaScript 43%
Updated 5 days ago
Python
38%
Other

Open WebUI

AI Agents · AI Assistants

156,607

The extensible, privacy-first AI platform that runs Ollama, OpenAI, and any LLM backend behind a polished, feature-packed web interface.

View details
92
Repo Health
75
Technical
66
Dependency
Built with
Python 38%
Svelte 35%
JavaScript 19%
Updated 5 days ago
TypeScript
92%
Other

OpenHands

AI Code Assistants · AI Development

91,695

The self-hosted developer control center for running AI coding agents — locally, in Docker, on VMs, or across cloud backends — with automation workflows for GitHub, Slack, and more.

View details
91
Repo Health
82
Technical
67
Dependency
Built with
TypeScript 92%
Updated 6 days ago
Python
72%
AGPL 3.0

OpenMontage

AI Agents · Video Editors

71,239

Open-source agentic video production system: your AI coding assistant researches, scripts, generates, edits and renders finished videos through approval-gated pipelines with budget controls.

View details
74
Repo Health
87
Technical
76
Dependency
Built with
Python 72%
HTML 18%
Updated 5 days ago
TypeScript
93%
MIT

OpenReel Video

Video Editors

5,442

A browser-based, GPU-accelerated video editor with multi-track timelines, color grading, and 4K export — no uploads, no installs, no watermarks.

View details
72
Repo Health
80
Technical
71
Dependency
Built with
TypeScript 93%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers