A comprehensive WordPress performance optimisation plugin with granular controls across eight dedicated tabs — covering core features, JavaScript, CSS, fonts, lazy loading, preloading, database cleanup, WebP image conversion, and automatic image sizing. Completely free, no upsells, no premium tiers.
Download Latest Release · Report a Bug · Request a Feature
MBR WP Performance gives you fine-grained control over every aspect of your site's speed. Rather than hiding everything behind presets, each optimisation is individually toggled with clear explanations of what it does and why you'd want it.
The dark-mode admin UI is accessed from the WordPress toolbar — no sidebar clutter. Settings are organised across eight tabs, each focused on a specific performance area.
Disable unnecessary WordPress defaults that slow your site down: emojis, embeds, dashicons, jQuery Migrate, XML-RPC, RSS feeds, self-pingbacks, REST API links, oEmbeds, and more. Control the Heartbeat API frequency, limit post revisions, adjust autosave intervals, and remove query strings for better caching. Includes WooCommerce script optimisation for shops that don't need cart/checkout assets on every page.
Defer or async JavaScript loading, move scripts to the footer, and optionally remove jQuery entirely. Minify and combine JS files, delay execution of third-party scripts (analytics, chat widgets) until user interaction, and strip version query strings. Exclusion lists let you protect scripts that need to load normally.
Inline critical CSS with an auto-generator, load remaining stylesheets asynchronously, and minify/combine CSS files. The built-in CSS scanner identifies unused styles across your homepage. Remove global styles, load block styles conditionally, disable Elementor's Google Fonts output, and strip WooCommerce CSS from non-shop pages.
Self-host Google Fonts with automatic download and local serving — no more render-blocking requests to googleapis.com and gstatic.com. Preload critical fonts, manage manual font files, enable font subsetting for smaller payloads, and control font-display strategies (swap, block, fallback, optional). Optimise or completely disable Font Awesome. Includes a clear font cache button for when you change your font stack.
Native lazy loading for images with configurable viewport thresholds. Lazy load iFrames and embedded videos from YouTube, Vimeo, and other providers. Exclude specific images by CSS selector, class name, ID, data attribute, keyword, or parent container. DOM monitoring catches dynamically added images from carousels, infinite scroll, and AJAX content. Optional fade-in animation and automatic addition of missing image dimensions to prevent layout shift.
Preload critical images including LCP and hero images. Cloudflare Early Hints (HTTP 103) support for edge-level preloading. Fetch Priority optimisation with automatic high priority for the first image, custom selectors for additional critical images, and the option to disable WordPress core's fetch priority. Speculative Loading prefetches or prerenders the next page in the background with configurable eagerness levels (conservative, moderate, eager, auto).
Clean up post revisions with configurable retention limits. Auto-delete old drafts, empty trash, and remove spam/unapproved comments on schedule. Scan for and remove orphaned metadata across posts, comments, terms, and taxonomy relationships. Full transient management with stats, expired cleanup, and nuclear option. Optimise database tables, convert MyISAM to InnoDB, and repair corrupted tables. Schedule automatic maintenance runs.
Convert JPG, JPEG, and PNG images to WebP format with configurable compression (1–100). Automatic conversion on upload, plus a bulk converter for your existing Media Library. Images are served via HTML <picture> tags with automatic browser fallback, with Gutenberg block and Elementor widget integration built in. Optional Apache/LiteSpeed .htaccess rewrite rules for transparent server-level delivery. Server diagnostics panel checks GD library, WebP support, and folder permissions before you start. Smart skip when WebP output would be larger than the original. Full conversion history with bulk management, and a "Revert All" button that deletes every plugin-created WebP file while leaving originals untouched.
Directly targets two of the most common Google PageSpeed Insights warnings: "Properly size images" and "Ensure images have explicit width and height." Resize large uploads automatically to a configurable maximum dimension (default 2560px) using the WordPress core scaling pipeline, preserving aspect ratio. Inject missing width and height attributes into front-end images on the fly, giving browsers the aspect ratio up front to eliminate Cumulative Layout Shift (CLS). Works across post content, Gutenberg blocks, Elementor widgets, attachment images, and post thumbnails, with per-URL dimension caching to keep the filter cheap. External images, SVGs, and data URIs are skipped automatically — only local files are measured. A bulk resize tool scans your existing Media Library for oversized images and downscales them in place, regenerating all sub-sizes and cleaning up any stale WebP copies in the same pass. Scan first to see what would change, then start the resize with a live progress bar and log.
Full WordPress Multisite compatibility from v1.5.0 onwards. Network-activate the plugin and manage default settings from the Network Admin. Push defaults to all sites (or selected sites) in one click, import settings from any existing site, and control whether individual site admins can override the network configuration. New sites automatically inherit network defaults on creation.
- WordPress 5.8 or higher
- PHP 7.4 or higher
- MySQL 5.6 or higher
- GD library with WebP support (for image conversion and resizing)
- Download the latest release
- Go to Plugins → Add New → Upload Plugin
- Upload the zip file and click Install Now
- Activate the plugin
- Click WP Performance in the admin toolbar
- Extract the zip file
- Upload the
mbr-wp-performancefolder to/wp-content/plugins/ - Activate via the Plugins screen
- Access settings from the admin toolbar
wp plugin install mbr-wp-performance.zip --activateAfter activation, click WP Performance in the WordPress admin toolbar. The settings page opens on the Core Features tab.
Recommended first steps:
- Database tab — Run a cleanup to remove accumulated bloat (revisions, spam, orphaned data)
- Lazy Loading tab — Enable native lazy loading for images and iFrames
- Core Features tab — Disable emojis, embeds, and dashicons if you don't need them
- WebP tab — Check the server diagnostics panel, then run the bulk WebP converter
- WebP tab → Image Sizing & Dimensions — Enable "Resize Large Uploads" and "Add Missing Width & Height" for an easy PageSpeed Insights win. If you have historic uploads from back when phone cameras produced huge files, back up and run the Bulk Resize tool.
Enable features one at a time and test your site after each change. The plugin automatically disables all optimisations inside page builder editors (Elementor, Beaver Builder, Divi, Oxygen, Bricks, WPBakery) to prevent conflicts.
Optimisations are automatically bypassed when editing in:
- Elementor (editor and preview modes)
- Beaver Builder
- Divi Builder
- Oxygen Builder
- Bricks Builder
- WPBakery Page Builder
No configuration needed — detection is automatic.
If you were using the standalone MBR WebP Converter plugin, you can deactivate it after upgrading to v1.6.0 or later. Your conversion history and WebP file registry will be migrated automatically the first time the new version loads. All existing WebP files remain in place and continue to be served.
Will this break my site? The plugin is designed to be safe, but always take a backup first, test on staging, and enable features one at a time.
Can I use this with a caching plugin? Yes. This plugin provides complementary optimisations that work alongside any caching solution.
Does it work with WooCommerce? Yes. Dedicated WooCommerce options let you disable cart/checkout scripts and styles on non-shop pages.
What happens to my images if I deactivate? Original images are never modified by the WebP conversion. The "Revert All" button in the WebP tab deletes all plugin-created WebP files. On deactivation, WebP files tracked in the registry are cleaned up automatically. Note that the Bulk Resize tool is destructive — resized files are not restored on deactivation, so always back up before running it.
Does WebP conversion affect my originals?
No. WebP files are created alongside the originals (same folder, same name, .webp extension). The originals are never touched.
Does Resize Large Uploads affect my existing images?
No. The "Resize Large Uploads" setting only applies to newly-uploaded images via the big_image_size_threshold WordPress filter. To downscale existing images, use the Bulk Resize tool in the same section. That tool is destructive and permanently overwrites files on disk — take a full backup before running it.
What's the difference between WebP conversion and Image Sizing? WebP conversion creates a second copy of each image in the more efficient WebP format and serves it to supporting browsers, saving bandwidth without changing dimensions. Image Sizing changes the actual pixel dimensions of images so browsers don't download files that are larger than they need to display. They're complementary — use both for the biggest PageSpeed wins.
- Bulk resize tool for existing Media Library images — scan for JPEGs and PNGs exceeding the configured maximum dimension, then downscale them in place
- Two-phase workflow (Scan → Start Resize) with progress bar, live log, and running savings total
- Automatic sub-size regeneration after each resize using the WordPress core pipeline
- Elementor CSS cache is cleared automatically after a bulk resize so widgets re-render with the new dimensions
- Stale WebP files are deleted automatically before sub-sizes are regenerated, and their entries stripped from the WebP registry
- Skips images already within the configured maximum, writing a clear "skipped" reason to the log
- Paginated scan (batches of 200) to keep memory use reasonable on large libraries
- New "Image Sizing & Dimensions" section in the WebP tab
- Automatic resize-on-upload with configurable maximum dimension (default 2560px, uses the WordPress
big_image_size_thresholdfilter) - Automatic injection of missing
widthandheightattributes on front-end images to reduce Cumulative Layout Shift (CLS) - Works on post content, Gutenberg blocks (image, gallery, media-text, cover), Elementor widgets, attachment images, and post thumbnails
- Per-URL dimension cache (in-memory + weekly transient) to keep the filter cheap on image-heavy pages
- Skips external images, SVGs, and data URIs automatically — only local files are measured
- Transient cache is cleared when settings are re-saved, so replaced files are re-measured
- Integrated WebP image conversion (previously the standalone MBR WebP Converter plugin)
- New "WebP" tab with settings, server diagnostics, and bulk converter
- Automatic WebP conversion on image upload
- Configurable compression level (1–100)
- HTML
<picture>tag delivery with automatic browser fallback - Apache/LiteSpeed
.htaccessrewrite rules for transparent WebP serving - Gutenberg block and Elementor widget integration for
<picture>tags - Conversion history with bulk management and "Revert All" functionality
- Automatic migration of data from standalone MBR WebP Converter plugin
- Smart skip when WebP output would be larger than the original
- Redesigned admin UI with pill-style tab navigation
- Dark mode page background via inline style injection
- Full WordPress Multisite network support
- Network Admin settings page with one-click push to all sites
- Import settings from any site as network defaults
- Per-site override toggle for super admins
- Automatic setup for newly-created network sites
- Comprehensive lazy loading controls
- Preloading and speculative loading options
- Self-host Google Fonts with manual management
- Enhanced Google Fonts blocking
- CSS scanner for unused styles
- Toolbar menu access (moved from sidebar)
- Rebuilt admin JavaScript
- Page builder compatibility (Elementor, Divi, etc.)
- Initial release
Contributions are welcome. If you find a bug or have a feature request, please open an issue.
For code contributions:
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes
- Push to the branch
- Open a Pull Request
- Bug reports: GitHub Issues
- Website: littlewebshack.com
- Author: madebyrobert.co.uk
- Coffee: buymeacoffee.com/robertpalmer
This plugin is licensed under the GPL v2 or later.
100% free. No premium tiers. No upsells. No tracking.