Skip to content
Convert jpeg/png to webp with PHP (if at all possible)
Branch: master
Clone or download
Latest commit b378468 Apr 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
build-scripts renamed "build" to "src-build" Apr 24, 2019
build-tests-webp-convert renamed "build" to "src-build" Apr 24, 2019
build-tests-wod renamed "build" to "src-build" Apr 24, 2019
docs removed old summary and created a new one Apr 25, 2019
src-build rebuild Apr 26, 2019
src doc comments. #138 Apr 26, 2019
tests one more round... Apr 25, 2019
.gitattributes chmod to 644 Sep 19, 2018
.gitignore renamed "build" to "src-build" Apr 24, 2019
.php_cs.dist Moved source files to new src dir. Closes #39 Apr 17, 2018
.travis.yml Added code coverage. #121 Apr 24, 2019 minor Dec 27, 2018
LICENSE Adding license Mar 2, 2018 Added code coverage. #121 Apr 24, 2019
composer.json removed --coverage-text etc from phpunit call. This is now set up in … Apr 25, 2019
phpdox.xml Added phpdox.xml. #139 Apr 26, 2019
phpstan.neon set reportUnmatchedIgnoredErrors to false. Some errors only shows whe… Apr 21, 2019

WebP Convert

Latest Stable Version Minimum PHP Version Build Status Coverage Status Quality Score Software License

Convert JPEG & PNG to WebP with PHP

This library enables you to do webp conversion with PHP using cwebp, gd, imagick, ewww cloud converter or the open source wpc cloud converter. It also allows you to try a whole stack – useful if you do not have control over the environment, and simply want the library to do everything it can to convert the image to webp.

In addition to converting, the library also has a method for serving converted images, and we have instructions here on how to set up a solution for automatically serving webp images to browsers that supports webp.

NOTE: This master branch contains code for the upcoming 2.0 release. It is not stable at all.


Require the library with Composer, like this:

composer require rosell-dk/webp-convert

Converting images

To convert an image, using a stack of converters, use the WebPConvert::convert method. It is documented in docs/api/

Here is an example:


// Initialise your autoloader (this example is using Composer)
require 'vendor/autoload.php';

use WebPConvert\WebPConvert;

$source = __DIR__ . '/logo.jpg';
$destination = __DIR__ . '/logo.jpg.webp';

$success = WebPConvert::convert($source, $destination, [
    // It is not required that you set any options - all have sensible defaults.
    // We set some, for the sake of the example.
    'quality' => 'auto',
    'max-quality' => 80,
    'converters' => ['cwebp', 'gd', 'imagick', 'wpc', 'ewww'],  // Specify conversion methods to use, and their order

    'converter-options' => [
        'ewww' => [
            'key' => 'your-api-key-here'
        'wpc' => [
            'api-version' => 1,
            'url' => '',
            'api-key' => 'my dog is white'

    // more options available! - see the api

NOTE: In 2.0.0, WebPConvert will not return any value. Failure is handled purely by exceptions (1.3, also throws exceptions, but not when the failure is that no converters were operational)

To convert using a specific conversion method, simply set the converters option so it only has that method.

The conversion methods (aka "converters") are documented here: docs/

Serving converted images

The convertAndServe method tries to serve a converted image. If there already is an image at the destination, it will take that, unless the original is newer or smaller. If the method cannot serve a converted image, it will serve original image, a 404, or whatever the 'fail' option is set to - and return false. It also adds a X-WebP-Convert-Status header, which allows you to inspect what happened.


$success = WebPConvert::convertAndServe($source, $destination, [
    'fail' => 'original',     // If failure, serve the original image (source).
    //'fail' => '404',        // If failure, respond with 404.
    //'show-report' => true,  // Generates a report instead of serving an image

    // Besides the specific options for convertAndServe(), you can also use the options for convert()

To see all options, look at the API: docs/api/

WebP on demand

The library can be used to create a WebP On Demand solution, which automatically serves WebP images instead of jpeg/pngs for browsers that supports WebP. To set this up, follow what's described in this tutorial.

WebP Convert in the wild

WebP Convert is used in the following projects:


Wordpress integration


A cloud service based on WebPConvert


Kirby CMS integration

Supporting WebP Convert

Bread on the table don't come for free, even though this library does, and always will. I enjoy developing this, and supporting you guys, but I kind of need the bread too. Please make it possible for me to have both:

Become a backer or sponsor on Patreon.

You can’t perform that action at this time.