If you’ve ever opened your hosting dashboard or Cloudflare analytics and noticed admin-ajax.php consuming extremely high CPU or bandwidth, you’re not alone. Thousands of WordPress site owners face the same issue — slow backend, slow frontend, random spikes in server load, and unusually high background requests.
In 2025, the problem has become even more common due to bloated themes, heavy plugins, and increasing reliance on AJAX-driven features like live search, cart fragments, analytics beacons, and page builders.
But the good news?
You can fix it — completely.
This guide breaks down:
-
What admin-ajax actually does
-
Why your WordPress site is overusing it
-
How to identify the real cause
-
Proven methods to fix high admin-ajax usage
-
Codes and snippets to stop unnecessary AJAX calls
-
Best plugins and settings to reduce server load
-
Practical improvements for WooCommerce, caching, CRON, and more
Let’s dive in.
What Is admin-ajax.php and Why Does It Matter?
admin-ajax.php is a WordPress core file responsible for handling AJAX requests — even on the frontend. It processes tasks like:
-
Live search
-
Cart updates
-
Heartbeat API
-
Forms
-
Theme settings
-
Page builder updates
-
Background operations
-
Real-time content loading
Because so many plugins depend on it, this file often becomes:
-
Overloaded
-
Slow
-
A top source of server usage
-
A reason for 503/504 errors
-
A performance bottleneck
-
A threat to Core Web Vitals
If your hosting reports something like:
…then it’s time to fix it.
Why Does admin-ajax.php Use So Much CPU? (Top Causes)
Below are the most common reasons you’ll see unusual spikes in admin-ajax usage.
1. WooCommerce Cart Fragments
The AJAX endpoint:
is known for causing:
-
High CPU usage
-
Slow Time to First Byte (TTFB)
-
Frontend lag
Especially on sites with lots of products or traffic.
2. Heartbeat API Overuse
The WordPress Heartbeat makes AJAX calls to:
-
Auto-save posts
-
Sync real-time data
-
Show “user is editing this post”
-
Keep admin logged in
But by default, it fires requests every 15 seconds, which is too much.
3. Bloated Plugins
Plugins that commonly abuse admin-ajax:
-
Live search plugins
-
Real-time analytics plugins
-
Page builders
-
Popup builders
-
Contact form plugins
-
Security scanners
-
Slow social share plugins
4. Themes Running Background AJAX
Many modern themes fetch dynamic content every few seconds:
-
Live notifications
-
Changing cart icons
-
Updating header menu data
-
Loading content without caching
5. CRON Jobs Triggered via admin-ajax
If WP-Cron cannot run normally on your server, it fallback runs via admin-ajax — causing overload.
6. Bots Spamming AJAX Endpoints
This is extremely common.
Bots target:
…in thousands of requests per minute.
How to Diagnose High admin-ajax Usage
Before fixing anything, you must find the actual culprit.
Here’s the step-by-step method.
1. Check admin-ajax Usage in Hosting Panel
If you use:
-
cPanel
-
Plesk
-
Cloudways
-
Kinsta
-
SiteGround
-
DigitalOcean
Go to:
Statistics → Resource Usage → Top URLs
Look for:
This will show you the exact plugin causing spikes.
2. Enable Query Monitor Plugin
Install:
Query Monitor → Ajax
You’ll immediately see:
-
Which actions run
-
Which plugin triggered them
-
How long they take
3. Use Developer Tools → Network Tab
Open Chrome DevTools
Go to → Network
Filter → XHR
Reload page.
Check repeated calls like:
-
admin-ajax.php?action=xyz -
?wc-ajax=get_refreshed_fragments
4. Cloudflare Analytics
Go to:
Analytics → URL Requests
You will often see:
If yes → bots or plugins are hammering AJAX.
How to Fix High admin-ajax Usage in WordPress (Complete Solutions)
Below are the guaranteed methods to fix admin-ajax overload and boost performance.
Use as many as needed.
1. Disable or Limit WordPress Heartbeat (Biggest Fix)
Heartbeat causes AJAX hits every 15 seconds — nonstop.
Use this snippet to reduce it to 60 seconds:
Or disable it completely (not recommended for editors):
If you want easier control, use:
-
Heartbeat Control plugin
-
Perfmatters plugin
2. Fix WooCommerce Cart Fragments (Major CPU Hog)
This is one of the biggest causes.
To disable WooCommerce fragments:
Most modern themes don’t need cart fragments anymore.
If your cart still must update dynamically, cache it instead.
Install:
Disable Cart Fragments plugin.
Or use Perfmatters → WooCommerce → Disable Cart Fragments.
3. Disable AJAX Calls from Plugins (The Safe Way)
Find the plugin causing AJAX abuse using Query Monitor.
Then disable that specific action:
Replace plugin_action with the exact action name from Query Monitor.
4. Move Repetitive AJAX Tasks to REST API (Advanced Improvement)
AJAX loads WordPress core, meaning more CPU.
The REST API is lighter.
If you develop custom features, replace:
with:
This single improvement can reduce CPU usage by 50–70%.
5. Protect admin-ajax.php From Bots (Critical Step)
Bots love hitting this file.
Use Cloudflare firewall:
Rule:
If URI contains /wp-admin/admin-ajax.php
And User-Agent is empty or suspicious
→ Block
Or block rate-limits:
6. Disable WP-Cron Running via admin-ajax
Add this to wp-config.php:
Then create server cron job:
This alone can reduce AJAX hits by 30%.
7. Caching Plugins Fix 70% of admin-ajax Load
Use any of these:
-
LiteSpeed Cache (best)
-
WP Rocket
-
FlyingPress
-
Hummingbird
Enable:
✔ Cache
✔ CDN
✔ Browser cache
✔ Object cache
✔ Minify JS/CSS
Admin-AJAX cannot be fully cached, but its triggers can be.
8. Fix Live Search Plugins (Huge Culprit)
Replace these plugins:
-
Ajax Search Lite
-
Relevanssi Live Search
-
Theme AJAX search
With:
-
FiboSearch Lite
-
WP Fastest Site Search (Algolia)
-
ElasticPress
Idea:
Let search run via API, not via admin-ajax.
9. Optimize Forms (Contact Form 7 Is Heavy)
Contact Form 7 fires AJAX unnecessarily.
Replace with:
-
Fluent Forms
-
WPForms
-
Gravity Forms
Or disable CF7 scripts on pages where it’s not used:
10. Disable Live Notifications from Themes
Many themes send AJAX calls every 2–5 seconds.
Disable:
-
Live cart
-
Live wishlist
-
Live notifications
-
Live counters
Always turn off:
-
“Header notification live updates”
-
“Live wishlist counter updates”
These effects kill performance.
11. Fix Page Builders Causing AJAX Overload
Elementor, Divi, and WPBakery all generate admin-ajax activity.
Steps:
-
Disable Elementor Finder
-
Disable Elementor heartbeat in editor mode
-
Use “Optimized DOM Output”
-
Remove global widgets if unused
-
Limit template updates
For Divi:
-
Turn off Dynamic CSS unless needed
-
Disable Live updates
12. Block admin-ajax.php With .htaccess (Last-Resort Method)
Do NOT block logged-in admin users.
But you can block public access:
Use carefully.
13. Use Object Caching (Huge Performance Gain)
Install Redis:
On hosting:
Enable → Redis Object Cache
Use plugin:
-
Redis Object Cache (by Till Krüss)
admin-ajax calls become 2–3x faster.
14. Use A CDN + Server-Level Cache
Cloudflare APO
LiteSpeed Enterprise
Nginx FastCGI Cache
These catch:
-
JS
-
CSS
-
Images
-
Static assets
Which reduces AJAX-triggering scripts.
15. Switch to a Better Host (If All Else Fails)
If admin-ajax.php is killing your shared hosting, move to:
-
Cloudways
-
Vultr HF
-
SiteGround Cloud
-
WPX Hosting
-
Rocket.net
Admin-AJAX demands CPU.
Cheap hosting ≠ enough resources.
Final Thoughts: High admin-ajax Usage Is Fixable
Most WordPress sites have 5–10 plugins overusing AJAX without you knowing.
But once you identify the real cause and apply the fixes above — your site becomes:
✔ Faster
✔ More stable
✔ Better on Core Web Vitals
✔ Lower CPU usage
✔ Cheaper to host
✔ SEO-friendly
Take your time, implement each fix carefully, and watch your website performance improve dramatically.
FAQs – Fixing High admin-ajax Usage in WordPress
1. Is admin-ajax supposed to be slow?
Yes — because it loads all of WordPress on every request. That’s why excessive usage kills performance.
2. Should I delete admin-ajax.php?
No. It’s a core file.
But you can limit or block public access if safe.
3. What is the best plugin to control admin-ajax?
-
Perfmatters
-
Heartbeat Control
-
LiteSpeed Cache
-
Query Monitor
These provide the best optimisation.
4. How do I know which plugin is abusing admin-ajax?
Install Query Monitor → Ajax tab.
You will instantly see the culprit.
5. Does disabling Heartbeat break anything?
It disables:
-
Auto-save
-
Post locking
-
Real-time editor features
Best practice: reduce heartbeat, don’t fully disable it.
6. Is WooCommerce the biggest cause of admin-ajax usage?
Yes. Cart fragments alone can generate 20,000+ AJAX requests per hour.
7. Can I block bots hitting admin-ajax?
Yes — using Cloudflare Firewall or hosting ModSecurity.
8. Will fixing admin-ajax improve SEO?
Absolutely.
Lower TTFB and faster pages = better rankings.