EWWW Image Optimizer

Description

Are you frustrated by a slow website? Do over-sized images make you say “ewww”… Let EWWW Image Optimiser help you make your site faster, improve your bounce rate, and boost your SEO. But most importantly, make your visitors happier so they keep coming back for more.

With EWWW IO you can optimise all your existing images, from any plugin, and then let EWWW IO take care of new image uploads automatically.

Why use EWWW Image Optimiser?

  1. No Speed Limits and unlimited file size.
  2. Smooth Handling with pixel-perfect optimisation using industry-leading tools and progressive rendering.
  3. High Torque as we bring you the best compression/quality ratio available with our Premium compression for JPG, PNG, and PDF files.
  4. Adaptive Steering with intelligent conversion options to get the right image format for the job (JPG, PNG, GIF, or WebP).
  5. Free Parking The core plugin is free and always will be. However, our paid services offer up to 80% compression, and a host of other features!
  6. Comprehensive Coverage: no image gets left behind, optimise everything on your site, not just the WordPress Media Library.
  7. Safety First: all communications are secured with top SSL encryption.
  8. Roadside Assistance: top-notch support is in our DNA. While API customers get top priority, we answer every single support question with care.
  9. Pack a Spare: free image backups store your original images for 30 days.

EWWW IO is the only plugin that lets you optimise images using tools on your own server (jpegtran, optipng, pngout, pngquant, gifsicle, cwebp). If you feel the need for more speed, get more compression and offload the CPU-intensive process of optimisation to our specialised servers.

Automatic Everything

With Easy IO, images are automatically compressed, scaled to fit the page and device size, lazy loaded, and converted to the next-gen WebP format.

Support

Stuck? Feeling like maybe you DO need that rocket science degree? We provide free one-on-one email support to everyone.
Do you have an idea to make EWWW IO even better? Share it and vote on future features!
Found a bug? Report the issue on GitHub, and we’ll get it fixed!

Bulk Optimise

Optimise all your images from a single page. This includes the Media Library, your theme, and a handful of pre-configured folders (see Optimise Everything Else below). GRAND FlaGallery, NextCellent and NextGEN have their own Bulk Optimise pages.

Optimise Everything Else

Configure any folder within your WordPress install to be optimised. The Bulk Optimizer will compress theme images, BuddyPress avatars, BuddyPress Activity Plus images, Meta Slider slides, WP Symposium Pro avatars, GD bbPress attachments, Grand Media Galleries, and any user-specified folders. You can also use Scheduled optimisation or run the optimizer from WP-CLI if that’s more your thing.

Plugin Compatibility

EWWW IO has been tested with hundreds (if not thousands) of plugins and themes, here are just a few of the most common ones: BuddyPress (Activity Plus add-on too), Cloudinary, Easy Watermark, FileBird, FooGallery, GD bbPress Attachments, GRAND FlAGallery, Gmedia Photo Gallery, MediaPress, Meta Slider, Microsoft Azure Storage, MyArcadePlugin, NextGEN Gallery, Regenerate Thumbnails, Weglot, WP Offload Media, WPML, WP Retina 2x, WP RSS Aggregator, WP Symposium. Read more…

WebP Images

If you want simple, get automatic WebP conversion with Easy IO, and be done with it! Otherwise, you can generate WebP versions of your images with the Bulk Optimizer, and deliver them to supported browsers. Take your pick between Apache-style rewrite rules, JS WebP Rewriting, and WebP Rewriting. EWWW IO even works with the WebP option in the Cache Enabler plugin from KeyCDN.

WP-CLI

Allows you to run all Bulk Optimisation processes from your command line, instead of the web interface. It is much faster, and allows you to do things like run it in ‘screen’ or via regular cron (instead of wp-cron, which can be unpredictable on low-traffic sites). Install WP-CLI from wp-cli.org, and run ‘wp-cli.phar help ewwwio optimize’ for more information or see the Docs.

CDN Support

WP Offload Media is the officially supported (and recommended) plugin for uploads to Amazon S3, Digital Ocean Spaces, and Google Cloud Storage. Check our compatibility list for details on other plugins. All pull mode CDNs like Cloudflare, KeyCDN, MaxCDN, and Sucuri CloudProxy work automatically, but will require you to purge the cache after a bulk optimisation.

Translations

Huge thanks to all our translators, see the full list!

If you would like to help translate this plugin, join the team.
Signup to receive updates when new strings are available for translation.

Credits

Written by Shane Bishop with special thanks to my Lord and Savior. Based upon CW Image Optimiser, which was written by Jacob Allred at Corban Works, LLC. CW Image Optimiser was based on WP Smush.it. Jpegtran is the work of the Independent JPEG Group. PEL is the work of Martin Geisler, Lars Olesen, and Erik Oskam. Easy IO and HTML parsing classes based upon the Photon module from Jetpack.

