Plugin Directory

EWWW Image Optimizer

Reduce image sizes in WordPress including NextGEN, GRAND FlAGallery, FooGallery and more using lossless/lossy methods and image format conversion.


  • fixed: also disable parallel mode iternally if background testing is not successful
  • fixed: fatal error when WP Retina 2x is enabled with EWWW's parallel mode
  • fixed: parallel opt would hang if resizes were missing
  • fixed: prevent background test from accidentally spawning more tests
  • fixed: background test stuck in queue indefinitely if it didn't succeed


  • fixed: cached value for multisite uploads directory incorrect on some sites
  • fixed: retina/hidpi images required separate async task with parallel optimization
  • fixed: retina function would try to run an async optimization even if the file didn't exist
  • fixed: one-time convert links (like JPG2PNG) from Media Library not working when Parallel mode enabled
  • fixed: images with transparency were being converted if PNG2JPG enabled regardless of JPG background setting when using API
  • fixed: mime-type meta for resizes updated on conversion and restoration
  • fixed: resizes were being checked, even if no filename was available
  • added: thread limit for parallel optimization, set to 5, can be modified by filter
  • added: filter to modify timeout for parallel optimization
  • added: filter to disable (or modify) the suffix added to converted images
  • added: debugging page to view and clear background optimization queues (must have EWWW's debug setting enabled) - under Media menu
  • changed: parallel mode only enabled if using API or your images have more than 5 resizes each
  • changed: background mode only enabled if background test succeeds (on plugin upgrade)
  • changed: file types with disabled optimization no longer included in unoptimized image counts


  • fixed: set_time_limit() was still being called in a couple spots even if set_time_limit() is disabled by PHP
  • fixed: regression in scheduled optimization which allowed multiple processes to run
  • fixed: total savings for multisite was incorrectly requerying site 1 for each blog
  • fixed: optimization being attempted via API even if license exceeded
  • added: ewwwio_images table is checked on settings page to make sure it exists
  • added: run utf8_encode() on all filenames for Scheduled Optimize and Scan & Optimize to avoid database update issues, please report any new issues with Scan & Optimize right away


  • fixed: wrong path pre-pended using parallel optimization and wp-content or uploads folder is not within the WP root
  • fixed: absolute paths passed to async optimization are pre-pended with ABSPATH
  • fixed: Bulk Optimize excluding images from count based on wrong option (disabled generation vs. disabled optimization)
  • fixed: timeouts during Media optimize could corrupt metadata, added routine to rebuild the meta on re-optimization
  • changed: running out of API credits puts the verification function to sleep for up to 5 minutes
  • added: extra checks to make sure the Background/Async objects are properly initialized before using them


  • fixed: permissions after optimization are different than what WP core uses and falls back to umask on unixy systems
  • fixed: API server address not re-fetched properly when cache expires
  • changed: Parallel Optimization no longer ON by default


  • fixed: sorry, missed a session locking operation (manual optimize)


  • changed: priority level of Alt WebP Rewriting so that pages do not get un-minified after Autoptimize runs
  • fixed: async requests for parallel optimization had an empty user agent
  • fixed: uploads broken because start_session() locks all async processes


  • changed: full paths are not POSTed to avoid Local File Inclusion blocks put in place by various security plugins (Wordfence & Shield)
  • fixed: reduced number of database queries during parallel optimization
  • fixed: undefined methods for BFI thumb editor class
  • added: detect Shield's Lock to Location feature and disable background/parallel operations


  • added: parallel optimization for Media uploads (original and resizes are done concurrently), turn off under Advanced if it affects site performance
  • added: allow resize dimensions to be filtered: https://ewww.io/2016/07/05/changing-the-dimensions-for-resizing-images/
  • changed: deferred (background) optimization is now the normal mode of operation as it runs instantly, and no longer relies on wp_cron
  • changed: scheduled optimization uses new background processing to allow it to run longer, and resume quicker
  • changed: webp .htaccess rules removed when plugin is deleted
  • changed: JPG quality setting applies to conversion AND image editing (but not regular optimization), so that you can override the WP default of 82
  • changed: API license status check is faster, as results are cached while checking for updates in the background
  • fixed: .htaccess rules for webp inserted properly for sub-directory installs
  • fixed: .jpe files properly detected as image/jpeg when fetching from CDN or during folder-scanning operations
  • fixed: images generated by NextGEN are properly optimized with latest version
  • fixed: deprecated class constructors for NextGEN, Nextcellent, and FlaGallery classes (potential white screen with PHP 7)
  • fixed: basic uploader for FlaGallery broken due to missing class
  • fixed: images uploaded with WPML Media active are now resized, with better detection for newly uploaded images


  • fixed: previous security hardening used boolval(), which is not present on PHP < 5.5


  • security: remote command execution, please update immediately


  • fixed: tool status not shown when tool could not be found, prevents pngout installation
  • fixed: notice when checking nonce lifetime during scheduled optimization
  • fixed: multi-site not saving cloud optimization levels
  • fixed: settings page requiring a refresh to display properly after inserting/removing an API key


  • added: ability to use ImageMagick's 'convert' tool to convert images on Windows
  • fixed: WebP images regenerated during scheduled optimization when PNG optimization disabled
  • fixed: Windows executable checks obey 'use system tools' option
  • fixed: settings page checks for tools which have already been tested and known missing


  • added: kudos to Cache Enabler plugin from KeyCDN for adding WebP rewrite support to work with images generated by EWWW I.O.
  • fixed: untranslatable string for resize setting description
  • fixed: Resize Media Images was not applying to the Media->Add New menu item
  • fixed: Bulk Optimize counted webp images as valid resizes


  • added: resizing for uploaded images, set max width and height and optionally resize all existing images
  • added: retina derivative for resized original is generated if original was at least twice the size of the max dimensions (WP Retina 2x Pro only)
  • fixed: warnings for file_exists in Alt WebP function when open_basedir restriction is in effect
  • removed: disable automatic optimization, use deferred optimization instead
  • removed: disable optipng (it still functions, just seeing if anyone actually needs that option anymore)
  • changed: consolidated various settings into optimization levels for each file format, and removed Cloud tab

Requires: 4.4 or higher
Compatible up to: 4.6.1
Last Updated: 3 weeks ago
Active Installs: 300,000+


4.5 out of 5 stars


46 of 52 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
1 person says it's broken.

100,2,2 100,1,1 100,2,2 100,2,2
100,2,2 100,1,1 50,2,1 100,1,1
100,1,1 0,1,0 100,5,5
0,1,0 100,1,1 100,3,3 100,1,1 0,1,0 100,1,1 100,1,1 0,1,0
100,1,1 100,1,1 100,2,2 100,2,2
100,1,1 100,5,5 100,1,1 100,2,2 0,1,0 100,4,4 100,3,3 100,3,3
75,4,3 100,1,1
100,5,5 100,2,2 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1
100,1,1 33,3,1 100,5,5 100,1,1 100,2,2 100,1,1 100,1,1
100,3,3 80,5,4
100,8,8 33,3,1 100,1,1 100,6,6 100,1,1 100,6,6 100,2,2
100,5,5 50,2,1
100,2,2 100,2,2 100,3,3 100,6,6
100,5,5 100,2,2 100,1,1
100,4,4 100,3,3 100,4,4
100,7,7 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 92,12,11
78,9,7 0,1,0 67,3,2 100,2,2
100,1,1 100,1,1
100,2,2 100,1,1 100,2,2 75,4,3 100,1,1 100,3,3
100,2,2 100,2,2 100,2,2 100,2,2 0,1,0
100,2,2 0,2,0 100,1,1
100,2,2 100,3,3 0,1,0 100,2,2
100,3,3 100,2,2 100,1,1 100,1,1 100,1,1 100,2,2 100,2,2
50,2,1 100,1,1
100,1,1 100,1,1 100,2,2 100,3,3
100,1,1 100,1,1 100,1,1 100,2,2
100,2,2 100,1,1