Easy Optimizer · Version history
Easy Optimizer changelog and version history
- Latest version
- 2.7.5
- Oct 28, 2026 (12 days ago)
- Releases
- 45
- since 2023
- In the last year
- 35
- about one every 10 days
- Tested up to
- WordPress 7.1.4
- PHP 7.4 or later
Releases each year
- 202310 releases
- 20251 release
- 202634 releases
202634 releases
Easy Optimizer 2.7.5Latest
- Fixed: Independent Analytics stopped counting visitors when Bloat Removal → “Limit REST API to Logged-in Users” was on. Independent Analytics records each page view through the REST API as a logged-out visitor, and the toggle refused those requests. Its address is now allowed, like contact forms an…
- Fixed: with Delay JavaScript on, Independent Analytics missed visitors on Mac and Linux computers who left without scrolling, moving the mouse or typing. Its tracking script is now never delayed.
Easy Optimizer 2.7.4
- Fixed: with bbPress, a new reply now clears the cached topic page (including its later pages), its forum, the parent forums and the forums index. Before, it cleared only the reply’s own address, so visitors kept seeing the thread without the reply until the cache expired. The person who posted saw…
- Fixed: with “Post Comments as bbPress Topics”, a reply now also clears the post or page that shows the topic.
- Improved: image optimization encodes several images at once on servers with spare CPUs: half the CPUs the site may use, up to 3 at a time. It used to encode one image at a time on any server, so a large library took a day or more. Shared hosting with one or two CPUs keeps encoding one at a time. Se…
- Improved: image optimization no longer pauses for half a second after each image, and “Optimize all” now starts its workers once instead of once per 200 images queued.
- Fixed: an image the server kept stopping part-way through (PHP time or memory limit) was retried forever, ahead of every other image, so optimization looked stuck. It is now skipped after two tries and the reason is recorded. Each encode also gets its own time allowance, so one large image no longe…
- Fixed: Bloat Removal toggles had no effect. The setting that tells Easy Optimizer any toggle is on was saved in one place and read from another, so nothing was ever removed. Every toggle now applies from the next page load.
- Fixed: “Disable Embeds” now also removes the wp-embed script, and Heartbeat control now stops Heartbeat on the front end as chosen. Both removals were registered too late in WordPress’s start-up to ever run.
- Fixed: upgrading a Free Trial from the Smart Images panel. The Upgrade button answered “This account is already on a paid plan”, and even a purchase that went through was not picked up by the site until the licence key was pasted in by hand. After paying, the site now moves to the paid plan by itse…
- Fixed: Cloud Optimization recognises a 14-day trial. The panel showed a trial license as a paid plan; it now shows “Trial · N days left” and an Upgrade button that upgrades the license you already have. When a trial runs out the site stays connected, serving from your own server, and Upgrade switch…
- Fixed: a license key is checked before it is sent, so a mis-paste gets a clear answer straight away. License and connection errors are now in plain words. Before, the licensing service’s own developer messages could be shown, such as “The license_key string is limited to 32 characters.”
- Fixed: some valid license keys were changed when saved (keys containing characters such as % followed by two letters or digits, or < >), which made the connection fail.
- Fixed: messages in the Cloud Optimization panel are colored: errors in red, success in green. Wording across the license screens and notices is updated; out-of-date references to “fpfree_” account keys and a free plan are gone, and the notice for a license that stopped working no longer says “subsc…
- Improved: connecting and disconnecting are faster. Connecting saves its settings once instead of about twenty times, the panel reloads without a fixed one-second pause, and the screen after checkout no longer reconnects the site every five seconds while it waits for the purchase.
- Fixed: a WebP or AVIF copy now appears under its real name only once it is complete. Before, the file existed empty while it was being encoded, so a page shown at that moment could point at an empty image, and a worker stopped at that moment left the empty file in place.
Easy Optimizer 2.7.3
- New: Restore original or Optimize a single image from the Media Library. A status column in the list view and a row in the image details panel show whether each image is optimized, skipped or restored. An image you restore yourself is left alone by later “Optimize all” runs until you choose Optimiz…
- New: a Stop button for a running image optimization. Images already done stay optimized, and “Optimize remaining” continues from where it stopped.
- New: two Accessibility fixes, off by default. “Skip links are not focusable” points a “Skip to content” link whose target is missing (common with Elementor full-width layouts) at the page’s main content. “Document does not have a main landmark” marks the main content area for screen readers on layo…
- Fixed: the image optimization progress (“8 of 202 done, 192 to go”) now adds up on every refresh. The done count lagged up to 20 seconds behind the to-go count and left out images that were skipped because no smaller copy was possible.
- Fixed: restoring an image whose original had been resized no longer queues it to be optimized and resized again straight away.
- Improved: less background load. The every-minute background check now runs only while there is work queued (preload, image optimization), instead of all the time. On hosts where WP-Cron runs off visitor traffic, an idle site no longer starts a background request about once a minute.
- Improved: a visitor’s browser now remembers that it already reported a page’s measurements, so a page served from a page cache or CDN is not reported again by the same visitor on later visits. A page rendered again, for example after its data was cleared, still reports.
- Removed: two usage-statistics events (Smart Images tab viewed, connect attempted) that only opted-in sites sent. They added noise without measuring anything new.
- Fixed: Cloud Optimization now notices an ended licence even on sites where WP-Cron does not run. Previously such a site kept pointing its files at the CDN, which redirected every file back to the site (an extra round trip each). An overdue status check now runs after a page has been sent to the vis…
Easy Optimizer 2.7.2
- Fixed: Remove Unused CSS stopped reading a stylesheet partway through when it met a Tailwind arbitrary-value class such as bg-[url('/hero.png')]. Every rule after that point was missing from the critical CSS until the visitor interacted, so padding, gradients and image fitting could jump on first p…
- Fixed: with Cloud Optimization connected, the script that loads deferred stylesheets was printed twice. It is now printed once.
- Fixed: an iframe or image inside <noscript> (for example the Google Tag Manager fallback) was being lazy-loaded. Lazy-loading also skipped the wrong elements around the admin bar and could miss <picture> sources. All three now behave as intended.
- Fixed: connecting Cloud Optimization now always clears Used CSS, LCP data and the page cache, so a reconnect no longer serves CSS built under the old settings. Switching edge CSS/JS delivery or cloud Unused CSS in Settings now clears the page cache too.
- Improved: with Cloud Optimization, Smart Lazyload Fonts no longer loads every font before it has measured a page. Fonts stay out of the critical CSS until the first visit measures which ones are visible, and only those are loaded from then on.
- Improved: with Cloud Optimization, fonts referenced in the critical (Used) CSS are now served from the edge too, not only the stylesheets and scripts named in the page.
- Fixed: switching Images off in Cloud Optimization also stopped CSS, JS and fonts from being served from the edge. They are now independent; only an inactive plan stops both.
- Fixed: with Cloud Optimization connected, LCP preload never learned anything — every measurement of an image served from the edge was discarded, so no page got its hero preloaded. Edge-served LCP images are now recorded and matched to the page’s image at any width.
- Fixed: when only one screen size had been measured, its LCP preload was sent to every screen size, so desktop could download a mobile-only hero image it never shows. Each preload is now limited to the screen size it was measured on.
- Improved: pages whose largest element is text or a video without a poster are now recorded as measured, so LCP detection stops re-running on every visit, and that video is never lazy-loaded.
- Improved: connecting Cloud Optimization now also switches on LCP preload.
- Fixed: “Hide WordPress version” removed the version from every stylesheet and script, including the ones plugins, themes and Elementor use to load a fresh copy after an update. With edge delivery that could keep serving an old file for up to a year. It now removes only the WordPress version itself.
- Fixed: Excluded CSS Selectors did not protect Tailwind-style classes such as md:hidden, w-1/2 or 2xl:p-4, because the stylesheet writes them escaped. Exclusions now match whether you type the class as it appears in your HTML or in its escaped form.
- Fixed: changing edge asset exclusions, image delivery, native lazy loading, preconnect, font preloading or passthrough stylesheets now clears the page cache (and, for passthrough stylesheets, rebuilds Used CSS) instead of waiting for the cache to expire.
Easy Optimizer 2.7.1
- Fixed: background images set in page-builder CSS files (Elementor and similar) now load through the CDN. They are already found during analysis; enabling edge CSS/JS delivery on connect is what lets them actually be served optimized, so the hero background — usually your largest image — is no longe…
- Fixed: the Debug Log could show a warning count in its header while the panel underneath read “No warnings or errors logged.” A run of routine info lines could push the real warnings out of the view window. The count and the list are now read together, so they always agree, and older warnings are n…
- Removed: “Minify CSS” and “Minify JavaScript” no longer appear in Recommended next steps. Their impact is minimal next to Remove Unused CSS and Delay JavaScript, and they were adding noise to the list. The settings themselves are unchanged and still available under Optimization.
Easy Optimizer 2.7.0
- New: Cloud Optimization — connect an account to deliver your images, CSS, JS and fonts from 119 edge locations, with per-device image sizing. 14-day free trial, then paid; if it ever ends your site keeps working on your own server.
- New: Local Image Optimization — convert your images to AVIF and WebP on your own server, free. The original file is never touched: variants are saved alongside it and the modern format is served automatically with a full fallback.
Easy Optimizer 2.6.7
- Fixed: sliders could show an empty gap that only filled in once you clicked or scrolled, when Remove Unused CSS was on. Swiper adds its layout classes when its script starts, so those classes are absent from the page Remove Unused CSS reads — and their styles were being stripped while the “before t…
- Fixed: Excluded CSS Selectors silently missed minified rules. A selector written without spaces around >, + or ~ — which is how every minified stylesheet writes them — was not recognised, so an exclusion you added could still be stripped. Of the twelve rules carrying one Swiper class, only three we…
- New: Prefetch Pages now predicts where the visitor is going instead of only reacting. Once the page is idle it works out which destination your own page links to most often — the one you put in the header, the hero button and the footer — and starts that one with no interaction at all. It also watc…
- New: mobile finally gets a real head start. The browser’s own trigger needs a hover, which a touchscreen cannot provide, so phones previously got nothing until the finger came down. Scrolling to a stop now warms the page you are reading, seconds before you tap it.
- Changed: Prerender is now OFF by default, and is switched off on update. It builds the entire page in the background — scripts, images and all — and testing showed it never finishing in the fraction of a second between the mouse button going down and the page opening; the ordinary prefetch served e…
- New: Prefetch Pages has been rebuilt from scratch. It no longer ships any link-scanning JavaScript. Instead it writes one small set of browser speculation rules into the top of every page, so the browser starts loading the next page as soon as the visitor hovers a link — and starts a full prerender…
- Fixed: Easy Optimizer and WordPress were both prefetching. WordPress 6.8+ adds its own speculative loading, and the old module never switched it off — every page carried two competing systems. Prefetch Pages now takes ownership while it is on, and hands WordPress back its own behaviour the moment y…
- Fixed: the per-second throttle could delay the very first prefetch by up to a full second — on a feature whose entire job is to start sooner. There is no queue any more; the browser schedules the work and enforces its own limits.
- Improved: links in your footer are treated as lower intent than links in your content and navigation, so a hover over a privacy-policy link no longer costs the same as a hover over the next article.
- Improved: * wildcards now work in Prefetch Pages → Exclude URLs, the same as in every other Excluded URLs field. Lines naming a query parameter (ref=) are matched against the query string rather than the path.
- Improved: query-string URLs, /wp-json/, feeds, downloads and WooCommerce cart/checkout/account pages are excluded before the browser ever sees them, and exclusions added by other plugins through WordPress’s own wp_speculation_rules_href_exclude_paths filter are honoured too.
- Changed: the “Max prefetch requests/second” and “Per-page limit” settings are gone — they configured the old request queue, which no longer exists. Chromium enforces its own caps (50 prefetches, 2 prerenders in flight). Both stored values are removed automatically on update.
- Changed: the “Immediate” eagerness option is gone. On a whole-document rule it means “fetch every link on this page right now”, which WordPress Core forbids for the same reason. Existing sites set to Immediate move to Eager.
- Removed: the bundled quicklink-derived runtime (assets/easyoptlink.js) and its licence notice. No code derived from it remains.
Easy Optimizer 2.6.6
- Fixed: “Cache for logged-in users” now actually serves cached pages to logged-in visitors. The page was being generated and rewritten on every visit but never served (headers stayed on MISS), because the serving drop-in treated the login cookie as a reason to skip the cache even when this option wa…
- Changed: Instant Load prerenders far fewer pages per view by default (8 instead of 50) and no longer prerenders filtered/sorted URLs that can never be cached — big reduction in background server load on shops and archives. If you set your own limit, it is kept.
- Fixed: Remove Unused CSS no longer re-attempts a build it just failed on every single request (e.g. when stylesheets live on a CDN it can’t read) — a failed build is remembered briefly, so the page serves normally without repeating the expensive work. Clears automatically and on “Clear Used CSS”.
Easy Optimizer 2.6.5
- New: takes over page caching from another cache plugin (like WP Rocket and LiteSpeed do) — but backs up the other plugin’s cache file first and restores it if you turn our cache off or uninstall.
- New: setup wizard can deactivate a conflicting plugin for you so Easy Optimizer can handle its jobs.
- Fixed: Excluded URLs now work with the Defer JavaScript method — before, switching to Defer silently ignored them (reported on Tutor LMS).
- Fixed: wildcards like /shop/* now work in every Excluded URLs field, not just JavaScript.
- Fixed: conflict warnings no longer flag plugins that are installed but switched off — each plugin’s own settings are read now (WP Rocket, LiteSpeed, Autoptimize, Perfmatters, Jetpack Boost, SiteGround, WP-Optimize, Breeze, Hummingbird, WP Fastest Cache, Asset CleanUp, W3 Total Cache, Optimole, Smus…
- Fixed: combine, critical CSS, async, defer and lazy-load clashes are detected too, not just plain minify.
- Fixed: SiteGround sites are no longer told to deactivate SiteGround Optimizer — Easy Optimizer purges through it.
- Fixed: Windows-hosting bug that could switch off another cache plugin.
- Fixed: setup no longer turns Lazy Load on next to a plugin already lazy-loading.
- Changed: simpler sidebar — seven groups become four, Advanced starts collapsed (eight items instead of thirteen). Nothing removed or renamed.
- Changed: distinct sidebar icons; new Compatibility panel on the Dashboard.
- Changed: plugin-conflict detection is cached instead of running on every admin page.
Easy Optimizer 2.6.4
- Changed: Remove Unused CSS uses a new built-in CSS parser — about 2.4 MB smaller, ~5× faster and far less memory. Builder CSS (Elementor/Divi) passed through is now minified too.
- Fixed: a single malformed stylesheet (e.g. an unclosed @media in a builder’s Custom CSS) can no longer break your layout — generated CSS is always balanced.
- Fixed: modern CSS nesting is kept instead of dropped; mis-encoded stylesheets handled more robustly.
Easy Optimizer 2.6.3
- Fixed: Remove Unused CSS now keeps @layer, @scope, @container, @starting-style and modern colour syntax that were being dropped.
- Fixed: the automatic before/after speed test never ran — the “After” score only appeared if you pressed Run yourself. It runs now, and retries up to 3 times on failure.
- Fixed: WordPress 7.1 — “Clear All Cache” no longer shows in the Post/Site editor toolbar.
- New: Smart Images warnings show time left (“about 6 days left”), not just amount.
- New: an optional review prompt, shown only after a real speed gain (10+ mobile points); dismissible for 90 days.
- Changed: free Smart Images plan raised to 500 images/month (was 50); tested with WordPress 7.1.
Easy Optimizer 2.6.2
- Fixed: fatal error on Flywheel, WP Engine and other hardened hosts (disabled PHP functions on PHP 8) that could take a site down, including wp-admin — every such call is checked first now.
- Fixed: cache purging no longer stops when page caching is off — your host cache and Cloudflare are purged on content changes again.
- Fixed: Flywheel cache clearing works now (clears object cache) and tells you what it can’t do; wp-config.php found on split-directory hosts.
- Changed: optimization is off for logged-in users unless “Cache for Logged-in Users” is on (Delay/Defer JS, Minify, Lazy load, Fonts, Preconnect). Logged-out visitors unaffected. Filter: easyopt_skip_for_logged_in.
Easy Optimizer 2.6.1
- New: Cache Query String — give chosen parameters their own cache file, for sites that render the value into the page. Per-click IDs (gclid, fbclid…) are refused.
- Fixed: the strip-query-params filter now applies to the cache drop-in too, so ignoring or adding a parameter actually works.
- Fixed: installing Polylang/WPML on a cached site no longer serves one language to everyone.
- Fixed: Nginx/Apache edge cases (mobile rule, non-standard ports); cache directories no longer created from an unknown Host header.
- Security: CDN credentials moved out of the main settings row — no longer in the admin payload or exports; image URLs with \ or @ in the host are no longer signed.
Easy Optimizer 2.6.0
- New: Debug Issues panel — find which optimization breaks a page in a couple of clicks.
- New: “What to fix next” dashboard card — your PageSpeed findings as a ranked to-do list.
- New: setup wizard checks your site and skips anything another plugin or host already handles.
- New: GoDaddy Managed WordPress Varnish/CDN purging.
- Security: preload requests are signed now (were unauthenticated); beacon token tied to its page; no longer overwrites another active cache plugin’s drop-in; cached pages declare what they vary on; exports no longer contain Cloudflare/Redis/CDN secrets.
- Fixed: page cache now works on Pantheon and read-only hosts; cache paths built by one shared routine (ends permanent misses); “Pages cached” counts accurately.
- Fixed: Remove Unused CSS no longer crashes on memory-limited hosts; Delay JS no longer breaks
- Improved: conflict notices name the other plugin and link to Plugins; detection extended to 20+ more plugins and to fonts (OMGF, Perfmatters); disabled modules no longer load on the front end.
- Developers: new EasyOpt_Preflight::scan(), wizard/preflight REST route, and many new filters.
Easy Optimizer 2.5.6
- Fixed: Smart Lazyload/Preload Fonts had no effect on mobile (wrong data name); desktop was fine.
- Fixed: robots.txt/llms.txt no longer cached for 30 days (now 5 minutes); preconnect no longer opens connections to metadata-only domains.
- Changed: preconnect no longer emits a duplicate dns-prefetch tag.
Easy Optimizer 2.5.5
- Fixed: OpenLiteSpeed pages could download instead of display — now served in a universal format.
- Fixed: preload no longer false-stalls on shared hosting; firewall-blocked requests retry with backoff.
- Fixed: multilingual (Polylang/WPML) no longer serves the wrong language; images no longer stay blank with sliders/AJAX.
- New: browser-native lazy load (on by default); preconnect to external origins; optional Nginx rules.
- Improved: WooCommerce shoppers keep getting cached pages after add-to-cart; many more ad/email tracking parameters no longer bust the cache.
- Diagnostics (opt-in): sends less data; optional one-click deactivation feedback; Smart Images health reporting.
Easy Optimizer 2.5.4
- Performance release — no feature or settings changes. Faster cache purges (deduplicated, run after the response), faster minify and Used CSS, lighter preload and object cache, and many micro-optimizations across the plugin.
Easy Optimizer 2.5.3
- New: Smart Images (FluxPress CDN) — on-the-fly AVIF/WebP, per-device resizing and compression from a global edge; originals never uploaded or modified. Smart quality per browser/format.
- New: cache for logged-in users (per role; per-user via filter).
- New: Cron Events tool in your site’s timezone with overdue markers and Run-now.
- Fixed: Object Cache drop-in install on PHP-FPM hosts (atomic, in-process syntax check); xCloud Redis ACL format supported.
- Improved: real “Don’t show again” on notices; clearer Smart Images connection status.
Easy Optimizer 2.5.2
- Fixed: Remove Unused CSS — missing styles across template variants of the same post type; shared CSS now updates as new layouts appear.
- Fixed: LCP — correctly de-lazifies the detected image with lazysizes-style lazy loading.
- Fixed: blank pages on very large pages (PCRE handling, incomplete-output safeguards).
- Fixed: Lazy Load — fewer resize events, less flicker.
- Changed: lazy iframes without dimensions reserve a 16:9 placeholder.
Easy Optimizer 2.5.1
- New: Object Cache — Redis 6+ ACL username, host-provisioned WP_REDIS_CONFIG, TLS (rediss://) and unix sockets; shows which values come from wp-config.php.
- Fixed: Remove Unused CSS — Elementor entrance/hover animations (zoomInUp etc.) no longer break; helper classes safelisted.
- Improved: precise Redis connection diagnostics; Test Connection works with bundled Predis; changing DB/prefix flushes the old location.
Easy Optimizer 2.5.0
- New: Object Cache module — one-click Redis (Relay/PhpRedis/Predis) for database-heavy, logged-in and WooCommerce pages; never touches another plugin’s drop-in.
- New: adaptive preload speed (Gentle/Balanced/Turbo) that tunes to your server; Preload Fonts per device; Remove Unused CSS keeps JS-added classes.
- Improved: per-URL LCP preload covering background, and image-set heroes; responsive srcset via the image CDN; link prefetch rate cap and back-off.
- Fixed: preloading now works on server-cache hosts (WPX, Varnish/LiteSpeed/nginx); redirected URLs never cached under the original address.
- Fixed: URLs merely containing “sitemap/cart/checkout/my-account” are no longer wrongly excluded.
Easy Optimizer 2.4.2
- Fixed: PHP open_basedir warnings on restricted hosts (CloudLinux, GridPane, RunCloud, Cloudways).
- Improved: conflict notices are feature-aware — only warn when the overlapping feature is actually on.
- Fixed: Perfmatters not detected for overlap notices (wrong path).
Easy Optimizer 2.4.1
- New: Backend Analyzer measures each plugin/theme’s own code (per-callback) and groups by plugin; WordPress core time shown separately.
- Improved: each test shows the average and replaces the previous result; browser fallback when the host blocks the server request.
- New: developer purge hooks — easyopt_purge_all, easyopt_purge_url, easyopt_purge_url_type.
- Added: donation link.
Easy Optimizer 2.4.0
- New: dashboard speed test (PageSpeed before/after, mobile and desktop, Core Web Vitals).
- New: Backend Analyzer — find slow plugins, themes and queries.
- Fixed: admin toolbar menu restored; blank admin panel when another plugin loads React; autoload toggle on WP 6.6+.
- Fixed: cache correctness — cookie-keyed variants in .htaccess mode, debounced builder purges, settings-import pipeline, .xml/.txt slugs, HEAD requests, cached-page counter.
- New: per-site multisite drop-in config; unused-asset garbage collection; batched Cloudflare per-URL purges.
- Improved: cache engine split into modules with a classmap autoloader.
Easy Optimizer 2.3.2
- Fixed: Astra .ast-header-break-point styles excluded from desktop Used CSS.
- Improved: targeted cache invalidation — editing a post clears only its URLs; comments/terms/authors clear just the affected page; multisite clears only the current site.
- Improved: WooCommerce cart/checkout/account reliably uncached (including translated slugs); per-currency cache copies.
- Improved: simplified admin-bar menu to three actions; minified prefetch/LCP scripts.
Easy Optimizer 2.3.1
Easy Optimizer 2.3.0
Easy Optimizer 2.2.2
Easy Optimizer 2.2.1
Easy Optimizer 2.2.0
Easy Optimizer 2.1.0
Easy Optimizer 2.0.2
Easy Optimizer 2.0.1
Easy Optimizer 2.0.0
20251 release
Easy Optimizer 1.1.0
202310 releases
Easy Optimizer 1.0.9
Easy Optimizer 1.0.8
Easy Optimizer 1.0.7
Easy Optimizer 1.0.6
Easy Optimizer 1.0.5
Easy Optimizer 1.0.4
Easy Optimizer 1.0.3
Easy Optimizer 1.0.2
Easy Optimizer 1.0.1
Easy Optimizer 1.0.0
Questions about Easy Optimizer’s releases
What is the latest version of Easy Optimizer?
2.7.5, released on Oct 28, 2026 (1 week ago). It’s tested up to WordPress 7.1.4 and needs PHP 7.4 or later.
How often is Easy Optimizer updated?
35 releases in the last year, about one every 10 days. Its first release on WordPress.org dates from July 2023.
Know when your rivals ship
Track your plugin and its rivals: TrackWP sees each new release in the nightly snapshot and alerts you, with what it did to their rank.
Start freeRelease dates come from the day each version’s folder was made in Easy Optimizer’s WordPress.org SVN repository; the notes from its readme’s changelog, as its authors wrote it.