EWWW Image Optimizer


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.


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.


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.


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.


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.


  • 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.


  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.


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


Does the plugin remove EXIF and/or IPTC metadata?

EWWW IO will remove metadata by default, but if you need to keep the EXIF/IPTC data for copyright purposes, you can disable the Remove Metadata option.
EXIF data does not impact SEO, and it is recommended by Google (and just about everyone else) to remove EXIF data.

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:


Jun 2, 2023 1 reply
Great plugin that does a good job on the images. Unfortunately it also changes some text links on the site to some strange exactdn.com domain. No traces of this anywhere in the settings or in the posts that is altered. So if you see strange links, disable this plugin and all is good again.
Jun 1, 2023
Its a great plugin, helping me a lot to maximize the speed of my website.
May 29, 2023
EWWW Image Optimizer helped my site finally get 100% on PageSpeed Insights!
May 27, 2023 2 replies
I have finished the Korean translation.I just want to say thank you for developing such a good plugin.And I hope it will be translated into more languages so that many WordPress users can use it conveniently.EWWW Image Optimizer ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์„ ๋ชจ๋‘ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค.์ข‹์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•ด ์ฃผ์–ด์„œ ๊ณ ๋ง™๋‹ค๋Š” ์ธ์‚ฌ๋ฅผ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ๋ณด๋‹ค ๋งŽ์€ ์–ธ์–ด๋กœ ๋ฒˆ์—ญ๋˜์–ด ๋งŽ์€ ์›Œ๋“œํ”„๋ ˆ์Šค ์‚ฌ์šฉ์ž๋“ค์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Contributors & Developers

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


“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


  • fixed: Easy IO instructions display incorrect URL when images are on cloud storage (S3, GCS, etc.)
  • fixed: fatal error calling undefined method supports_webp


  • breaking: namespaced and reorganized several classes, third party integrations should check for compatibility
  • added: allow video files to go through Easy IO CDN (pass through)
  • added: support for WP_Image_Editor_Imagick::set_imagick_time_limit() method added in WP 6.2
  • added: ewwwio_inline_webp_script_attrs filter to add custom data-* attributes to the JS WebP inline scripts
  • added: Easy IO support for BuddyBoss images, video, and documents
  • added: Bulk Optimizer and Scheduled Optimizer include BuddyBoss profile and cover image folders automatically
  • added: backup images post-resize but pre-compression with the ewww_image_optimizer_backup_post_resize filter
  • added: improved support for Hide My WP Ghost in Lazy Load, and WebP rewriting engine
  • added: update attachment metadata for WPML replicas after image conversion
  • changed: improved Auto Scaling when using full-width layout in Elementor
  • changed: use fread to check mimetype of files for better performance
  • changed: style tag search/regex cleaned up to prevent excess markup
  • fixed: WebP images are added to WP Offload Media queue multiple times
  • fixed: PHP 8.1 deprecation notices from usage of add_submenu_page and add_query_arg
  • fixed: debug notice cannot be dismissed on sub-sites for network-activated installs
  • fixed: PHP notice when cleaning attachment metadata
  • fixed: error when certain options have been stored as strings rather than serialized arrays
  • fixed: tool path and content dir functions don’t resolve symlinks
  • fixed: Easy IO image URLs leaking into image gallery block via post editor
  • fixed: JS WebP issues when body tag has script attributes
  • fixed: clearing debug log does not redirect back to settings page in rare cases


  • changed: improved Brizy Builder compatibility
  • changed: async optimization defers processing by WP Offload Media until after optimization is complete, fixes issues with WP Offload Media 3.1+
  • fixed: converting an image with the same base name as a previous upload (image.png vs. image.jpg) could cause naming conflict when using WP Offload Media with Remove Local Media option
  • fixed: Bulk Optimize encounters unrecoverable error when a GIF or PDF file takes too long to optimize
  • fixed: Easy IO fails to apply crop for custom size in some cases
  • fixed: Picture WebP rewriter uses mixed single/double quotes
  • fixed: PHP warnings when bulk optimizing images on cloud storage with no local copies
  • improved: ensure originals are removed from local storage after conversion when using WP Offload Media with Remove Local Media option
  • improved: ensure originals are queued for removal from remote storage after conversion and subsequent deletion when using WP Offload Media


  • changed: improved Easy IO detection for site URL changes
  • changed: load backup class earlier to prevent issues with custom image uploaders
  • fixed: and improved the ewwwio_translated_media_ids filter, props @ocean90
  • fixed: Lazy Load JS throws error if inline script vars are missing
  • fixed: Easy IO + Lazy Load auto-scale produces invalid URL if an image with no query string is constrained by height


  • changed: default syntax for MySQL 8.x to use faster upgrade query
  • fixed: bulk action parameter was not validated properly when selecting attachments for optimization
  • fixed: undefined function ewww_image_optimizer_get_primary_wpml_id
  • fixed: PHP notices when Easy IO filters srcset URLs


  • added: allow translation plugins to filter attachment IDs for retrieving Media Library results via ewwwio_primary_translated_media_id/ewwwio_translated_media_ids
  • changed: include upstream lazysizes unveilhooks for use by developers, props @saas786
  • fixed: Easy IO compatibility with S3 Uploads 3.x
  • fixed: better compatibility with S3 Uploads when using autoload
  • fixed: PHP notices when removing images and backups are disabled
  • fixed: trailing comma after parameters in WP-CLI remove_originals function
  • fixed: Easy IO srcset URL construction not accounting for object versioning with S3 (or other cloud storage)


  • added: ability to store image backups on local storage
  • added: tool to bulk restore images under Tools menu and WP-CLI
  • added: WebP cleanup tool can be resumed and run via WP-CLI
  • added: Delete Originals can be run via WP-CLI
  • added: remove originals after conversion (like PNG to JPG) via WP-CLI
  • added: exclude by page for Easy IO, Lazy Load, and WebP delivery methods
  • changed: ensure full-size image is optimized after resizing with Imsanity
  • fixed: incorrect cfasync attribute used for JS WebP scripts


  • added: API keys can be used to auto-register sites for Easy IO, including sub-keys
  • changed: expose legacy resize dimensions with removal option
  • fixed: Lazy Load not using EWWWIO_CONTENT_DIR
  • fixed: Easy IO Premium/WebP compression disabled incorrectly when in Easy Mode
  • fixed: JS WebP body script throws error if wp_head script missing
  • fixed: Lazy Load Auto-scale adds query parameters to SVG images
  • fixed: JS WebP and Lazy Load prevent image loading in GiveWP iframe
  • fixed: Auto Scale crops too much for object-* images in Oxygen
  • fixed: trailing space on image URL handled incorrectly
  • updated: Gifsicle to version 1.93 and Pngquant to 2.17
  • removed: free binaries for SunOS, may use free cloud-based JPG compression instead

Earlier versions

Please refer to the separate changelog.txt file.