{"id":335656,"date":"2026-07-21T19:30:49","date_gmt":"2026-07-21T19:30:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/optimazz-website-optimization-and-speedup\/"},"modified":"2026-10-15T11:24:25","modified_gmt":"2026-10-15T11:24:25","slug":"optimazz","status":"publish","type":"plugin","link":"https:\/\/ml.wordpress.org\/plugins\/optimazz\/","author":18312399,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Optimazz \u2013 Website Optimization and Speedup","header_author":"Shipon Karmakar","header_description":"All-in-one WordPress performance optimization \u2014 page caching, JS delay, and CSS optimization.","assets_banners_color":"436c60","last_updated":"2026-10-15 11:24:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/optimazz\/","header_author_uri":"https:\/\/profiles.wordpress.org\/shiponkarmakar\/","rating":5,"author_block_rating":0,"active_installs":50,"downloads":2361,"num_ratings":4,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"shiponkarmakar","date":"2026-07-21 19:30:39","revision":3617648},"1.0.10":{"tag":"1.0.10","author":"shiponkarmakar","date":"2026-08-07 13:53:59","revision":3637941},"1.0.11":{"tag":"1.0.11","author":"shiponkarmakar","date":"2026-08-12 19:13:26","revision":3643897},"1.0.12":{"tag":"1.0.12","author":"shiponkarmakar","date":"2026-08-13 11:43:39","revision":3645135},"1.0.13":{"tag":"1.0.13","author":"shiponkarmakar","date":"2026-08-17 17:22:41","revision":3651494},"1.0.14":{"tag":"1.0.14","author":"shiponkarmakar","date":"2026-08-20 18:14:10","revision":3657524},"1.0.15":{"tag":"1.0.15","author":"shiponkarmakar","date":"2026-08-28 13:29:34","revision":3670435},"1.0.16":{"tag":"1.0.16","author":"shiponkarmakar","date":"2026-09-03 18:28:42","revision":3680217},"1.0.17":{"tag":"1.0.17","author":"shiponkarmakar","date":"2026-09-04 05:49:42","revision":3680683},"1.0.18":{"tag":"1.0.18","author":"shiponkarmakar","date":"2026-09-11 21:18:34","revision":3692106},"1.0.19":{"tag":"1.0.19","author":"shiponkarmakar","date":"2026-09-17 12:35:24","revision":3700289},"1.0.2":{"tag":"1.0.2","author":"shiponkarmakar","date":"2026-07-22 17:37:25","revision":3619024},"1.0.20":{"tag":"1.0.20","author":"shiponkarmakar","date":"2026-09-18 20:20:39","revision":3702741},"1.0.21":{"tag":"1.0.21","author":"shiponkarmakar","date":"2026-09-20 19:49:23","revision":3704576},"1.0.22":{"tag":"1.0.22","author":"shiponkarmakar","date":"2026-09-22 20:30:39","revision":3708055},"1.0.23":{"tag":"1.0.23","author":"shiponkarmakar","date":"2026-09-27 17:57:08","revision":3715895},"1.0.24":{"tag":"1.0.24","author":"shiponkarmakar","date":"2026-10-01 19:45:47","revision":3723777},"1.0.3":{"tag":"1.0.3","author":"shiponkarmakar","date":"2026-07-22 19:54:00","revision":3619144},"1.0.4":{"tag":"1.0.4","author":"shiponkarmakar","date":"2026-07-24 16:35:14","revision":3621669},"1.0.5":{"tag":"1.0.5","author":"shiponkarmakar","date":"2026-07-25 19:11:55","revision":3622765},"1.0.6":{"tag":"1.0.6","author":"shiponkarmakar","date":"2026-07-26 13:00:21","revision":3623445},"1.0.7":{"tag":"1.0.7","author":"shiponkarmakar","date":"2026-07-26 20:03:03","revision":3623780},"1.0.8":{"tag":"1.0.8","author":"shiponkarmakar","date":"2026-07-28 18:42:37","revision":3626344},"1.0.9":{"tag":"1.0.9","author":"shiponkarmakar","date":"2026-07-30 18:13:49","revision":3629007},"1.1.0":{"tag":"1.1.0","author":"shiponkarmakar","date":"2026-10-13 10:00:51","revision":3743505},"1.1.1":{"tag":"1.1.1","author":"shiponkarmakar","date":"2026-10-15 11:24:25","revision":3748279}},"upgrade_notice":{"1.1.1":"<p>Security, speed and language update: CSS optimization never reads PHP-generated stylesheets as files, hardened cache paths and Critical CSS, one database query less per uncached page, and right-to-left admin support. Recommended.<\/p>","1.1.0":"<p>Multisite network support: manage page caching for every site from Network Admin \u2192 Optimazz, with a separate cache per site. Also a faster mobile first paint (Google Fonts) and many fixes. Recommended.<\/p>","1.0.24":"<p>Scheduled cache preloading now runs on time even when every visitor gets a cached page, works behind 6G\/7G firewalls, and the cache rebuilds itself after you change settings. Also warns you when another caching plugin is blocking the Optimazz page cache. Recommended.<\/p>","1.0.15":"<p>Adds a Dashboard &quot;Recommendations&quot; panel that tells you exactly what to optimize next, with one-click fixes. Fully local \u2014 no external service. Recommended.<\/p>","1.0.14":"<p>Reduce Cumulative Layout Shift (CLS): a new Font loading &quot;Optional&quot; mode removes web-font layout shift, and images\/iframes now reserve their space with aspect-ratio. Recommended for a better Core Web Vitals score.<\/p>","1.0.13":"<p>Image optimization is more robust \u2014 WebP\/AVIF conversion no longer crashes on large images, bulk jobs skip a single failed item instead of stopping, and a new Server Requirements panel (Tools) shows exactly what your host supports. Recommended.<\/p>","1.0.12":"<p>The cache preloader is now firewall-friendly \u2014 it paces its requests and stops immediately if a firewall or security plugin returns 403\/429\/503, so warming can no longer trip a rate-limiter. Recommended.<\/p>","1.0.11":"<p>Smarter cache preloading \u2014 warming now follows the whole site like a sitemap (custom post types and category\/tag archives too, most-important first) with a live time-remaining estimate. Recommended.<\/p>","1.0.10":"<p>Adds opt-in &quot;Remove unused CSS&quot; options (block-editor CSS on the front end, WooCommerce and Easy Digital Downloads CSS off their own pages) that cut render-blocking CSS and improve First Contentful Paint, plus a refreshed sidebar and a fix for admin scroll flicker. Recommended.<\/p>","1.0.9":"<p>Adds a one-click &quot;Take over caching&quot; fix for when another caching plugin blocks Optimazz \u2014 installs the drop-in and enables WP_CACHE so pages are actually cached. Recommended if Cache health shows a conflict.<\/p>","1.0.8":"<p>Mobile speed fix: the hero (LCP) image is no longer lazy-loaded. Also delays third-party scripts (analytics, pixels, chat), adds a one-click Cache health check, and warns when optimizing without Page Cache. Strongly recommended.<\/p>","1.0.7":"<p>Fixes bulk WebP\/AVIF conversion and preload failing with &quot;not a valid JSON response&quot; on low-memory hosts, and makes LCP image preloading smarter (no more preloading the logo or an oversized image). Recommended update.<\/p>","1.0.6":"<p>Fixes a layout break when &quot;Combine CSS&quot; is enabled on page-builder sites (mega-menus and sections no longer lose their styling), and adds a progress panel to database optimization. Recommended update.<\/p>","1.0.5":"<p>Important fix: WooCommerce checkout is now safe on default settings (never cached or JS-delayed). Also: delaying JavaScript no longer slows First\/Largest Contentful Paint on JavaScript-rendered sites. Also adds inline JS minification, a Critical CSS field, LCP preload, and cleaner settings.<\/p>","1.0.4":"<p>Fixes two possible fatal errors during image optimization, adds separate defer\/delay exclusion lists, and polishes the admin interface. Recommended update.<\/p>","1.0.3":"<p>Important fix for Apache and LiteSpeed servers, where optimized CSS could be blocked and leave pages unstyled. Also includes a cache-key security fix. Upgrading is recommended.<\/p>","1.0.1":"<p>Compatibility and code-quality improvements for the plugin directory review.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":4},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3617647,"resolution":"128x128","location":"assets","locale":"","width":256,"height":256},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3617647,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3744054,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3744054,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.10","1.0.11","1.0.12","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","1.0.18","1.0.19","1.0.2","1.0.20","1.0.21","1.0.22","1.0.23","1.0.24","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3617647,"resolution":"1","location":"assets","locale":"","width":1920,"height":1440},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3617647,"resolution":"10","location":"assets","locale":"","width":1920,"height":1440},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3617647,"resolution":"11","location":"assets","locale":"","width":1920,"height":1440},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3617647,"resolution":"12","location":"assets","locale":"","width":1920,"height":1440},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3617647,"resolution":"2","location":"assets","locale":"","width":1920,"height":1440},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3617647,"resolution":"3","location":"assets","locale":"","width":1920,"height":1440},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3617647,"resolution":"4","location":"assets","locale":"","width":1920,"height":1440},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3617647,"resolution":"5","location":"assets","locale":"","width":1920,"height":1440},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3617647,"resolution":"6","location":"assets","locale":"","width":1920,"height":1440},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3617647,"resolution":"7","location":"assets","locale":"","width":1920,"height":1440},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3617647,"resolution":"8","location":"assets","locale":"","width":1920,"height":1440},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3617647,"resolution":"9","location":"assets","locale":"","width":1920,"height":1440}},"screenshots":{"1":"Dashboard \u2014 live performance score, cache statistics, quick actions, and per-module on\/off switches.","2":"Page Cache \u2014 serve static HTML instead of running PHP, with separate mobile caching.","3":"File Optimization \u2014 defer and delay JavaScript, and minify, combine and async-load CSS.","4":"Media \u2014 lazy-load images and iframes, add missing dimensions, and convert to WebP\/AVIF.","5":"Fonts \u2014 font-display swap, preconnect to font hosts, and preload font files.","6":"Preload \u2014 warm the cache automatically so visitors never hit a cold page.","7":"Advanced Rules \u2014 fine-tune caching with URL, cookie, and user-agent exclusions.","8":"Database \u2014 clean revisions, drafts, spam, and transients, and optimize tables.","9":"Heartbeat \u2014 reduce or disable the WordPress Heartbeat API to lower server load.","10":"Tweaks \u2014 disable emojis, embeds, query strings, XML-RPC, and other front-end bloat.","11":"CDN \u2014 rewrite static asset URLs to your CDN hostname.","12":"Tools \u2014 import, export, and reset your configuration."}},"plugin_section":[],"plugin_tags":[146,4884,187,247,15376],"plugin_category":[52,54],"plugin_contributors":[191464],"plugin_business_model":[],"class_list":["post-335656","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-lazy-load","plugin_tags-optimization","plugin_tags-performance","plugin_tags-webp","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-shiponkarmakar","plugin_committers-shiponkarmakar"],"banners":{"banner":"https:\/\/ps.w.org\/optimazz\/assets\/banner-772x250.png?rev=3744054","banner_2x":"https:\/\/ps.w.org\/optimazz\/assets\/banner-1544x500.png?rev=3744054","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/optimazz\/assets\/icon-128x128.png?rev=3617647","icon_2x":"https:\/\/ps.w.org\/optimazz\/assets\/icon-256x256.png?rev=3617647","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-1.png?rev=3617647","caption":"Dashboard \u2014 live performance score, cache statistics, quick actions, and per-module on\/off switches."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-2.png?rev=3617647","caption":"Page Cache \u2014 serve static HTML instead of running PHP, with separate mobile caching."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-3.png?rev=3617647","caption":"File Optimization \u2014 defer and delay JavaScript, and minify, combine and async-load CSS."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-4.png?rev=3617647","caption":"Media \u2014 lazy-load images and iframes, add missing dimensions, and convert to WebP\/AVIF."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-5.png?rev=3617647","caption":"Fonts \u2014 font-display swap, preconnect to font hosts, and preload font files."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-6.png?rev=3617647","caption":"Preload \u2014 warm the cache automatically so visitors never hit a cold page."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-7.png?rev=3617647","caption":"Advanced Rules \u2014 fine-tune caching with URL, cookie, and user-agent exclusions."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-8.png?rev=3617647","caption":"Database \u2014 clean revisions, drafts, spam, and transients, and optimize tables."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-9.png?rev=3617647","caption":"Heartbeat \u2014 reduce or disable the WordPress Heartbeat API to lower server load."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-10.png?rev=3617647","caption":"Tweaks \u2014 disable emojis, embeds, query strings, XML-RPC, and other front-end bloat."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-11.png?rev=3617647","caption":"CDN \u2014 rewrite static asset URLs to your CDN hostname."},{"src":"https:\/\/ps.w.org\/optimazz\/assets\/screenshot-12.png?rev=3617647","caption":"Tools \u2014 import, export, and reset your configuration."}],"raw_content":"<!--section=description-->\n<p>https:\/\/www.youtube.com\/watch?v=bHK90Hxwmno<\/p>\n\n<p>Optimazz is an all-in-one performance suite that applies the optimizations with the biggest impact on Core Web Vitals \u2014 automatically and safely. Every module is opt-in and reversible, and Optimazz never overwrites another caching plugin's files.<\/p>\n\n<p><strong>Modules included:<\/strong><\/p>\n\n<ul>\n<li><strong>Page Cache<\/strong> \u2014 serve static HTML instead of running PHP on every request, with smart exclusions (logged-in users, carts, query strings), automatic purging on content changes, and a cron-based cache preloader so visitors never hit a cold page.<\/li>\n<li><strong>JavaScript<\/strong> \u2014 defer scripts and delay them until the first user interaction to cut Total Blocking Time, with an exclusion list.<\/li>\n<li><strong>CSS<\/strong> \u2014 minify, combine, and load CSS asynchronously to remove render-blocking stylesheets.<\/li>\n<li><strong>Image Optimization<\/strong> \u2014 lazy-load images and iframes, add missing dimensions to prevent layout shift, generate and serve WebP\/AVIF, bulk-compress your existing library, convert opaque PNGs to JPEG, and replace YouTube embeds with a click-to-load preview.<\/li>\n<li><strong>Fonts<\/strong> \u2014 add <code>font-display: swap<\/code>, preconnect to font hosts, and preload font files.<\/li>\n<li><strong>Database<\/strong> \u2014 clean revisions, auto-drafts, trashed posts, spam\/trashed comments and expired transients, optimize tables, and schedule automatic cleanups.<\/li>\n<li><strong>Heartbeat<\/strong> \u2014 reduce or disable the WordPress Heartbeat API per context to lower server load.<\/li>\n<li><strong>Tweaks<\/strong> \u2014 disable emojis, embeds, dashicons, query strings, XML-RPC and pingbacks, and add DNS-prefetch \/ preconnect hints.<\/li>\n<li><strong>CDN<\/strong> \u2014 rewrite static asset URLs to your CDN hostname.<\/li>\n<\/ul>\n\n<p>A live performance score on the dashboard shows which optimizations are active and your biggest remaining win.<\/p>\n\n<h3>Build process and source code<\/h3>\n\n<p>The admin interface is a React application. The human-readable source lives in the <code>src\/<\/code> directory shipped inside the plugin (<code>src\/index.js<\/code> and <code>src\/index.scss<\/code>), and the compiled, minified output lives in <code>build\/<\/code>.<\/p>\n\n<p>To regenerate the compiled files from source:<\/p>\n\n<ol>\n<li>Install dependencies: <code>npm install<\/code><\/li>\n<li>Build: <code>npm run build<\/code><\/li>\n<\/ol>\n\n<p>This uses the official <code>@wordpress\/scripts<\/code> (webpack) toolchain \u2014 no custom or hidden build configuration. All source and build tooling are included in the plugin; nothing is obfuscated.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Optimazz does not require any external service to function, and it works entirely on your own server by default. Two optional, admin-controlled features can reference third-party hosts:<\/p>\n\n<ol>\n<li><p><strong>Google Fonts optimization (Fonts module).<\/strong> If \u2014 and only if \u2014 your theme or another plugin already loads Google Fonts, and you enable the Fonts module, Optimazz adds <code>preconnect<\/code> resource hints to <code>fonts.googleapis.com<\/code> and <code>fonts.gstatic.com<\/code> and can add <code>display=swap<\/code> to the existing font URL. Optimazz does not add Google Fonts to a site that isn't already using them, and it does not send any personal or site data \u2014 a <code>preconnect<\/code> is only a browser hint to open a connection earlier. The fonts themselves are requested by the visitor's browser from Google, exactly as they were before the plugin, under Google's terms: https:\/\/policies.google.com\/terms and privacy policy: https:\/\/policies.google.com\/privacy<\/p><\/li>\n<li><p><strong>CDN rewriting (CDN module).<\/strong> If you enable the CDN module and enter a CDN hostname, Optimazz rewrites the URLs of your own static assets (CSS, JS, images) to that hostname so visitors' browsers load them from your CDN. The CDN is a service you choose and configure; Optimazz sends no data to it itself and is not affiliated with any CDN provider. Consult your chosen CDN's own terms and privacy policy.<\/p><\/li>\n<\/ol>\n\n<p>Both features are off by default and take effect only after you explicitly enable them.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>optimazz<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open <strong>Optimazz<\/strong> in the admin menu and enable the modules you want.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20optimazz%20work%20on%20wordpress%20multisite%3F\"><h3>Does Optimazz work on WordPress multisite?<\/h3><\/dt>\n<dd><p>Yes. Network-activate it, then switch page caching on for every site in Network Admin \u2192 Optimazz (super admins only). Each site gets its own cache and keeps its own settings and cache exclusions. You can also activate Optimazz on individual sites only; then only those sites are cached.<\/p><\/dd>\n<dt id=\"does%20optimazz%20work%20alongside%20another%20caching%20plugin%3F\"><h3>Does Optimazz work alongside another caching plugin?<\/h3><\/dt>\n<dd><p>Optimazz will not overwrite another caching plugin's <code>advanced-cache.php<\/code> drop-in. To use Optimazz page caching, deactivate any other page-caching plugin first. The other (non-caching) modules work alongside most plugins.<\/p><\/dd>\n<dt id=\"will%20page%20caching%20work%20on%20my%20host%3F\"><h3>Will page caching work on my host?<\/h3><\/dt>\n<dd><p>Page caching needs <code>WP_CACHE<\/code> to be defined, which Optimazz adds to <code>wp-config.php<\/code> automatically. If <code>wp-config.php<\/code> is not writable, Optimazz shows a notice with the line to add manually.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20to%20delay%20javascript%3F\"><h3>Is it safe to delay JavaScript?<\/h3><\/dt>\n<dd><p>Delay-until-interaction is the biggest speed win but can affect scripts that must run before interaction. Start with \"Delay\" on and \"Delay all\" off, then add any problematic script keywords to the exclusion list.<\/p><\/dd>\n<dt id=\"does%20converting%20png%20to%20jpeg%20lose%20my%20originals%3F\"><h3>Does converting PNG to JPEG lose my originals?<\/h3><\/dt>\n<dd><p>Only opaque PNGs are converted, the original is optionally backed up to <code>uploads\/optimazz-backup<\/code>, and the conversion is rolled back if anything fails.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20phone%20home%20or%20collect%20data%3F\"><h3>Does the plugin phone home or collect data?<\/h3><\/dt>\n<dd><p>No. Optimazz does not track users, register accounts, or send any of your site's or visitors' data to Optimazz servers. See the \"External services\" section for the only optional third-party hints the plugin can add.<\/p><\/dd>\n<dt id=\"why%20does%20the%20plugin%20add%20inline%20%26lt%3Bscript%26gt%3B%20and%20%26lt%3Bstyle%26gt%3B%20tags%20to%20my%20pages%3F\"><h3>Why does the plugin add inline &lt;script&gt; and &lt;style&gt; tags to my pages?<\/h3><\/dt>\n<dd><p>Those small inline fragments (the delay-JavaScript loader, critical\/async CSS, the lazy-load helper and LCP preload hints) are the actual optimization output that Optimazz writes into your front-end HTML. They are the product of the plugin's work, not the plugin's own asset loading \u2014 a delay-until-interaction loader cannot be enqueued as an external file. The admin interface and all of the plugin's own assets are loaded normally through the WordPress enqueue functions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Security: CSS optimization no longer reads a stylesheet that a PHP script generates (dynamic CSS) as a file \u2014 that could copy the script's source code into the public optimized CSS. Only real static files (.css, .js, images, fonts) are read.<\/li>\n<li>Security: hardened cache folder names and the Critical CSS field against crafted input.<\/li>\n<li>Improved: one database query less on every page load that isn't served from the cache.<\/li>\n<li>Improved: right-to-left languages (Arabic, Hebrew, Persian, Urdu and others) now get a mirrored Optimazz admin screen, and file sizes read correctly in them. Two error messages that were English-only are now translatable, and the translation template includes every string.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Fixed: Google Fonts never loaded on sites whose theme or plugin requests them in the old weight format through the new Google Fonts address (for example \"Open Sans:400,700\" or \"w400,700\"). Google rejects those requests, so the font was missing while the broken stylesheet still held back the first paint on mobile by most of a second. Optimazz now repairs them into a valid request.<\/li>\n<li>New: Google Fonts load without blocking the page (on by default, Fonts settings). With font display Swap or Fallback the page appears right away in a fallback font and switches when the web font arrives, instead of waiting for Google first. With Optional (zero layout shift) the stylesheet still loads first, so text never shifts.<\/li>\n<li>Improved: sites using Jetpack's Site Accelerator load WordPress core stylesheets from c0.wp.com, which Optimazz used to skip as external, so they stayed render-blocking. When the version matches your WordPress, they are now minified, combined and loaded like local files.<\/li>\n<li>Improved: more chat widgets are delayed until the visitor interacts \u2014 OpenWidget, Zendesk, Drift, Freshchat \/ Freshworks, JivoChat, Smartsupp and Small Chat \u2014 cutting mobile Total Blocking Time.<\/li>\n<li>New: full multisite support. Network-activate Optimazz and manage page caching for the whole network in Network Admin \u2192 Optimazz: switch it on once, choose mobile and logged-in caching, cache lifetime, browser-cache rules and automatic preload, and see every site with its cached pages and its own Purge and Preload buttons. Each site gets its own cache \u2014 on subdirectory and subdomain networks \u2014 keeps its own exclusions (Advanced Rules) and all its other Optimazz settings, and can purge and preload its own pages.<\/li>\n<li>Improved: on multisite only the network administrator controls the files every site shares (wp-config.php, advanced-cache.php, .htaccess); a site's own settings never change them, so one site can't switch caching on or off for the others.<\/li>\n<li>Fixed: before this version, on multisite one site's settings controlled caching for every site, only one site of a subdomain network was actually cached, any site administrator could rewrite wp-config.php and .htaccess, and deactivating Optimazz on one site removed the cache for the whole network.<\/li>\n<li>Fixed: deleting Optimazz from a multisite network only cleaned up the main site; settings, scheduled tasks, image data and generated CSS of the other sites were left behind. Uninstall now cleans every site.<\/li>\n<li>Fixed: on sites using plain permalinks (addresses like ?page_id=5) the \"Cached pages\" count showed 1 no matter how many pages were cached.<\/li>\n<li>Improved: the preload summary now names the home page and counts each address once, so its parts add up to the total.<\/li>\n<li>Improved: changing a cache rule (for example a new exclusion) now also clears pages that were cached under the old rules.<\/li>\n<li>Improved: the Changelog section of this readme now lists recent versions only; the complete history is in changelog.txt.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Fixed: the automatic preload (after saving settings, and the scheduled one) only warmed the first 50 addresses, so on bigger sites it covered far fewer pages than a manual preload. It now warms the whole site in short background chunks \u2014 each continues where the last stopped, and only one runs at a time \u2014 so it never overloads the server or hits the PHP time limit.<\/li>\n<li>Improved: preloading is much faster \u2014 desktop and mobile copies are warmed at the same time, a manual preload warms several pages per step, and the page list is built once per run instead of on every step.<\/li>\n<li>Improved: the preload explains what it is warming, e.g. \"Found 74 pages to warm: 10 pages, 11 posts, 18 products, 12 category and tag pages\" \u2014 the total includes posts, products and archive pages, not only Pages. Page-builder template libraries (Elementor, Beaver Builder, Divi, Bricks \u2026), WooCommerce cart \/ checkout \/ account pages and anything in \"Never cache these URLs\" are no longer in the list, since visitors never get them from the cache.<\/li>\n<li>Fixed: the preloader reported pages as \"warmed\" even when none were saved to the cache (e.g. \"Warmed 114 \/ 121\" while Cached pages stayed at 0), with no hint why. It now counts only pages that really reached the cache (\"\u00b7 98 cached \u00b7 16 not cached\") \u2014 counted per page (desktop and mobile copies of one page count once), so it matches the \"Cached pages\" card, and when pages are not being cached it stops after a few and explains the exact reason and fix: another caching plugin owns advanced-cache.php, the drop-in or WP_CACHE is missing, a server or CDN cache (LiteSpeed, Cloudflare, Varnish \u2026) answers before WordPress, a plugin sets DONOTCACHEPAGE, pages return an error status, the cache folder is not writable, or your exclusion rules match.<\/li>\n<li>Fixed: on sites behind a proxy, load balancer or Cloudflare (HTTPS ends at the proxy), cached pages were saved under an http address and never found again for https visitors. The real scheme is now read from X-Forwarded-Proto \/ CF-Visitor.<\/li>\n<li>New: if another caching plugin (WP Rocket, Seraphinite Accelerator, LiteSpeed Cache \u2026) controls the cache drop-in while Optimazz page cache is on, a notice now appears on every admin screen \u2014 naming the plugin, with one-click \"Deactivate it and use Optimazz\" and \"Use Optimazz for caching\" buttons, or \"Keep the other plugin\" to hide it. Before, the Optimazz page cache silently stayed inactive unless you opened its Cache health panel.<\/li>\n<li>Improved: conflict detection now also recognises Seraphinite Accelerator, FlyingPress, WP-Optimize and NitroPack, and cache plugins installed under a renamed folder (e.g. a GitHub download).<\/li>\n<li>Improved: \"Cache lifespan\" and \"Auto-preload\" can now be changed right from the Dashboard (a dropdown on each row), and the preload row shows when the next run is due.<\/li>\n<li>Fixed: scheduled auto-preload often never ran on well-cached sites. WordPress only runs scheduled tasks when it loads, but cached pages are served without loading WordPress, so the preload quietly went overdue. When a preload is due, a cached page view now wakes WordPress's scheduler in the background (after the page has been sent, at most once a minute).<\/li>\n<li>Fixed: the dashboard showed an overdue preload as \"in 3 hours\"; it now says \"due now\", and a new \"Last auto-preload\" line shows when it last ran and how many pages it warmed (or that a firewall blocked it).<\/li>\n<li>New: choose how often the automatic preload runs \u2014 every hour, twice a day or once a day (Preload settings). Turning page caching off now also clears the preload schedule, and a notice explains when WP-Cron is disabled on the site.<\/li>\n<li>Fixed: switching a module on or off (or using Undo, Reset, or the post-update refresh) cleared the whole page cache and then left it empty, so the site ran uncached \u2014 and slow \u2014 until each page happened to get a visitor or the twice-daily preload ran. The cache is now rebuilt automatically straight after (when page cache and preloading are on).<\/li>\n<li>Fixed: switching Optimazz page caching off, or deactivating Optimazz, turned off WP_CACHE even when another caching plugin (e.g. WP Rocket) owned the cache drop-in, which silently disabled that plugin's page cache. WP_CACHE is now only turned off when the drop-in was Optimazz's own.<\/li>\n<li>Fixed: cache preloading stopped with a 403 error when a firewall such as the 6G\/7G rules in All-In-One Security was enabled. The preloader identified itself as \"Optimazz-Preloader\", and these firewalls block any visitor whose user-agent contains the word \"loader\". It now identifies as \"Optimazz-CacheWarmer\" in the standard crawler format, which those rules allow. The user-agent can be changed with the new <code>optimazz_preload_user_agent<\/code> filter.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Fixed: with WebP\/AVIF serving on, some images (often the site logo) showed as broken on HTTPS sites whose content still used old http:\/\/ image addresses. Browsers upgrade a plain http:\/\/ image to https:\/\/ automatically, but block an http:\/\/ image inside a  source \u2014 and never fall back. Next-gen image sources now always use https:\/\/ on HTTPS pages.<\/li>\n<li>Fixed: in responsive images, a size without a WebP\/AVIF copy could be offered to the browser and show as broken; only sizes whose next-gen file exists are now listed.<\/li>\n<li>Fixed: tidier image markup \u2014 no attributes added after a self-closing slash, and no duplicate decoding\/fetchpriority attributes.<\/li>\n<li>New: Google Fonts optimization (Fonts module). Page builders such as Elementor load every Google Font family as a separate request, each with every weight from 100 to 900 plus italics. Optimazz now merges them into a single request and loads only the weights and styles your pages actually use (weights 400 and 700 are always kept). On a typical Elementor site this turns three render-blocking requests into one and cuts the font CSS by more than half (measured: 170 KB down to 64 KB). Both options are on by default and can be switched off in the Fonts settings; requests that subset by text are never changed.<\/li>\n<li>Improved: the build tooling (<code>package.json<\/code>) ships with the plugin again, so the admin interface can be rebuilt from the included source as described under \"Build process and source code\".<\/li>\n<li>Fixed: with the CDN module on, CSS minify\/combine, WebP delivery and missing-image-dimension fixes were silently skipped, because the CDN rewrite ran before the other optimizations and they could no longer recognise your own files. The CDN rewrite now runs last, on the finished page.<\/li>\n<li>Improved: when the update safety check switches Safe Mode on to protect a site, it now keeps re-checking and switches Safe Mode back off by itself as soon as pages load correctly again, restoring full optimization (CSS combine, async CSS and JavaScript delay). Previously Safe Mode stayed on until someone turned it off manually, so a site could quietly run slower for a long time after a temporary problem. If pages break again within a day of being restored, Safe Mode stays on and the admin decides. Safe Mode that you switch on yourself is never changed automatically.<\/li>\n<li>Fixed: the update safety check now also recognises stylesheets served from your CDN hostname (when the CDN module is on), so a page that loads unstyled through the CDN is detected instead of being reported as healthy.<\/li>\n<li>Fixed: the \"Optimazz Safe Mode is on\" notice no longer lingers after Safe Mode was switched off via Undo last change, Reset or Import.<\/li>\n<li>Fixed: uninstalling Optimazz now removes all of its data, including the version marker, the safety-check state and its scheduled check, and the cached font-weight data.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Fixed: on some hosts (certain LiteSpeed\/WAF setups and managed hosts) pages loaded unstyled because the server does not serve \u2014 or routinely deletes \u2014 files under <code>wp-content\/cache\/<\/code>, which is where Optimazz kept its generated CSS. Since the page HTML references those files by name, a page that could not load them rendered without styling. Optimazz now stores generated CSS under <code>wp-content\/uploads\/optimazz\/<\/code> instead \u2014 the standard, always-served, persistent location page builders also use \u2014 so the stylesheets load reliably and are never wiped out from under a cached page. On update the page cache is refreshed automatically so pages pick up the new location with no manual step.<\/li>\n<li>New: update safety guard. Shortly after the plugin updates, Optimazz quietly checks its own front page to confirm the optimized CSS actually loads. If it finds pages rendering unstyled \u2014 their generated stylesheets returning 404, usually because an external server or CDN cache is still serving old pages \u2014 it automatically switches on Safe Mode to keep the site working (pausing the risky CSS\/JS transforms without changing your saved settings, so pages fall back to their original stylesheets) and shows an admin notice explaining what happened. After you clear your server\/CDN cache and switch Safe Mode off from Tools, Optimazz re-checks and re-protects the site if anything is still broken \u2014 so an update can no longer leave a site visibly broken.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Fixed: after updating, a site whose page cache was already populated could keep serving pages that loaded unstyled, until the cache was purged by hand. A plugin update never clears the page cache, so any HTML cached by an earlier version \u2014 still pointing at combined CSS\/JS files that an older purge had removed \u2014 stayed in place and rendered without styling. Optimazz now clears the page cache automatically once, the first time it runs after an update, and re-aligns its caching drop-in; the generated CSS\/JS assets are kept, so pages come back fully styled on the next visit with no manual purge needed. This completes the 1.0.20 fix for existing installs.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Fixed: pages could intermittently load completely unstyled when CSS minify\/combine was on together with page caching (or a server-level cache such as LiteSpeed). Optimazz names each generated CSS\/JS file by a content hash and embeds those filenames in the cached HTML \u2014 but purging the page cache also deleted those generated files, so any HTML still held in a cache (Optimazz's own, a CDN's, or the server's) pointed at stylesheets that had been removed, returning 404 and rendering the page without styling until they regenerated. Purging the page cache now preserves the hashed CSS\/JS assets (they are self-invalidating \u2014 a source change produces a new filename), keeping the HTML and its stylesheets consistent.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Fixed: page caching could silently stop working after a plugin update or a manual re-upload, making the whole site slow (every request fell back to full PHP). The advanced-cache.php drop-in embeds the path to the cache engine, and if the plugin folder was moved or recreated by the update, that path went stale \u2014 but Optimazz still recognised the drop-in as its own and never repaired it. Optimazz now detects a stale drop-in and rewrites it with the correct path automatically, and the drop-in itself falls back to the standard plugin location so caching keeps working immediately. If you were affected, the cache heals itself on the first page view after updating.<\/li>\n<li>Improved: the per-request cache readiness check no longer spins up the WordPress filesystem API just to read its own drop-in, removing needless overhead on every uncached request.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>New: <strong>Safe Mode<\/strong> (Tools screen). If a theme or page builder looks broken after you enable optimization, one toggle pauses just the riskiest transforms \u2014 combine CSS, async CSS, remove-block-CSS and JavaScript delay \u2014 while keeping page cache, minify, defer and lazy-load running. It changes nothing in your saved settings; those optimizations simply pause until you switch Safe Mode off, so recovery is instant and reversible. Filterable via <code>optimazz_safe_mode<\/code> so a host can force it on during an incident.<\/li>\n<li>New: <strong>Undo last change<\/strong> (Tools screen). Optimazz now keeps a one-step backup of your settings taken before every save, reset or Safe Mode toggle, so a single click restores the previous state \u2014 and undo is itself reversible (press it again to redo).<\/li>\n<\/ul>\n\n<h4>Older versions<\/h4>\n\n<p>The complete history (1.0.0 onward) is in <a href=\"https:\/\/plugins.svn.wordpress.org\/optimazz\/trunk\/changelog.txt\">changelog.txt<\/a>, included with the plugin.<\/p>","raw_excerpt":"Website optimization and speedup \u2014 page caching, JavaScript delay\/defer, CSS optimization, lazy-load, WebP, font and database optimization.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/335656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=335656"}],"author":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shiponkarmakar"}],"wp:attachment":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=335656"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=335656"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=335656"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=335656"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=335656"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=335656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}