Screenshots

  • Plugin settings page.
  • Additional optimise column added to media listing. You can see your savings, manually optimise individual images, and restore originals (converted only).
  • Bulk optimisation page. You can optimise all your images at once and resume a previous bulk optimisation. This is very useful for existing blogs that have lots of images.

Installation

  1. Upload the “ewww-image-optimizer” plugin to your /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. The plugin will attempt to install jpegtran, optipng, and gifsicle automatically for you. This requires that the wp-content folder is writable by the user running the web server.
  4. If the binaries don’t run locally, you may sign up for cloud-based optimisation: https://ewww.io/plans/
  5. Recommended Visit the settings page to enable/disable specific tools and turn on advanced optimisation features.
  6. Done!

If these steps do not work, see the additional documentation. If you need further assistance using the plugin, please visit our Support Page.

Webhosts

To find out if your webhost works with the EWWW Image Optimizer, you can check the official list.

FAQ

Google Pagespeed says my images need compressing or resizing, but I already optimised all my images. What do I do?

Try this for starters: https://docs.ewww.io/article/5-pagespeed-says-my-images-need-more-work

The plugin complains that I’m missing something, what do I do?

This article will walk you through installing the required tools (and the alternatives if installation does not work): https://docs.ewww.io/article/6-the-plugin-says-i-m-missing-something

Does the plugin replace existing images?

Yes, but only if the optimised version is smaller. The plugin should NEVER create a larger image.

Can I resize my images with this plugin?

Yes, you can, set it up on the Resize tab.

Can I lower the compression setting for JPGs to save more space?

Our premium compression can determine the ideal quality setting and give you the best results, but you may also adjust the default quality for conversion and resizing. Read more…

The bulk optimiser doesn’t seem to be working, what can I do?

See https://docs.ewww.io/article/39-bulk-optimizer-failure for full troubleshooting instructions.

What are the supported operating systems?

I’ve tested it on Windows (with Apache), Linux, Mac OSX, FreeBSD, and Solaris. The Compress API and Easy IO CDN will work on any OS.

I want to know more about image optimisation, and why you chose these options/tools.

That’s not a question, but since I made it up, I’ll answer it. See this resource:
https://developers.google.com/web/tools/lighthouse/audits/optimize-images

Reviews

Aug 14, 2021
I have been using this plug-in for a while just have not done any solid comparison. 4 stars because it was easy to setup and provides actionable data on how to fix latency issues. Docked one star because I cannot legitimately claim it to be a 5. And because the actionable data is not as intuitive as it could be. Still need to decode too much. Am still on the familiarization curve and not using the paid version so consider this a decent rating.
Aug 12, 2021
It easy to use, and it has everything you need. You can convert individual png to jpg, or using bulk optimize. Also it permits to optimize images without converting it into other format.

Contributors & Developers

“EWWW Image Optimizer” is open source software. The following people have contributed to this plugin.

Contributors

“EWWW Image Optimizer” has been translated into 27 locales. Thank you to the translators for their contributions.

Translate “EWWW Image Optimizer” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Change log

  • Feature requests can be viewed and submitted on our feedback portal
  • If you would like to help translate this plugin in your language, join the team

6.2.3

  • fixed: db error when MariaDB 10.1 does not permit ALTER for setting default column value
  • fixed: Lazy Load missing placeholder folder when Easy IO is enabled

6.2.2

  • added: disable Easy IO’s “deep” integration with image_downsize filter via EIO_DISABLE_DEEP_INTEGRATION override
  • added: integration with JSON/AJAX respones from Spotlight Social Media Feeds plugin
  • changed: PNG placeholders are now inlined for less HTTP requests and better auto-scaling
  • changed: Bulk Optimizer processes images from oldest to newest for the Media Library
  • changed: Resize Detection uses minified JS and console logging suppressed unless using SCRIPT_DEBUG
  • fixed: Easy IO does not rewrite image (href) links if image_downsize integration has rewritten the img tag
  • fixed: Lazy Load throws error when ewww_webp_supported not defined in edge cases
  • fixed: front-end scripts loading for page builders when they shouldn’t be
  • fixed: when using WP/LR Sync, EWWWIO_WPLR_AUTO does not trigger optimization for new images
  • fixed: img element search parsing JSON incorrectly
  • fixed: WebP uploads not resized to max dimensions

6.2.1

  • fixed: Lazy Load regression prevents above-the-fold CSS background images from loading
  • fixed: WebP Conversion for CMYK images leaves empty colour profile attached

