mod_pagespeed vs Thumbor
TL;DR
Thumbor is a long-running open-source image processing server with smart cropping and a plugin ecosystem. mod_pagespeed is a self-hosted optimization pipeline that handles images plus critical CSS, JS/CSS minification, and HTML rewriting. If you specifically need Thumbor's smart-crop and face-detection features, mod_pagespeed isn't a replacement. For everything else page-optimization-related, mod_pagespeed covers more ground in one process.
At a glance
| Feature | mod_pagespeed 2.1 | Thumbor |
|---|---|---|
| Deployment | Self-hosted (module + optimizer worker) | Self-hosted (Python service) |
| Scope | Full HTML pipeline | Image processing only |
| Runtime | C++ worker, nginx module | Python (Tornado) |
| Platform | Native module for Apache and nginx, reverse-proxy mode in front of any HTTP origin, or ASP.NET Core middleware. The IIS package ships from the 1.15 packaging channel. | Any HTTP frontend |
| Pricing model | Free (Apache-2.0); paid support optional | Open source (MIT) |
| Image optimization | WebP and AVIF — JPEG, PNG, GIF + responsive variants | JPEG, PNG, GIF, WebP; smart crop via face/feature detection |
| Smart cropping | Aspect-driven resizing | Face / focal-point detection (a Thumbor specialty) |
| Critical CSS injection | ||
| JS / CSS minification | ||
| HTML rewriting | ||
| Caching | Cyclone cache, zero-copy mmap serving | Pluggable (file, Redis, HTTP, MongoDB) |
| Measured page-size reduction | −68% on our own pages (full pipeline) | Image bytes only — no HTML/CSS/JS in scope |
| License | Licensed under the Apache License 2.0; paid tiers are support subscriptions. See the software license. | MIT |
| Control over data | Your servers, no third party | Your servers, no third party |
-
Deployment
- mod_pagespeed 2.1
- Self-hosted (module + optimizer worker)
- Thumbor
- Self-hosted (Python service)
-
Scope
- mod_pagespeed 2.1
- Full HTML pipeline
- Thumbor
- Image processing only
-
Runtime
- mod_pagespeed 2.1
- C++ worker, nginx module
- Thumbor
- Python (Tornado)
-
Platform
- mod_pagespeed 2.1
- Native module for Apache and nginx, reverse-proxy mode in front of any HTTP origin, or ASP.NET Core middleware. The IIS package ships from the 1.15 packaging channel.
- Thumbor
- Any HTTP frontend
-
Pricing model
- mod_pagespeed 2.1
- Free (Apache-2.0); paid support optional
- Thumbor
- Open source (MIT)
-
Image optimization
- mod_pagespeed 2.1
- WebP and AVIF — JPEG, PNG, GIF + responsive variants
- Thumbor
- JPEG, PNG, GIF, WebP; smart crop via face/feature detection
-
Smart cropping
- mod_pagespeed 2.1
- Aspect-driven resizing
- Thumbor
- Face / focal-point detection (a Thumbor specialty)
-
Critical CSS injection
- mod_pagespeed 2.1
- Yes
- Thumbor
- No
-
JS / CSS minification
- mod_pagespeed 2.1
- Yes
- Thumbor
- No
-
HTML rewriting
- mod_pagespeed 2.1
- Yes
- Thumbor
- No
-
Caching
- mod_pagespeed 2.1
- Cyclone cache, zero-copy mmap serving
- Thumbor
- Pluggable (file, Redis, HTTP, MongoDB)
-
Measured page-size reduction
- mod_pagespeed 2.1
- −68% on our own pages (full pipeline)
- Thumbor
- Image bytes only — no HTML/CSS/JS in scope
-
License
- mod_pagespeed 2.1
- Licensed under the Apache License 2.0; paid tiers are support subscriptions. See the software license.
- Thumbor
- MIT
-
Control over data
- mod_pagespeed 2.1
- Your servers, no third party
- Thumbor
- Your servers, no third party
When to choose Thumbor
- You need face-aware or focal-point cropping — Thumbor's smart-crop is the genuine differentiator and mod_pagespeed doesn't replicate it.
- You're already in a Python ecosystem and want to extend the optimizer with your own filters or loaders.
- You're processing user-uploaded images and need a long-lived URL-driven transform API.
- You want a long-established image server with a track record across many production deployments.
- You don't need CSS, JS, or HTML optimization — just images.
When to choose mod_pagespeed
- You want one process handling images, CSS, JS, and HTML, the way mod_pagespeed did.
- You're on nginx and want optimization in the response path, not as a separate transform service.
- You care about critical CSS for LCP — Thumbor doesn't extract or inline CSS.
-
You want the format decision made automatically from the request's
Acceptheader rather than encoded in template URLs — WebP and AVIF. - You're coming from mod_pagespeed and want the closest functional successor.
How they overlap
Both tools convert and resize images, both support WebP, both can be self-hosted with no third-party data path.
The overlap stops at images. Thumbor doesn't aim to be an HTML optimizer; mod_pagespeed doesn't aim to be a smart-crop service. Picking between them is mostly picking your scope.
Migrating from Thumbor to mod_pagespeed
Migration is reasonable if you adopted Thumbor for image format conversion and never used its smart-crop features. Keep Thumbor for focal-point cropping or face detection — mod_pagespeed doesn't replace those — and pair it with a server-layer rewriter for the rest of the HTML response.
If you do migrate:
-
Audit your templates for hard-coded Thumbor URL patterns (
/unsafe/300x200/...). mod_pagespeed rewrites image URLs at the HTML layer; many template patterns can be simplified or removed. - Decide where to keep user-upload processing. mod_pagespeed handles HTML-referenced images; runtime transforms for user uploads may still belong in a dedicated image service.
- Configure the module and shared cache directory before retiring the Thumbor service. The Docker Compose walkthrough covers a working baseline.
Code & config side-by-side
Resize and convert to WebP in Thumbor (URL-based):
/unsafe/800x600/filters:format(webp)/example.com/photo.jpg
Equivalent in mod_pagespeed 2.1. Install the nginx module on Debian 11/12/13, Ubuntu 22.04/24.04 (amd64 + arm64), or AlmaLinux 9 (x86_64 + aarch64):
curl -fsSL https://packages.modpagespeed.com/install.sh | sudo sh
sudo apt install nginx-module-pagespeed # or: sudo dnf install nginx-module-pagespeed
Then enable the filters (nginx config; the filter decides per-request):
pagespeed on;
pagespeed EnableFilters resize_images,convert_jpeg_to_webp;
pagespeed FileCachePath /var/cache/pagespeed;
mod_pagespeed reads the client's Accept header and serves WebP only to browsers that
support it. Thumbor requires the URL to commit to the format up front (or you build content negotiation
around it yourself).
Optimize more than images
Keep Thumbor for face-aware crops; add format negotiation, CSS/JS minification, and critical CSS in one server-layer pipeline. On our own pages the full pipeline measures −68% page size. Install and run it — open source under the Apache License 2.0, free in development and in production.
See also:
- mod_pagespeed vs imgproxy — imgproxy is closer to Thumbor than to mod_pagespeed
- mod_pagespeed vs Cloudinary — managed SaaS alternative if you don't want to self-host
- Self-hosted image optimization — WebP/AVIF generated and served from your own origin
- Alternatives to mod_pagespeed — for readers searching for a mod_pagespeed replacement
- mod_pagespeed 2.1 — drop-in continuation with native modules for Apache and nginx. The IIS package ships from the 1.15 packaging channel.
Thumbor and other product names are trademarks of their respective owners. Comparisons reflect publicly available information as of 2026 and are provided for evaluation; We-Amp B.V. is not affiliated with or endorsed by Thumbor.