How to serve WebP images with a Drupal 8/Drupal 9 site


Your web server needs to support WebP through PHP.
PHP 5 >= 5.4.0
GD Library

Check your PHP setup
How to check if everything is working as expected:

php -i | grep 'WebP'

If everything is working fine you should see

WebP Support => enabled

We should be ready to go on, yay 🎉

If you get another output, you might need to enable/install libgd and enable it in your PHP.ini.

This tutorial only works with Drupal 8/9. As a start you’ll need to enable/install some modules:

  1. ImageAPI Optimize
    The module has built in support for core Image styles and a service allowing use in third party modules.
  2. ImageAPI Optimize WebP
    ⚠️ Make sure to enable the “ImageAPI Optimize WebP Responsive” submodule if you’re using the Responsive Image module in Drupal Core.
  3. ImageAPI Optimize Binaries
    This module is optional but it provides support for popular binary image processors like JpegOptim, PngQuant, AdvPNG etc.
Screenshot of the Modules overview where you can see the installed ImageAPI modules

Drupal Configuration

Head over to /admin/config/media/imageapi-optimize-pipelines for the Image API configuration.

The Image Optimize configuration page should look similar to this one. Note that you might only see the “Local Binaries” Pipeline first (if you installed it)

1. Add a new optimization pipeline
By clicking on “+ Add optimization pipeline”

Add optimization pipeline

2. Name your pipeline
I will call the pipeline “optimize images” but you can name it whatever you would like.

fill in the name of your pipeline

3. Choose your processor
We choose “WebP Deriver”.

Add new Processor, choose “WebP Deriver”

You should place the WebP processor before any other compression processors to avoid multiple compression of an image. This can have an inverse affect and provide a lower quality image at a larger file size.

4. Set image quality
You can set the image quality here, 80–90% should serve with good overall quality. 100% will be lossless.

5. Save
Click on “Save configuration” and you’re done.
⚠️ Don’t forget to clear the Drupal cache after this.

Enjoy WebP images with your Drupal site!




Sascha Eggenberger. Senior User Experience Designer @unic @Drupal Contributor. Drupal Design System, Claro, Gin. #OpenSource

Love podcasts or audiobooks? Learn on the go with our new app.


Is Data Integration Really That Complex?

Analyze Operationa l Team Boundaries


Implementing Randomized Kruskal’s Algorithm


Developing based on GeoServer restful api

Too Many Lasers!

Building APIs with GraphQL and Ruby on Rails

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sascha Eggenberger

Sascha Eggenberger

Sascha Eggenberger. Senior User Experience Designer @unic @Drupal Contributor. Drupal Design System, Claro, Gin. #OpenSource

More from Medium

Host my Hugo Blog website on for FREE in 10 minutes with GitLab CI/CD automation.

Laravel Courier Api Integration Using Multicourier for Bangladeshi Courier Companies

CSSBattle | #22 Cloud

Deploying Your First Website | An Absolute Beginner’s Guide

Index card drawer’s stacked