This article covers the basic settings of the EWWW Image Optimizer plugin for WordPress.
Purchasing an API key allows you to unlock additional compression levels, detailed below.
Used for debugging and troubleshooting. When enabled, the settings page and bulk optimize page will display debug information at the bottom of each page. Additionally, this will enable the output of the attachment metadata when viewing the Media Library in List mode. The debugging option also enables loging of this debug information (and more) to a file named debug.log, which can be found in the plugin folder on your server.
It also enables two new menu items/pages in the Media menu: Dynamic Image Debugging & Image Queue Debugging (more information via the related articles)
This option removes all image metadata. Sometimes Photoshop and other tools will even embed thumbnail versions of an image when you save to JPG, so removing metadata is vital to achieving the smallest size possible. Metadata can include EXIF fields like aperture, the type of camera used, exposure, etc. It also includes location, embedded copyright information, and color profiles. Anything that does not tell a computer how to render a pixel is stripped from the image.
Un-checking this option preserves all metadata, except when using Maximum lossy mode. In maximum lossy mode, for both JPG and PNG, the only fields that are preserved are copyright, location, and the creation date.
Lossless vs. Lossy
Lossless in any case with the API means that no pixels are changed and the images (before and after) will be visually identical. Lossy used to mean that you would lose significant amounts of quality, but also save lots of space in the process. EWWW I.O.'s lossy tools achieve an average of 45% savings with no noticeable loss of quality. The average is a 0.15% change in the image pixels, and a study published in 2014 by Radware showed that users only begin to notice a difference when the change in pixel information exceeds 1.5%, which is 10x the amount of quality loss of our highest compression.
JPG Optimization Level
- Lossless Compression - Uses the stock Jpegtran build used by most website performance testing sites.
- Maximum Lossless Compression - Uses the Mozilla build of Jpegtran for extra compression, requires an API key.
- Lossy Compression - Uses JPEGmini and requires an API key, you can give it a spin for free at jpegmini.com.
- Maximum Lossy Compression - Uses TinyJPG and requires an API key, give it a try at tinypng.com.
PNG Optimization Level
- Lossless Compression - Uses Optipng, and optionally Pngout, which have variable compression levels that can be configured under the advanced settings.
- Better Lossless Compression - Uses Optipng and PngOptimizerCL, requires an API key.
- Maximum Lossless Compression - Uses Optipng, PngOptimizerCL, and Advpng to squeeze extra bytes out of your images using the API. The use of Advpng adds a lot of processing time, so this may cause timeouts on PNG images.
- Lossy Compression - Uses Pngquant (one of the tools used by TinyPNG), and is available in "local" mode without an API key. If an API key is entered, the plugin will automatically use the API for lossy compression.
- Maximum Lossy Compression - Uses TinyPNG, requires an API key, and you can try it out at tinypng.com.
GIF Optimization Level
- There is only one level here, and it uses Gifsicle. While Gifsicle does various optimizations, it excels in removing pixels that are duplicated in animations. Thus to edit an optimized GIF, you need to use Gifsicle's --unoptimize option. If an API key is entered, then GIF files will be processed via the API.
PDF Optimization Level
- Lossless Compression - Uses the cpdf tool from Coherent PDF, and requires an API key.
- Lossy Compression - Uses Ghostscript to compress images within PDFs, but does poorly on PDFs which contain images of text (which is what you get when you scan a document and don't perform OCR on it). The cpdf tool is run afterwards to make sure the final PDF is fully optimized.
This setting instructs EWWW to pause in between images during bulk operations and during scheduled optimization. The Bulk Optimizer do images in batches when this is set to 0, but any value greater than 0 will cause it to do 1 image per request. It is strongly recommended to use this setting on shared hosting platforms, so that you do not get in trouble for abusing your server. With shared hosting there could be 100+ websites using the same server, and a bulk optimization uses a fair amount of resources, even if it is single-threaded.