Skip to main content
mod_pagespeed 2.1 is here — open source (Apache-2.0): the module you know, plus the optimizer worker

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

  • 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 Accept header 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:

  1. 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.
  2. 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.
  3. 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:

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.