Updated on 2018-03-15: I’ve tested Resmush.it at varying quality levels, updated the Imagify free plan limits (which went way down), and retested ShortPixel.
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 five years ago, there have been quite a few new image optimization plugins released. These are the plugins that I’m reviewing:
Missing in Action
Some will notice there are a few 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.
2018-03-15: I did some tests with the Resmush.it API, but it doesn’t have a lossless option, and the results are too underwhelming to warrant a full write-up. With the quality loss on the default settings, the compression ought to be about 10x better than it is. Then, I dropped it down to quality level 70, and the resulting loss of quality is about the same as Imagify (see below), still with 20% less savings. You definitely get what you pay for, and my recommendations for paid versions below far surpass what Resmush.it can do.
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 (still) 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 (using the Twenty Sixteen theme for consistency throughout). 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%).
Updated: Originally, I was unable to test their free plan due to a bug that was triggered when you exceed your quota. They’ve fixed that, so I finally re-ran the tests. 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 the only change needed was to turn off resizing (that may have been a holdover from previous testing). However, with a sample set of over 1,000 images, that means 900 of our images are going to remain un-optimized. Their optimization process is a bit awkward, as it appears to use wp_cron, or it can be triggered from viewing your new images in the Media Library (in list mode). It certainly works, it just isn’t clear exactly how/when images get optimized after upload. This also means we can’t accurately tell how long their API takes to compress the images.
The final size was 185,044 kilobytes for a savings of 9,608 kilobytes (4.9%).
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.
ShortPixel would probably do well if you don’t go over 100 images a month, which is actually 20 images a month (or worse) once you figure in thumbnails and such. But with our sample set, it’s just not impressive as a free plugin.
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 61 minutes to optimize all 1,001 images. The final size was
102,216 88,852 kilobytes for a savings of 92,436 105,800 kilobytes ( 47.5% 54.4%). The average DSSIM score was .00152 .00321, which gives us us a ratio of 33.0.
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. When I first tested ShortPixel, many of the images only had lossless compression applied. In fact, less than half were actually compressed with lossy mode, which was far worse than any other plugin I tested. It seems their algorithms struggled with smaller images, particularly anything under 1024px. I retested in 2018, and it seems they have updated their algorithms so the results are much better now. The links below are for the original test, shoot me an email if you want to see the actual images.
In total, the upload took
40 30 minutes, with a final size of 87,484 52,644 kilobytes, for a savings of 107,168 142,008 kilobytes ( 55% 73%). The DSSIM value was .00272 .00505 for a ratio of 39.4 28.1.
ShortPixel also has a “Glossy” mode which comes in at 104,232 kilobytes, for a savings of 90,420 kilobytes (46.5%). The DSSIM value was .0013 with a ratio of 69.55.
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. ShortPixel fares similarly, but isn’t as fast. The downside is that the Imagify quality level is lower than EWWW I.O, which is reflected in the Savings/DSSIM ratio. ShortPixel does slightly better than Imagify on the ratio, but a handful of images were outside of what would be considered “acceptable” quality loss (.015 is generally acceptable, and the worst image was nearly double that with a .029). As you’ll see below, the difference in quality on Imagify 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. Even though Imagify is faster, EWWW IO features the same asynchronous/background optimization that allows it to keep your uploads running smooth, and uninterrupted.
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 ShortPixel should do just fine. On the flip side, if you want to preserve your images as much as possible and are willing to sacrifice a little on the compression, then EWWW I.O. is definitely the best option.
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!