Disclaimer: As the author of the EWWW Image Optimizer, I’m probably a bit biased towards my own work. However, I have no illusions about my code being the most elegant, and I feel there is always room for improvement. This review will present the numbers, unaltered, with a (somewhat) randomly selected set of images. I say “somewhat”, as the sources of the images themselves are based on what many of the better reviews have used in the past couple years.
Since I started developing EWWW I.O. over four years ago, there have been quite a few new image optimization plugins released. These are the plugins that I’m reviewing:
Some will notice there are two absentees: CW Image Optimizer & Prizm Image. The former because I feel it isn’t suitable for most users, you pretty much need to have root access to your server, and that is a very small percentage of site owners. The latter because I tried to sign-up for an account and could not, as it keeps refusing my signup attempts.
There have been several reviews of various I.O. plugins over the last couple years (some better than others), but most of them have had a problem doing an accurate comparison. There was one a couple years ago by Matt Cromwell, but it is a bit outdated, and EWWW I.O. now includes the TinyPNG compression with our API service. Besides that, the biggest problem was that he compared EWWW’s lossless compression to TinyPNG’s lossy compression. Another one from the folks at WPMU DEV compared Smush Pro (lossy) to Kraken and EWWW’s lossless compression. The fact of the matter is, I’ve never seen a review that accurately answers any of these three things:
- What is the most you can get out of an Image Optimization plugin for free?
- What is the best lossless Image Optimizer?
- What is the best lossy Image Optimizer?
So I took on the challenge to answer all three of them, which will require separate tests for each I.O. plugin. While we’ll be focusing on the total savings achieved and the time taken to optimize them, I will also try to point out any other observations during my experience with each plugin.
The Sample Images
The images used in the tests are a mix of images from the WP Theme Unit Tests, Unsplash, and Death to Stock. I only had 20 images from Unsplash, so I left them as is, to get a feel for the optimization capabilities with raw, unedited images. My DTS sample was a bit larger so all of these were resized to a maximum size of 2048 pixels in either direction with a JPG quality of 90. There are 174 original images, but once WordPress generates the additional “resizes” there are 1,001 total images in the sample set. You can download the original images and the resulting sample set for comparison. Admittedly, the sample set is a bit heavy on the JPG side, but PNG images are generally small, and the savings likely to be unimpressive (potentially high in percentage, but small when compared to JPG compression). We could optimize a hundred PNG files, and the savings from a single JPG could be larger than all the PNG files combined.
The total size of the sample set, in an un-optimized state, is 194,652 kilobytes, and the rest of the numbers throughout will be in kilobytes for easy comparison. The total time to upload images without any optimization was 3 minutes, and 22 seconds. All of these tests were performed by simply uploading the images with the Image Optimization plugin enabled so that the images would be optimized by the time the upload finished. After each test, I’ve included the full directory listing so you can see the raw sizes for yourself. Here’s the directory listing for the originals.
What is the best free Image Optimizer?
EWWW Image Optimizer
EWWW I.O. needs a couple small tweaks if you are optimizing a lot of PNG images and want to get the most out of the free version:
- Increase the PNG optimization level to Lossy Compression
- Enable PNGOUT on the Advanced settings, and click the Automatically link in the Plugin Status to install PNGOUT. Unfortunately, PNGOUT is not open source, but it IS free. So we can’t bundle it with the plugin, but you are free to install it on your site and use it as you like.
The upload with EWWW Image Optimizer took 3 minutes, and 34 seconds, with a final file size of 187,464 kilobytes for a savings of 7,188 kilobytes (3.7%).
Updated: Imagify allows you to use their full compression algorithms for free, but you are limited to images no larger than
5MB 2MB, and a monthly quota of 275MB 25MB. You also get 25MB extra to use the first month (or later if you don’t use the full 50MB). I noticed that if the original image is greater than 5MB 2MB, it will not optimize the resizes either. Some other plugins will optimize the resizes even if the original is over the limit, but Imagify does not allow this currently with their plugin. We only needed to make one change to get the best compression from Imagify:
- Change the optimization level from Normal to Ultra
The upload with Imagify took 4 minutes, and 46 seconds, and the final size was 166,504 kilobytes for a savings of 28,148 kilobytes (14.4%).
Optimus is an I.O. plugin from KeyCDN, and only does lossless compression at the moment. From reading their site, it does not appear they have any desire to expand into lossy compression. Thus there was nothing to setup except to get an API key and start optimizing. They also limit you to 100kb per image, which is the steepest limitation of any of the plugins tested in this round.
The upload took 10 minutes and 14 seconds, with a final size of 193,400 kilobytes for a savings of 1,252 kilobytes (0.6%).
ShortPixel has a free plan with 100 images/month, and they place no size restrictions on those 100 images. The default option is the highest compression (lossy), so no changes were needed. However, with a sample set of over 1,000 images, we ran into a glitch. ShortPixel defers the optimization of your images until after the upload completes, but it counts up to your quota during upload. The result is that the quota is marked as exceeded before the upload completes, and then the plugin refuses to do anything more with your images until you buy more credits, or wait until next month. It seems that the optimized images are not downloaded back to your server until you visit the Media Library page (or perhaps it is triggered by a wp_cron job). Either way, the problem exists that if you upload enough images to exceed your quote in a single batch, none of them will get optimized. If you just upload an image here and there, you should be fine.
When I contacted them, they mentioned that ShortPixel also has an unexpected bonus. If the image cannot be compressed more than 5%, then it does not count against your quota. Most other plugins (EWWW I.O included) charge you for every image optimized, but not for images that are already fully compressed. Some may even charge you for those too, but I didn’t pay particular attention to that during the tests.
The end result is that we have no results for the free version of ShortPixel, because it only managed to retrieve one image back to our site before the quota was reached. Their paid plans are a different story, so keep reading for those. The ShortPixel folks seem to be working on a fix for the problem above, so I’ll update this section if I am able to run a proper trial later on.
The original IO plugin now uses the API from WPMU DEV (instead of the horribly unreliable Yahoo Smush.it API), but you can only use their lossless compression for free, and they’ve kept the Yahoo limitation of 1MB per image on the free plan. Other than entering an API key, there was nothing to setup, so I got straight to optimizing.
The upload with WP Smush took 18 minutes, and 3 seconds, and the final size was 192,012 kilobytes for a savings of 2,640 kilobytes (1.4%).
The Best Free I.O. Plugin
Imagify is able to achieve some impressive savings, even with the file size limits. They are the winner if you want maximum compression, are willing to sacrifice some quality, and don’t upload anything larger than 2MB. Their asynchronous optimization is a real time saver, even if it isn’t quite as fast as optimizing images locally with EWWW I.O.
On the flip side, if you want strictly lossless compression, don’t want your images leaving your server, or you upload images larger than
5MB 2MB, then EWWW’s free version would be a better fit for you. Additionally, if you have images outside the Media Library that need optimized, Imagify isn’t going to be able to take care of those, so you’re better off with EWWW in that case also.
What is the best Lossless Image Optimizer?
EWWW Image Optimizer
To get the best lossless compression, it’s going to cost you some cash, but not much, as we’ll see soon. When you enter your API key for EWWW I.O. it automatically turns on maximum lossless mode for JPG images, but there are two levels for PNG images, so I did have to manually increase the PNG compression to maximum lossless. This is mostly because “maximum lossless” mode is significantly slower than “better lossless” mode, and doesn’t come with signficant savings over “better lossless”, but we are trying to get the maximum lossless savings here, so we’ll just have to put up with a slower optimization process.
To optimize 1,001 images, we have two options with EWWW. We can use the pay-as-you-go plan, which will cost $5.01 (all prices listed will be USD), or we could prepay for 5,000 credits which costs $10. EWWW I.O. advertises a file size limit of 50MB, but that is simply the largest file I’ve tested with our API. If you need larger files optimized, all you have to do is ask.
This time, the upload took 22 minutes and the final size was 185,320 kilobytes for a savings of 9,332 kilobytes (4.8%).
We switched Imagify back to Normal mode for this test, and signed up for one of their plans so we could do a full test. To optimize the sample set, we need the $4.99/month plan, which comes with 1GB of quota.
In normal mode, it was a little slower this time (because the images over 5MB also were optimized) at 5 minutes, and 27 seconds, for a final size of 187,540 kilobytes with a savings of 7,112 kilobytes (3.7%).
After entering the API key right on the Plugins page (not on the Optimus settings), we started uploading. An Optimus plan is very cheap, at $19.99/year for personal projects ($99.99/year if you’re doing client sites too). That price comes with a limit of 5MB on your images, so there were still six images that didn’t get optimized from the sample set.
The upload took 21 minutes, with a final size of 187,556 kilobytes, for a savings of 7,096 kilobytes (3.6%).
ShortPixel uses lossy mode by default, so we had to change to lossless mode for this test, and we also had to upgrade our plan, which cost $4.99. This gets you 5,000 images/month with no file size limits, and full access to their API. Because of the way that ShortPixel optimizes images (see the free section above for more detail), the time here isn’t 100% accurate, so figure +/- 5 minutes. After upload, I had to load page 1 of my media library to start the optimizations. I thought it would just keep going, but it didn’t, and when I loaded page 2, then it started optimizing those too. If it isn’t obvious, I’m not a big fan of how it operates, but I guess it gets the job done.
The optimizations took roughly an hour, with a final size of 185,544 kilobytes, for a savings of 9,108 kilobytes (4.7%).
WP Smush Pro
Upgrading to Pro is a bit more involved than most Image Optimization plugins. First of all, you have to signup for a WPMU DEV membership, which costs $49/month. They used to have a special membership for folks that just want the Smush Pro plugin, but I could not find that advertised anymore, so it’s an all-or-nothing proposition. Once you’ve signed up, then you need to install the WPMU DEV dashboard plugin, sign-in to the dashboard plugin, and install WP Smush Pro. Once that is all done, then we can start optimizing.
This upload took about 22 minutes, with a final size of 187,588 kilobytes, for a savings of 7,064 kilobytes (3.6%).
The ImageRecycle API doesn’t do monthly plans. Instead, you can purchase a quota in terms of file size, which expires after a year. For this trial, we went with the $10 package, which gets you 1GB of images. This plugin has one other bonus compared to most other plugins (except EWWW I.O.), in that it can optimize selected folders within your WP install. You can manually enter your API key and secret, or you can login to your ImageRecycle account via the plugin, and it will auto-fill these for you. Once done, it’s off to the races!
The upload time was 8 minutes and 42 seconds, with a final size of 191,640 kilobytes, for a savings of 3,012 kilobytes (1.5%).
The last plugin in the lossless trials is from Kraken.io. They have the typical monthly subscription plans, and the bottom level plan was sufficient at $5/month for 500MB of quota. The default mode is lossy, so I had to change it to lossless for this test, and then I was ready to start uploading.
The upload time was 48 minutes, with a final size of 185,320 kilobytes, for a savings of 9,332 kilobytes (4.8%).
The Best Lossless I.O. Plugin
An aside: It’s interesting here to note how close the pricing is at this level. With the exceptions of Optimus (dirt cheap) and WP Smush Pro (a bit expensive), the rest all allowed me to accomplish the test for $5 or so. ImageRecycle was $10, but I got double the quota for that amount, and a year to use it up. EWWW’s pricing model is quite different, but the cost ends up being about the same.
We can divide the plugins into two groups (except ImageRecycle, which is a bit of an outlier), at 187MB and 185MB. The additional savings comes with a bit longer wait, as EWWW I.O. and Kraken.io both use the mozjpeg tool for making images smaller, and that extra computation takes time. With 1,000+ images, the difference is measurable, but when uploading individual images the difference should be negligible. This is especially true with EWWW I.O. 2.9, which optimizes your images in the background so you don’t have to wait for optimization before you start using your images. The ability of EWWW I.O. to defer optimization, which yields an even better experience than Imagify’s asynchronous optimization, makes it the clear choice: the best lossless compression, with no wait time.
What is the best lossy Image Optimizer?
I’ll not reiterate the setup process for each plugin, but we do have one new metric for lossy optimization: DSSIM. Simply, it is a measurement of how different (dis-similar) the optimized image is from the original image. Lower values are better, and the recent change to the default quality (from 90 to 82) cited a threshold of .015 being the maximum acceptable DSSIM. When calculating the average DSSIM, only images that actually had lossy compression applied were included. To make sure we were calculating the average DSSIM for only lossy compression, any images that only had lossless compression applied were excluded from the averages (but not the final file size or savings).
Along with providing the DSSIM, I’ve also calculated a ratio between the amount saved and the DSSIM (and then divided by a million to make it easier to compare). With the ratio, higher numbers mean more compression for the amount of quality loss. And lastly, I’ve attached a zip file of the compressed images for each plugin so you can see them for yourself.
EWWW Image Optimizer
EWWW I.O. uses TinyPNG’s compression, which achieves very high compression rates, but there is a tradeoff: speed.
It took 1 hour and 18 minutes to optimize all 1,001 images. The final size was 102,216 kilobytes for a savings of 92,436 kilobytes (47.5%). The average DSSIM score was .00152, which gives us us a ratio of 60.8.
Uploading the images with Imagify was again stunningly fast due to their asynchronous optimization, coming in at 8 minutes and 49 seconds. The asynchronous optimization does max out the threads on my server when uploading large batches of images, but for most users uploading just a few images at a time, this probably isn’t too big of a deal. Final size of the sample set was 87,948 kilobytes, for a savings of 106,704 kilobytes (54.8%). The average DSSIM value was .00399 for a ratio of 26.7.
The upload/optimization process for lossy was much quicker, as it kept going on the optimizations even before I loaded page 2 of the Media Library. With ShortPixel, many of the images only had lossless compression applied. In fact, less than half were actually compressed with lossy mode, which is far worse than any other plugin I tested. It seems their algorithms struggle with smaller images, particularly anything under 1024px. This is unfortunate, as those are the images most likely to be displayed on your pages.
In total, the upload took 40 minutes, with a final size of 87,484 kilobytes, for a savings of 107,168 kilobytes (55%). The DSSIM value was .00272 for a ratio of 39.4.
WP Smush Pro
The upload took 22 minutes, with a final size of 144,176 kilobytes, for a savings of 50,476 kilobytes (25.9%). The average DSSIM value was .00046 for a ratio of 109.7.
Upload time was just under 21 minutes, with a final size of 176,020 kilobytes, for a savings of 18,632 kilobytes (9.6%). The DSSIM average for ImageRecycle was .00076 with a ratio of 24.5.
The last upload took 61 minutes, with a final size of 169,776 kilobytes, for a savings of 24,866 kilobytes (12.8%). The average DSSIM value with Kraken.io was .00088, with a ratio of 28.3.
The Best Lossy I.O. Plugin
The results from Kraken.io and ImageRecycle on the lossy trials were a bit disappointing, so we’ll just set those to the side. WP Smush Pro achieved a fantastic Savings/DSSIM ratio, but the actual savings were nowhere near the top three plugins. The hit and miss results with ShortPixel eliminate it from contention, leaving Imagify and EWWW I.O. to fight it out in the end. If the folks at ShortPixel could get the same compression and quality applied to the smaller images, they would demolish everyone, but small images seem to be the hardest to compress (from my discussions with the folks at TinyPNG).
With Imagify, we have a very fast optimization process, and impressive compression. The downside is that the quality level is 2.6x lower than EWWW I.O, which is reflected in the Savings/DSSIM ratio. As you’ll see below, the difference in quality here is noticeable. In some pictures, the difference isn’t as obvious, but it is most noticeable when there are dark colors in an image, or large swaths of sky. You can see lines and blocks in the Imagify version of the image below, whereas the one compressed by EWWW I.O is still nice and smooth. Imagify also tends to wash out variations in color if the colors are too similar. But there is another lossy setting with Imagify (and with EWWW I.O.), so I tested Imagify in Aggressive mode instead of Ultra compression. Unfortunately, the savings were much lower (only about 65MB), and the quality still wasn’t as good as EWWW I.O. since the average DSSIM score with Imagify Aggressive compression was .00224. The last chance for Imagify is the speed, but with EWWW’s new background optimization in 2.9, the wait time is gone, and uploads are even faster than Imagify. Upload your images, and EWWW takes care of it in the background, just like Imagify.
Certainly, it’s not a cut and dried decision. If you don’t care so much about image quality and just want the highest compression level, then Imagify should do just fine. On the flip side, if you want to preserve your images as much as possible and are willing to sacrifice 5-10% on the compression, then EWWW I.O. is definitely the best option. Besides having the better quality to compression ratio, EWWW I.O. can also optimize PDF files, and supports the WebP format from Google for even smaller images. The only other plugin that we tested which supported WebP was Optimus, which didn’t fare so well in the lossless trials.
In the end, whatever you choose, your pages will load faster, faster pages means less bounces, and more paying customers. So what are you waiting for, start optimizing today!
UPDATE: EWWW I.O. 2.9 has significantly faster optimization times, so I’ve updated the results above.