6.2.0

  • added: PHP-based WebP Conversion via GD/Imagick in free mode when exec() is disabled
  • added: enable -sharp_yuv option for WebP conversion with the EIO_WEBP_SHARP_YUV override
  • added: WebP Conversion for CMYK images
  • added: webp-supported conditional class added to body tag when JS WebP is active
  • added: WP-CLI command can be run with –webp-only option
  • added: Lazy Load for iframes, add ‘iframe’ in exclusions to disable
  • added: compatibility with S3 Uploads 3.x
  • added: preserve metadata and apply lossless compression to linked versions of images via Easy IO with EIO_PRESERVE_LINKED_IMAGES constant
  • added: Easy IO rewrites URLs in existing picture elements
  • changed: JS WebP scripts moved to beginning of page footer
  • changed: native lazy loading is now enabled for right-sized PNG placeholders, override with EIO_DISABLE_NATIVE_LAZY constant
  • changed: add resume ability to Delete Originals tool
  • changed: move Easy IO check-in to wp_cron
  • fixed: empty .webp images sometimes produced when cwebp encounters an error
  • fixed: Bulk Optimiser for NextGEN loading incorrect script
  • fixed: Bulk Optimiser for NextGEN fails to verify nonce for selective optimisation
  • fixed: Last Optimised times for Optimised Images table were incorrect
  • fixed: Add Missing Dimensions overwrites smaller width/height attribute if only one is set
  • fixed: replacing an existing attribute (like width) with a numeric value is broken

6.1.9

  • fixed: Easy IO’s Include All Resources compat with Oxygen Builder and Beaver Builder
  • fixed: regex to detect SVG images in use elements caused excessive backtracking
  • fixed: WebP version of full-size image not removed when attachment deleted due to undefined variable
  • fixed: Easy IO adds invalid zoom parameter of 1920 to srcset URL

6.1.8

  • fixed: Lazy Load fails to auto-scale with img-crop class for Easy IO
  • fixed: WebP files sometimes fail to be re-generated after Photo Engine (WP/LR) sync
  • fixed: Lazy Load throws JS error in SCRIPT_DEBUG mode

6.1.7

  • fixed: syntax error due to trailing comma after last parameter in function call(s).

6.1.6

  • added: support for BuddyPress uploads via Vikinger theme.
  • added: compatibility with Weglot.
  • added: use ‘img-crop’ id/class, or data-img-crop attribute to force cropping with Easy IO + Lazy Load.
  • changed: Resize Existing enabled by default for new installs.
  • changed: Lazy Load JS moved to footer
  • fixed: prevent Resize Detection from flagging SVG files.

6.1.5

  • changed: use core wp_getimagesize() for proper error handling
  • fixed: prevent erasing title attributes for admin users when Lazy Load and Resize Detection are enabled
  • fixed: creates empty file when image is too large for WebP conversion

6.1.4

  • changed: better handling for API quotas
  • fixed: picture elements not parsed when using JS WebP with Lazy Load
  • fixed: bundled tools don’t work if the binary/tool directory is mounted on a filesystem separate from wp-content/
  • fixed: bulk optimiser not finding images from cloud storage (like S3) when local versions are removed

6.1.3

  • changed: bulk optimiser no longer skips image types set to “no compression” in WebP-only mode
  • fixed: CNAME setting from WP Offload Media triggers “unknown” error in Easy IO
  • fixed: missing EIO_LL_THRESHOLD variable for minified JS

6.1.2

  • fixed: bug from bypass/exclusion code for bulk scanner in 6.1.1
  • fixed: running is_file on system binaries may trigger open_basedir warnings, use EWWWIO_OPEN_BASEDIR to override PHP’s open_basedir restriction

6.1.1

  • change: added setting to enable adding of missing width/height dimensions, disabled by default
  • fixed: warning from plugins using core wp_lazy_load filter without second parameter/argument

6.1.0

  • added: ability to use SVG placeholders for more efficient lazy load
  • added: Easy IO and Lazy Load add missing width and height to image elements
  • added: Lazy Load – right-sized placeholders can be generated for full-sized images
  • added: configure Lazy Load pre-load threshold via EIO_LL_THRESHOLD constant
  • changed: Lazy Load for external (non-inline) CSS images must be configured for specific elements
  • changed: Easy IO’s Include All Resources unlocked for all plans
  • changed: native lazy loading is now disabled when using EWWW IO lazy load, override with EIO_ENABLE_NATIVE_LAZY constant
  • changed: Lazy Load pre-load threshold increased from 500px to 1000px
  • changed: Lazy Load picture elements use right-sized img placeholder instead of 1×1 inline GIF
  • changed: system-installed binary detection improved
  • fixed: native iframe lazy load disabled in WP 5.7+
  • fixed: detection for Shield Security plugin lock to location
  • fixed: relative path migration showing errors in site tools
  • fixed: WebP rewriters not handling relative image URLs
  • fixed: existing elements ignored by WebP Rewriting
  • fixed: elements inside elements incorrectly handled by JS WebP Rewriting
  • fixed: removing metadata clobbers APNG animations
  • fixed: some JSON elements still being altered by Lazy Load
  • fixed: Easy IO throws warnings when WP content is not in a sub-directory
  • updated: jpegtran to version 9d
  • updated: cwebp to version 1.2.0
  • updated: pngquant to version 2.13.1

Earlier versions

Please refer to the separate changelog.txt file.