Put WordPress on a diet.
Out of the box, WordPress loads scripts and services most sites never use, and it rebuilds every page from scratch for every visitor. DietPress applies proven performance optimizations the moment you activate it, caches your pages on disk when you want it to, and lets you switch off everything else, organized by risk level so you always know what's safe to remove.
The Scale built into your dashboard
Bloat level: weighing…
Dropped today: emojis jQuery Migrate Dashicons shortlinks oEmbed
Things you can switch off with one click
A page cache, in a free plugin
DietPress stores a copy of each page on disk and hands it to anonymous visitors without building it again. With the accelerator on, your own server can hand out that copy by itself, without starting PHP or WordPress at all. It is usually the single biggest speed gain a WordPress site can get, and it is what people normally buy WP Rocket, FlyingPress or a NitroPack subscription for.
| Page | Off | PHP | Accelerator | Faster |
|---|---|---|---|---|
| Home page | 112.3 ms | 13.7 ms | 3.0 ms | 97.3% |
| A blog post | 105.5 ms | 14.9 ms | 3.0 ms | 97.2% |
| WooCommerce shop | 117.2 ms | 14.9 ms | 3.8 ms | 96.8% |
The percentage is not the interesting part. What matters is that the cached figures barely move, because serving a stored file costs the same whether the page was cheap or expensive to build, so the saving grows with the size of your site rather than with the power of your server. The accelerator also removes the start of WordPress itself, which is most of what a page served from the cache by PHP still costs. In the same test the home page went from about 17 visits a second without any cache to 159 with the page cache and 732 with the accelerator, more than 40 times as many, on exactly the same server.
Median of fifteen requests per URL on a local WordPress 7.1 install with Astra, WooCommerce and 29 active plugins, on PHP 8.5 and Apache; the visits per second come from 300 requests with ten in flight at a time. The only things that changed between the three columns were the page cache and accelerator switches. Your own hosting will give different figures, but the shape of the result will not change. A local install has no network latency, so in production the saving is usually larger rather than smaller, and none of this says anything about your Lighthouse score, which measures what the browser does after the page arrives.
Served by your server, not by PHP
With the accelerator on, Apache, LiteSpeed or nginx hand out the stored copy by themselves, without starting PHP or WordPress at all. It only stays on once a real test on your home page confirms it is actually working, and each stored copy still expires right on time.
No drop-in, no wp-config.php
It installs no advanced-cache.php and never writes a line to your wp-config.php. Switch it off and your install is exactly as it was, with nothing orphaned behind it.
WooCommerce-safe by design
Cart, checkout and my account are never cached, and neither is a visitor carrying a cart cookie, one who has unlocked a password-protected post, or one with a comment awaiting moderation. WooCommerce marks those pages itself and DietPress obeys the mark instead of guessing from the URL.
It tells you what it is doing
The Cache tab counts the stored pages and the disk they take, says when the cleanup last ran, and has a button that asks your site for its own home page as an anonymous visitor would, then reports whether it was served from disk, rebuilt or skipped.
It refuses to fight another cache
With W3 Total Cache, WP Super Cache, LiteSpeed, WP Fastest Cache, SiteGround Speed Optimizer or about thirty similar plugins active, the toggle stays disabled and names the one in the way. On hosting that already caches pages it explains the risk and asks for confirmation, and on LiteSpeed servers it points you at LiteSpeed Cache instead. If another plugin puts its own advanced-cache.php in charge later on, the engine stops at once and the Cache tab names who took over.
Purging you don't have to think about
Publishing, editing, deleting or renaming a post purges it along with the front page, the blog page, its archives and its author page, and a renamed slug also purges the old address. A new theme, menu, permalink structure or plugin update empties the whole cache.
Your WordPress is carrying weight it doesn't need
Every default install ships with features designed for every possible site, which means yours is loading things it will never use.
Bloat by default
Emoji scripts, embeds, jQuery Migrate, dashboard widgets, RSD links… WordPress loads them on every visit whether you use them or not. Most sites never do.
Slow costs you visitors
Every extra request and kilobyte delays your LCP. Slow pages rank worse in Google, convert worse and burn hosting resources you're paying for.
Optimization got complicated
Most performance plugins hide the good parts behind a subscription, or hand you fifty switches with no explanation of what might break.
Performance on. Bloat off.
One half speeds your site up the moment you activate it. The other half is a set of switches to slim WordPress down, and it waits for you. Use one, the other, or both.
Performance optimizations
Activate the plugin and they're already working. Zero configuration, unless you want to fine-tune every detail.
- Page cache: each page stored on disk and served to anonymous visitors, with an accelerator that lets the server serve it without starting PHP (opt-in)
- Automatic critical CSS inlined in the header
- Deferred JavaScript with smart dependency handling
- Image loading safety net: lazy loading, decoding and fetchpriority
- Automatic image dimensions for better CLS, picture elements included
- Preconnect and DNS prefetch hints for common third parties
- Theme stylesheet, critical fonts and logo preload for faster LCP
- Google Fonts display=swap
- Local Google Fonts hosting, GDPR-friendly (opt-in)
- RSS feed cache headers and per-item limit
- Browser caching with its own lifetime for media, styles and scripts and fonts, and no rule imposed on your HTML
- GZIP and Brotli compression written to .htaccess, CORS for fonts and immutable headers for styles, scripts and fonts
- Daily database cleanup of expired transients and safe query optimizations
Install, activate, done. The page cache, the local Google Fonts and the selective loading are the ones that wait for you to switch them on.
The WordPress diet
Dozens of switches to turn off what you don't use, each with a plain-language note on what it does and what could break.
- Three diet levels (Light, Moderate, Strict), plus Widgets, Emails and Cache tabs
- Safe wins at zero risk: emojis, RSD and WLW tags, shortlinks, self-pingbacks, comment pagination
- Deeper cuts: heartbeat, revisions, autosave, XML sitemap, RSS feeds
- Selective loading: eight modules make each plugin's assets load only where they are used
- Widget cleanup for dashboard, block editor, sidebar and third-party plugins
- Email control: update notices, comment moderation, account notifications
- Nothing changes until you flip a switch yourself
- Every option describes its risk before you touch it
- Flip it back and WordPress returns to default behavior
- Quick profiles apply a sensible set for your kind of site
- The site analyzer recommends switches based on your active plugins and content
You stay in control. DietPress tells you the risk, you make the call.
Everything the performance half does
Years of testing on real sites, every piece of it configurable, and a page cache of its own.
Page cache
Stores the finished HTML of each page on disk and serves it to anonymous visitors, with a gzip copy for browsers that ask for one and a scheduled cleanup of what has expired. Off by default, in its own tab.
Page cache accelerator
Lets Apache, LiteSpeed or nginx hand out a cached page by themselves, without starting PHP or WordPress at all. Only stays on once a real test on your home page confirms it is actually working, and switches itself off, with the reason on screen, the moment that stops being true.
Cache status and self-test
How many pages are stored and how much disk they take, when the cleanup last ran and when it runs next, and a button that requests your own home page as an anonymous visitor to confirm it is really being served from disk or straight from the server.
Automatic purging
Publishing, editing or renaming a post clears it and everything that lists it, comments clear their post, and a change of theme, menu, widget, permalink or plugin clears the lot. Plus a purge button and a dietpress_purge_page_cache() function.
Critical CSS
Automatic critical CSS inlined in the header for instant first paint, with an optional experimental mode that defers non-critical stylesheets.
Deferred JavaScript
Defers script loading with smart dependency handling, so render isn't blocked and nothing loads out of order.
Image loading safety net
Adds lazy loading, decoding=async, fetchpriority and missing width and height attributes (picture elements included) to images that slip past WordPress defaults, for better LCP and CLS.
Resource hints & preloads
Preconnect and DNS prefetch for common third-party origins, plus preload for your theme stylesheet, critical fonts and logo.
Browser caching & compression
A lifetime of your choosing for media, for styles and scripts, for fonts and for the HTML itself, an ETag switch, and GZIP, Brotli, CORS for fonts and immutable headers for styles, scripts and fonts. Two master switches, one for each half.
Selective third-party loading
Stops loading WooCommerce assets outside the store, Contact Form 7 assets on pages without forms and block library CSS on block-free pages. Formidable Forms and Everest Forms work the same way, while Slider Revolution, TablePress and Smash Balloon get the conditional loading each one already ships with switched on instead, so nothing can end up unstyled.
Database maintenance
Daily cleanup of expired transients and safe query optimizations that keep your database lean without risky deletions.
Fonts & feeds tuning
Google Fonts load with display=swap or straight from your own server with the local hosting option, GDPR-friendly, and RSS feeds get cache headers and a per-item limit.
Developer filters
More than twenty dietpress_* hooks to customize critical CSS, skip scripts from deferral, exclude fonts from local hosting, fine-tune selective loading and keep any page out of the cache.
Choose how strict your diet gets
Every switch is color-coded by risk, so the question is never «what does this do?» but «how far do I want to go?». The Cache tab sits next to these five with the page cache and the browser caching rules.
Safe for any site
The easy wins. Nothing here should change how your site looks or works.
Evaluate first
Fine for most sites, as long as you check the feature isn't in use before switching it off.
Site-specific
Serious cuts for sites that know exactly what they need and what they don't.
Clean the clutter
Dashboard and editor widgets you never look at, third-party ones included.
Silence the inbox
Control every automatic email WordPress sends your way. Nothing is disabled by default — enable only what you want to mute.
Weigh in whenever you want
A control center that shows what the diet is saving you and helps you decide the next step.
Savings gauge
HTTP requests removed, CSS and JS saved, and active optimizations, all at a glance, with the page cache status right beside them.
Quick profiles
Personal blog, WooCommerce store, landing page or maximum cleanup. One click applies a sensible preset you can adjust later, cache lifetime included: six hours for a store, twelve for the rest.
Site analyzer
Looks at your active plugins and your content, then recommends which switches make sense for your site, the cache engine, its gzip copy and the browser caching rules included.
Import & export
Move your whole configuration between sites as a JSON file. Handy if you maintain more than one WordPress.
Plays well with the rest of your stack
Everything DietPress does apart from its own page cache works alongside a cache plugin or a CDN, exactly as it always has. The page cache is the one exception, and it steps aside on its own when another one is already running. Want the detail? There is a full comparison against the nine best known rivals.
Multisite is supported everywhere except the page cache, which does not handle it yet and says so instead of misbehaving. Security toggles are left out on purpose: they belong in a security plugin. We recommend our free Vigilant.
Common questions
What does a page cache actually do, and do I need one?
Every time somebody visits your site, WordPress queries the database, runs your plugins, builds the page from your theme and sends it. For a visitor who is not logged in the result is the same every time until you change something, so doing all of that again is wasted work. A page cache does it once and stores the finished HTML on disk, and the next visitor gets that file. You need one unless your hosting already provides it, and DietPress detects the usual managed hosts and tells you when that is the case.
Can I use it with my other cache plugin, or with my hosting cache?
With another page cache plugin, no, and DietPress will not let you: two page caches on the same site serve each other's stale HTML and the result is very hard to diagnose. If W3 Total Cache, WP Super Cache, LiteSpeed Cache, WP Fastest Cache, Cache Enabler, Surge, WP Rocket, SiteGround Speed Optimizer or any of about thirty similar plugins is active, the toggle stays disabled and names the one in the way. With a hosting cache (Kinsta, WP Engine, SiteGround, SpinupWP, Cloudways and others) it is possible but rarely a good idea, because purging one does not purge the other, so DietPress asks for an explicit confirmation first. If your hosting cache is one DietPress recognises, the browser caching options also warn you when the HTML lifetime you pick would stop it from storing your pages. On LiteSpeed servers we recommend LiteSpeed Cache instead, since caching at server level is faster than anything PHP can do. Object cache plugins such as Redis Object Cache are a different thing and are fine.
What is the accelerator, and should I turn it on?
The page cache normally serves its copy from PHP, once WordPress has loaded its plugins. That skips the database and the theme, but not the start of WordPress itself, and on a site with many plugins that start is most of what a cached page still costs. The accelerator removes that too: on Apache and LiteSpeed the server hands out the stored copy by itself, without starting PHP or WordPress at all, and on nginx you get the same rules to paste into your server configuration. It only stays on once a real test on your home page confirms the server is serving it correctly; if it isn't, the rules come out again and the Cache tab says why.
Does the accelerator bypass my security plugin?
Partly, and it's worth knowing how. The server answers before any PHP runs, so whatever a security plugin does in PHP (blocking an IP address, rate limiting, a bot filter) never sees those visits. The rules a security plugin writes to your .htaccess still apply, so a bot blocked there still gets its 403. If your site depends on the PHP side of a security plugin for anonymous visitors, leave the accelerator off; the page cache alone still answers earlier than most security plugins run their checks.
Is my WooCommerce store safe with the cache on?
Yes. WooCommerce marks the cart, the checkout and my account as uncacheable itself, and DietPress obeys that mark rather than guessing from the URL, so it keeps working if you move or rename those pages. On top of that, any visitor carrying a cart or session cookie is served the live site everywhere, so a mini cart in the header never shows somebody else's basket, and a store in coming soon mode is not cached at all. Logged in users are never cached either, and there is no option to change that.
Why is a page of mine not being cached?
Open the Cache tab and press «Test the cache now»: the site asks itself for its own home page and tells you whether it was served from disk, rebuilt or skipped. For one particular page, turn WP_DEBUG on and read the last line of its HTML source, where DietPress writes the exact reason. The three usual causes are a plugin that sets a cookie on every visit (a consent banner, some analytics scripts), a page that is genuinely personal, and a cache directory the server cannot write to, which the status panel reports on its own.
How were those speed figures measured, and can I repeat them?
On a local WordPress 7.0 install with GeneratePress, WooCommerce and a 76 product catalogue, on PHP 8.5. Each URL was requested twice to warm up and then fifteen times, and the median is what we publish; the throughput figure is 100 requests with ten in flight at a time. The only thing that changed between the two columns was the page cache switch. You can repeat it with any tool that reports time to first byte, for example curl -o /dev/null -w "%{time_starttransfer}\n" https://yoursite.com/ a dozen times with the cache off and a dozen with it on, comparing medians rather than single readings, and doing it while logged out because your own visits are never cached.
Is it really zero configuration?
If that's what you want, yes. The performance optimizations are on by default, so activating the plugin is enough. The settings page exists for when you want to fine-tune them or start the diet, which is entirely opt-in.
Will it break my site?
The performance optimizations are designed to be safe and have been tested across many sites for years. The diet switches only act when you turn them on, and each one describes what could be affected. If something looks off, flip the switch back and WordPress returns to its default behavior.
Where are the security options?
Left out on purpose. Security belongs in a security plugin, where those protections are properly implemented and maintained. We recommend our free Vigilant. If you migrate with any security toggle active, DietPress shows a one-time notice listing them.
And the rest of the plugin, does it still work next to a cache plugin?
Yes. Critical CSS, the JavaScript defer, the image attributes, local fonts, selective loading and every diet switch work alongside WP Rocket, LiteSpeed Cache, W3 Total Cache and the rest, exactly as they always have, and DietPress sends CORS and Vary headers for full CDN compatibility. Only its own page cache steps aside.
How does the Google Fonts local hosting work?
When you enable it (Light tab, Performance section), DietPress detects the Google Fonts stylesheets your theme loads, downloads them once to your uploads folder and serves everything from your own server, so visitors no longer connect to Google, which is faster and GDPR-friendly. If any download fails, fonts silently keep loading from the Google CDN. Local copies refresh when you switch themes and disappear when you turn the option off.
Selective loading removed something my site needs
Each module only removes assets where its target content isn't detected, but unusual setups exist: a hand-coded mini-cart, a form injected via AJAX, a classic theme reusing block styles everywhere. Turn that specific toggle off, or use the dietpress_selective_* escape filters to keep exactly what your site needs.
Something went wrong after activating it
If a theme or plugin doesn't enqueue its scripts properly, deferring JavaScript can affect it. Turn that option off or use the dietpress_skip_defer_script_handles filter. If you get a 500 error, remove the block starting with # BEGIN DietPress from your .htaccess or disable the server rules option.
Can I customize it as a developer?
Yes. There are more than twenty dietpress_* filters, plus the page cache ones (dietpress_cache_bypass, dietpress_cache_exclude_urls and three more), the dietpress_cache_purge_all action and the dietpress_purge_page_cache() function. The main ones: dietpress_critical_css, dietpress_critical_css_handles, dietpress_skip_defer_script_handles, dietpress_skip_defer_style_handles, dietpress_preconnect_hints, dietpress_dns_prefetch_domains and dietpress_critical_fonts, plus specific hooks for local font hosting (dietpress_exclude_local_fonts) and selective loading (dietpress_selective_*). The old ayudawp_wpotweaks_* filters still work through a compatibility bridge.
How do I verify it's working?
For the cache, look at the X-DietPress-Cache header in your browser's network tab, or at the footprint comment at the end of a stored page. For the rest, check your .htaccess for the # BEGIN DietPress block, view your page source and look for the core-diet-critical-css style and the logo preload, and test compression at giftofspeed.com/gzip-test. Then measure with PageSpeed, GTmetrix or WebPageTest, running each test at least twice to account for caching.
Created by Fernando Tellado
DietPress is a project by Ayuda WordPress, the largest Spanish-speaking WordPress community, created by Fernando Tellado, who has been helping WordPress users for over 20 years with tutorials, guides and plugins.
We build tools that solve real problems. No gimmicks, no unnecessary subscriptions, no data collection. Plugins that work. Period.
Need professional help with your WordPress? Our team offers maintenance services so you can focus on what matters.
Part of a WordPress family
DietPress works on its own, but these free plugins by the same author fit right in. Each one owns its job, so nothing overlaps or duplicates work.
All-in-one WordPress security: firewall, two-factor authentication, security headers and file integrity, without the bloat of the big suites.
vigilante.works →Monitor, analyze and control the AI crawlers hitting your site. Detects 55+ bots, scores your AI visibility and lets you block whichever you want.
vigia.dev →Native SEO, AEO and GEO for the WordPress core. Clean metadata and schema that feed search engines and AI without a heavy plugin.
visibility.quest →Translate your content with AI without breaking blocks, images, SEO or taxonomies, and import and translate posts from other sites too.
vulgatai.com →AI-written product sheets for WooCommerce, built from your own catalog data instead of invented specs, with anti-duplicate checks built in.
intellimmerce.com →Share buttons for social networks and AI assistants, each one with a citation back to your site.
View on WordPress.org →Declare how AI systems may use your content through a physical robots.txt with AI signals.
View on WordPress.org →AyudaWP resources and services
Tutorials and guides
Thousands of free articles about WordPress, plugins, themes and optimization.
YouTube channel
Practical videos to learn WordPress step by step, no fluff.
Professional services
Development, optimization, security and WordPress troubleshooting.
WordPress maintenance
We take care of your site so you can focus on your business.
Start the diet today
Install DietPress in under a minute, switch the cache on and measure. It's free, needs no account, and everything stays on your server.