{"id":942,"date":"2026-07-15T22:14:08","date_gmt":"2026-07-15T22:14:08","guid":{"rendered":"https:\/\/www.ahosting.net\/blog\/?p=942"},"modified":"2026-07-15T22:25:40","modified_gmt":"2026-07-15T22:25:40","slug":"how-to-disable-wordpress-heartbeat","status":"publish","type":"post","link":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/","title":{"rendered":"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does disabling the WordPress Heartbeat break autosave or post locking?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Specifically, disabling Heartbeat everywhere removes autosave and post locking, but throttling it to 60 seconds keeps both while cutting requests by about 75 percent. Therefore the recommended pattern is throttle in the editor, disable on the front end. The post shows the exact filter that does both.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the safest way to disable the WordPress Heartbeat in 2026?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Generally, the safest way to disable the WordPress Heartbeat in 2026 is to throttle the interval to 60 seconds and deregister the script only on the front end, leaving the editor untouched. Consequently autosave and post locking keep working while admin-ajax.php load drops sharply.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Heartbeat Control plugin vs the heartbeat_settings filter: which should I use?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"In practice, the heartbeat_settings filter is lighter because it adds no plugin overhead, while the Heartbeat Control plugin is friendlier if you avoid code. Both reach the same result. The comparison table in this guide maps each to the resource cost it removes.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Disable WordPress Heartbeat in functions.php or in a snippet plugin: what is the difference?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Notably, a functions.php edit is theme-bound and disappears on theme switch, whereas a code-snippet plugin survives theme changes and is easier to toggle. Therefore a snippet plugin is the more durable place to disable the WordPress Heartbeat on a production site.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How much server load does the WordPress Heartbeat cause on AHosting shared hosting in 2026?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Concretely, each Heartbeat tick is one uncacheable admin-ajax.php request that consumes one PHP worker for its duration. As a result, fifteen open editor tabs can occupy every worker on an entry-level plan. The plan-by-plan table in this guide shows exactly where that ceiling sits.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why does admin-ajax.php show high CPU even when my WordPress site has no traffic?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Fundamentally, admin-ajax.php runs the Heartbeat API on a timer, so it fires whether or not visitors are on the site. Because that path bypasses page caching, LiteSpeed cannot absorb it. In other words the CPU is spent polling, not serving readers.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does AHosting's LiteSpeed cache stop Heartbeat from consuming PHP workers?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Unfortunately no, because admin-ajax.php is uncacheable by design, so LiteSpeed serves it through PHP like any dynamic request. However, AHosting publishes its per-plan worker counts, so you can size the Heartbeat cost against a known ceiling rather than guessing.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"When should I throttle the WordPress Heartbeat instead of disabling it on a 2026 WooCommerce store?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Typically, throttle rather than disable when a WooCommerce store or membership plugin depends on Heartbeat for cart, stock, or session updates. Accordingly, set the interval to 60 seconds instead of deregistering the script, so real-time features survive while load falls.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is the WordPress Heartbeat the same thing as WP-Cron?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No, and confusing the two leads to the wrong fix. Whereas WP-Cron runs scheduled server tasks on page load, the Heartbeat is a browser-to-server poll that only runs while an admin tab is open. Disabling one does nothing to the other.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Will disabling the WordPress Heartbeat speed up my WordPress 7.0 dashboard on AHosting?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Often yes, because a sluggish WordPress 7.0 dashboard is frequently a Heartbeat storm from several open editor tabs rather than a slow server. After you disable the WordPress Heartbeat on the front end and throttle the editor, admin-ajax.php pressure drops and the dashboard feels lighter.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-the-wordpress-heartbeat-actually-does-and-why-it-costs-you-5\">What the WordPress Heartbeat Actually Does (And Why It Costs You If You Don&#039;t Disable WordPress Heartbeat)<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-uncacheable-path-problem-in-one-sentence-8\">The uncacheable-path problem in one sentence<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-heartbeat-is-not-wp-cron-do-not-confuse-the-two-10\">Heartbeat is not WP-Cron \u2014 do not confuse the two<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-see-the-problem-watch-heartbeat-fire-in-your-own-browser-12\">See the Problem: Watch Heartbeat Fire in Your Own Browser<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-heartbeat-worker-cost-vs-your-ahosting-plan-the-numbers-16\">Heartbeat Worker Cost vs Your AHosting Plan (The Numbers)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-to-disable-wordpress-heartbeat-safely-in-4-steps-20\">How to Disable WordPress Heartbeat Safely in 4 Steps<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-first-step-choose-where-the-code-lives-22\">First Step: Choose Where the Code Lives<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-second-step-add-the-throttle-and-scope-filter-24\">Second Step: Add the Throttle-and-Scope Filter To Disable WordPress Heartbeat<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-third-step-save-and-clear-cache-27\">Third Step: Save and Clear Cache<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-fourth-step-verify-in-the-network-panel-29\">Fourth Step: Verify in the Network Panel<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-plugin-vs-filter-vs-litespeed-toggle-which-method-to-use-31\">Plugin vs Filter vs LiteSpeed Toggle: Which Method to Use<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-heartbeat-decision-checker-throttle-scope-or-disable-35\">Heartbeat Decision Checker: Throttle, Scope, or Disable WordPress Heartbeat?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-when-disabling-heartbeat-is-a-symptom-of-outgrowing-your-plan-38\">When Disabling Heartbeat Is a Symptom of Outgrowing Your Plan<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-heartbeat\">Frequently Asked Questions: Disabling the WordPress Heartbeat<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#faq-break-autosave\">Does disabling the WordPress Heartbeat break autosave or post locking?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-safest-2026\">What is the safest way to disable the WordPress Heartbeat in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-plugin-vs-filter\">Heartbeat Control plugin vs the heartbeat_settings filter: which should I use?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-functions-vs-snippet\">Disable WordPress Heartbeat in functions.php or in a snippet plugin: what is the difference?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-shared-load\">How much server load does the WordPress Heartbeat cause on AHosting shared hosting in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-cpu-no-traffic\">Why does admin-ajax.php show high CPU even when my WordPress site has no traffic?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-litespeed-workers\">Does AHosting&#039;s LiteSpeed cache stop Heartbeat from consuming PHP workers without needing to disable WordPress Heartbeat?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-woo-throttle\">Should I throttle the WordPress Heartbeat or disable WordPress Heartbeat on a 2026 WooCommerce store?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-vs-wpcron\">Is the WordPress Heartbeat the same thing as WP-Cron?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-wp7-dashboard\">Will my WordPress 7.0 dashboard on AHosting be faster if I disable WordPress Heartbeat?<\/a><\/li><\/ul><\/li><\/ul><\/div>\n\n\n<div class=\"ah-tldr\">\n  <span class=\"ah-tldr-badge\">TL;DR<\/span>\n  <p>To disable WordPress Heartbeat safely, throttle its interval to 60 seconds and deregister it on the front end with one <code>heartbeat_settings<\/code> filter \u2014 this cuts admin-ajax.php load about 75% while keeping autosave and post locking.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to <strong>disable WordPress Heartbeat<\/strong>, the goal is almost never to kill it outright \u2014 it is to stop it from quietly flooding <code>admin-ajax.php<\/code> with requests that consume PHP workers while nobody is reading your site. The Heartbeat API polls your server on a timer every time an admin or editor tab is open, and because that request path cannot be cached, even a well-tuned WordPress hosting stack serves each tick through PHP. Fortunately, one filter fixes it without breaking autosave.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notably, this is a silent cost. There is no error, no warning, and no visible slowdown until concurrency stacks up and the server starts queuing requests. Below, we show you how to confirm the problem in your own browser, apply the safe fix, verify it worked, and \u2014 using AHosting&#8217;s published PHP-worker counts \u2014 see exactly how much of your plan the Heartbeat can occupy.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"How to Disable the WordPress Heartbeat API in Under a Minute (2026)\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/F0VkhR0UNnw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 id=\"aioseo-what-the-wordpress-heartbeat-actually-does-and-why-it-costs-you-5\" class=\"wp-block-heading\">What the WordPress Heartbeat Actually Does (And Why It Costs You If You Don&#8217;t Disable WordPress Heartbeat)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically, the Heartbeat API is a polling system introduced in WordPress 3.6 that lets your browser talk to the server on a fixed interval \u2014 a &#8220;tick&#8221; every 15 to 120 seconds. It powers autosave, post locking (so two editors do not overwrite each other), session expiry warnings, and plugin notifications. Under the hood it is a classic <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/AJAX\" target=\"_blank\" rel=\"noopener\">AJAX request pattern<\/a>. According to the <a href=\"https:\/\/developer.wordpress.org\/plugins\/javascript\/heartbeat-api\/\" target=\"_blank\" rel=\"noopener\">WordPress Heartbeat API handbook<\/a>, each tick sends a POST to <code>admin-ajax.php<\/code>, the server prepares a response, and the browser waits for it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, the design has a sharp edge. In practice the tick runs whether or not the site has visitors, and the <code>admin-ajax.php<\/code> path is uncacheable \u2014 it bypasses page caching entirely and executes PHP on every call. Consequently, an open dashboard left in a background tab keeps spending server resources on nothing. Multiply that by several editors, several tabs, and a few plugins hooking the stream, and you get high CPU that looks mysterious because traffic is low.<\/p>\n\n\n\n<h3 id=\"aioseo-the-uncacheable-path-problem-in-one-sentence-8\" class=\"wp-block-heading\">The uncacheable-path problem in one sentence<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ultimately, this is why &#8220;just add more caching&#8221; does not help. Server-level caching \u2014 including the LiteSpeed and LSCache stack AHosting runs \u2014 serves a cached visitor page with zero PHP workers, but it cannot cache a logged-in <code>admin-ajax.php<\/code> POST. Therefore every Heartbeat tick is a full dynamic request. The fix is not more cache; it is fewer, smarter ticks. For the deeper server-side picture, our companion guide on the <a href=\"https:\/\/www.ahosting.net\/blog\/wordpress-hosting-speed-in-2026-the-7-server-side-factors-no-plugin-can-fix\/\" target=\"_blank\" rel=\"noopener\">server-side factors no plugin can fix<\/a> covers the caching layer in full.<\/p>\n\n\n\n<h3 id=\"aioseo-heartbeat-is-not-wp-cron-do-not-confuse-the-two-10\" class=\"wp-block-heading\">Heartbeat is not WP-Cron \u2014 do not confuse the two<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Importantly, the Heartbeat is often mistaken for WP-Cron, and the mix-up leads people to apply the wrong fix. In contrast, WP-Cron runs scheduled server tasks triggered on page loads, while the Heartbeat is a browser-to-server poll that only runs while an admin tab is open. They are separate subsystems on separate triggers. If your issue is scheduled jobs stacking up rather than idle-tab polling, see our guide on <a href=\"https:\/\/www.ahosting.net\/blog\/wordpress-cron-jobs-hosting-2026\/\" target=\"_blank\" rel=\"noopener\">why WP-Cron fails and how to replace it<\/a> instead.<\/p>\n\n\n\n<h2 id=\"aioseo-see-the-problem-watch-heartbeat-fire-in-your-own-browser-12\" class=\"wp-block-heading\">See the Problem: Watch Heartbeat Fire in Your Own Browser<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, confirm the symptom before you change anything. Open any post in the editor, press F12 to open your browser&#8217;s <a href=\"https:\/\/developer.chrome.com\/docs\/devtools\/network\" target=\"_blank\" rel=\"noopener\">developer tools Network panel<\/a>, and watch the request list. Type <code>admin-ajax<\/code> into the filter box, then simply wait \u2014 without touching the keyboard. Within about 15 seconds a POST request to <code>admin-ajax.php<\/code> appears; roughly 15 seconds later, another. That steady pulse, with no visitor activity, is the Heartbeat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Furthermore, you can watch the same pattern in your hosting resource graphs. On a CloudLinux account, sustained <code>admin-ajax.php<\/code> processes appearing in the process list \u2014 often flagged near a 508 &#8220;resource limit reached&#8221; event \u2014 are the Heartbeat and similar loopback calls competing for the same PHP workers your visitors need. That connection to your plan&#8217;s worker ceiling is the part most guides skip, so we quantify it next.<\/p>\n\n\n\n<div class=\"ah-infographic\" style=\"margin:28px 0;\">\n  <svg viewBox=\"0 0 720 300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Diagram comparing a cached visitor request served at the LiteSpeed layer with zero PHP workers against an uncacheable Heartbeat admin-ajax request that consumes one PHP worker per tick.\">\n    <title>Cached visitor request vs uncacheable Heartbeat request<\/title>\n    <desc>A cached visitor page is served at the LiteSpeed cache layer using zero PHP workers, while each Heartbeat admin-ajax tick bypasses cache and consumes one PHP worker.<\/desc>\n    <rect x=\"0\" y=\"0\" width=\"720\" height=\"300\" fill=\"#0f172a\" rx=\"10\"><\/rect>\n    <rect x=\"0\" y=\"0\" width=\"8\" height=\"300\" fill=\"#2563eb\" rx=\"4\"><\/rect>\n    <text x=\"32\" y=\"42\" fill=\"#ffffff\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"22\" font-weight=\"700\">Two requests, two very different costs<\/text>\n    <rect x=\"32\" y=\"70\" width=\"310\" height=\"180\" fill=\"#1e293b\" stroke=\"#334155\" stroke-width=\"1\" rx=\"10\"><\/rect>\n    <text x=\"52\" y=\"104\" fill=\"#93c5fd\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"15\" font-weight=\"700\">CACHED VISITOR PAGE<\/text>\n    <text x=\"52\" y=\"140\" fill=\"#e2e8f0\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"14\">Served at the LiteSpeed layer<\/text>\n    <text x=\"52\" y=\"166\" fill=\"#e2e8f0\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"14\">Never touches PHP<\/text>\n    <text x=\"52\" y=\"214\" fill=\"#4ade80\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"30\" font-weight=\"700\">0 PHP workers<\/text>\n    <rect x=\"378\" y=\"70\" width=\"310\" height=\"180\" fill=\"#1e293b\" stroke=\"#334155\" stroke-width=\"1\" rx=\"10\"><\/rect>\n    <text x=\"398\" y=\"104\" fill=\"#fca5a5\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"15\" font-weight=\"700\">HEARTBEAT admin-ajax.php<\/text>\n    <text x=\"398\" y=\"140\" fill=\"#e2e8f0\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"14\">Uncacheable by design<\/text>\n    <text x=\"398\" y=\"166\" fill=\"#e2e8f0\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"14\">Runs PHP every tick<\/text>\n    <text x=\"398\" y=\"214\" fill=\"#f87171\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"30\" font-weight=\"700\">1 worker \/ tick<\/text>\n    <text x=\"32\" y=\"284\" fill=\"#94a3b8\" font-family=\"Poppins, Arial, sans-serif\" font-size=\"13\">AHosting.net &#8212; Est. 2002<\/text>\n  <\/svg>\n<\/div>\n\n\n\n<h2 id=\"aioseo-heartbeat-worker-cost-vs-your-ahosting-plan-the-numbers-16\" class=\"wp-block-heading\">Heartbeat Worker Cost vs Your AHosting Plan (The Numbers)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the data no generic tutorial can give you, because it requires knowing the host&#8217;s real worker counts. AHosting publishes its PHP worker (entry-process) allocation per plan \u2014 Bronze 15, Silver 25, Gold 40 \u2014 so we can map the Heartbeat&#8217;s appetite directly onto a ceiling. Each open post-editor tab ticks about four times per minute, and each tick occupies one worker on the uncacheable path. The table below shows what that means as concurrent editors climb.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Open post-editor tabs (15s ticks)<\/th><th>Ticks \/ min<\/th><th>Share of Bronze (15 EP)<\/th><th>Share of Silver (25 EP)<\/th><th>Share of Gold (40 EP)<\/th><\/tr><\/thead><tbody><tr><td>1 editor<\/td><td>4<\/td><td>7%<\/td><td>4%<\/td><td>2%<\/td><\/tr><tr><td>2 editors<\/td><td>8<\/td><td>13%<\/td><td>8%<\/td><td>5%<\/td><\/tr><tr><td>5 editors<\/td><td>20<\/td><td>33%<\/td><td>20%<\/td><td>12%<\/td><\/tr><tr><td>10 editors<\/td><td>40<\/td><td>67%<\/td><td>40%<\/td><td>25%<\/td><\/tr><tr><td>15 editors<\/td><td>60<\/td><td>100%<\/td><td>60%<\/td><td>38%<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Heartbeat Worker Cost vs AHosting Plan EP Ceiling. Each open post-editor tab ticks ~4\u00d7\/min; each tick is one uncacheable admin-ajax.php request occupying one PHP worker. Cached visitor pages consume zero workers. Source: AHosting published per-plan entry-process counts.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Consequently, the headline figure is stark: 15 editors with post-editor tabs open can occupy 100% of a Bronze plan&#8217;s PHP workers \u2014 spent entirely on polling, with zero visitors served. Even at throttled 60-second intervals, that pressure drops roughly fourfold, which is precisely why throttling beats brute-force disabling for busy teams. If your concurrency is regularly pushing these numbers, that is a genuine signal to move to a plan with more workers or to <a href=\"https:\/\/www.ahosting.net\/vps-hosting.html\" target=\"_blank\" rel=\"noopener\">WordPress VPS hosting<\/a> with dedicated resources.<\/p>\n\n\n\n<h2 id=\"aioseo-how-to-disable-wordpress-heartbeat-safely-in-4-steps-20\" class=\"wp-block-heading\">How to Disable WordPress Heartbeat Safely in 4 Steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the shortest correct fix: add one <code>heartbeat_settings<\/code> filter that raises the interval to 60 seconds and deregisters Heartbeat on the front end, leaving the editor&#8217;s autosave and post locking intact. The four steps below walk through it and verify the result.<\/p>\n\n\n\n<h3 id=\"aioseo-first-step-choose-where-the-code-lives-22\" class=\"wp-block-heading\">First Step: Choose Where the Code Lives<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First, decide where to put the snippet. A code-snippet plugin such as WPCode or Code Snippets is the durable choice because it survives theme switches; a child theme&#8217;s <code>functions.php<\/code> works too but disappears if you change themes. Either way, you are adding a small PHP filter \u2014 no core files are touched. Avoid pasting into the parent theme&#8217;s <code>functions.php<\/code>, since a theme update will overwrite it.<\/p>\n\n\n\n<h3 id=\"aioseo-second-step-add-the-throttle-and-scope-filter-24\" class=\"wp-block-heading\">Second Step: Add the Throttle-and-Scope Filter To Disable WordPress Heartbeat<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next, add the filter below. The first function raises the tick interval to the maximum 60 seconds; the second stops Heartbeat entirely on the public front end, where logged-out visitors gain nothing from it. Together they keep the editor fully functional while removing the bulk of the load. The <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/heartbeat_settings\/\" target=\"_blank\" rel=\"noopener\">heartbeat_settings hook reference<\/a> documents the interval values (anything 15\u2013120).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ 1. Throttle Heartbeat to the maximum 60-second interval.\nadd_filter( 'heartbeat_settings', 'ah_throttle_heartbeat' );\nfunction ah_throttle_heartbeat( $settings ) {\n    $settings&#91;'interval'] = 60; \/\/ allowed range is 15-120\n    return $settings;\n}\n\n\/\/ 2. Disable Heartbeat on the public front end only.\nadd_action( 'init', 'ah_disable_frontend_heartbeat', 1 );\nfunction ah_disable_frontend_heartbeat() {\n    if ( ! is_admin() ) {\n        wp_deregister_script( 'heartbeat' );\n    }\n}<\/code><\/pre>\n\n\n\n<h3 id=\"aioseo-third-step-save-and-clear-cache-27\" class=\"wp-block-heading\">Third Step: Save and Clear Cache<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Then save the snippet (or update <code>functions.php<\/code>) and clear any page cache so the front-end change takes effect. On a LiteSpeed host, purge LSCache; if OPcache is active on your PHP pool, the new function may take a few seconds to load, so allow a moment before testing. No visitor-facing markup changes, so there is nothing to break on the front end.<\/p>\n\n\n\n<h3 id=\"aioseo-fourth-step-verify-in-the-network-panel-29\" class=\"wp-block-heading\">Fourth Step: Verify in the Network Panel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, prove it worked. Reload the post editor, open developer tools, and filter the Network panel to <code>admin-ajax<\/code> again. Where you previously saw a request every 15 seconds, you should now see roughly one per minute \u2014 about 75% fewer calls. Type a word in the draft and confirm the &#8220;Saving\u2026 \/ Saved&#8221; autosave indicator still fires. If it does, you have throttled the Heartbeat without losing the features that matter.<\/p>\n\n\n\n<h2 id=\"aioseo-plugin-vs-filter-vs-litespeed-toggle-which-method-to-use-31\" class=\"wp-block-heading\">Plugin vs Filter vs LiteSpeed Toggle: Which Method to Use<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Above all, pick the method that matches how you manage the site. The filter is the lightest; a plugin is the most approachable; the LiteSpeed Cache toggle is convenient if you already run that plugin. All three reach the same outcome \u2014 fewer <code>admin-ajax.php<\/code> calls \u2014 so the decision is about maintainability, not capability.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Best for<\/th><th>Trade-off<\/th><\/tr><\/thead><tbody><tr><td><code>heartbeat_settings<\/code> filter<\/td><td>Developers; leanest install<\/td><td>Requires editing PHP<\/td><\/tr><tr><td>Heartbeat Control \/ snippet plugin<\/td><td>Non-coders; theme-independent<\/td><td>One more plugin to maintain<\/td><\/tr><tr><td>LiteSpeed Cache toggle<\/td><td>Sites already on LSCache<\/td><td>Only if LSCache is installed<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Three routes to the same result; choose by maintainability.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Moreover, the choice interacts with your other plugins. If a page builder such as Elementor, or a WooCommerce extension, depends on Heartbeat for editor or cart behavior, prefer the throttle-only route rather than deregistering the script \u2014 a point the interactive checker below helps you decide. For a store specifically, the same worker math applies to checkout, which we cover in our <a href=\"https:\/\/www.ahosting.net\/woocommerce-hosting.html\" target=\"_blank\" rel=\"noopener\">WooCommerce hosting<\/a> breakdown.<\/p>\n\n\n\n<h2 id=\"aioseo-heartbeat-decision-checker-throttle-scope-or-disable-35\" class=\"wp-block-heading\">Heartbeat Decision Checker: Throttle, Scope, or Disable WordPress Heartbeat?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use the checker below to get a recommendation based on your setup. It maps three common answers to the safe action so you do not accidentally disable a feature your site relies on.<\/p>\n\n\n\n<style>\n.ahhb-wrap{background:#0f172a;border-radius:12px;padding:28px 24px;margin:24px 0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Arial,sans-serif;}\n.ahhb-wrap h4{color:#fff;font-size:1.15rem;margin:0 0 6px;font-weight:700;}\n.ahhb-wrap p.ahhb-sub{color:#cbd5e1;font-size:.9rem;margin:0 0 18px;}\n.ahhb-q{color:#93c5fd;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0 0 10px;}\n.ahhb-opts{display:block;}\n.ahhb-btn{display:block;width:100%;text-align:left;background:#1e293b;color:#e2e8f0;border:1px solid #334155;border-radius:8px;padding:12px 16px;margin:0 0 10px;font-size:.95rem;cursor:pointer;transition:background .15s,border-color .15s;}\n.ahhb-btn:hover{background:#243244;border-color:#2563eb;}\n.ahhb-btn.ahhb-active{background:#2563eb;border-color:#2563eb;color:#fff;}\n.ahhb-out{background:#111f38;border-left:4px solid #2563eb;border-radius:0 8px 8px 0;padding:16px 18px;margin:16px 0 0;color:#e2e8f0;font-size:.95rem;line-height:1.6;display:none;}\n.ahhb-out.ahhb-show{display:block;}\n.ahhb-out strong{color:#fff;}\n.ahhb-cta{margin-top:16px;}\na.ahhb-cta-btn.wp-element-button{display:inline-block;background:#2563eb!important;color:#fff!important;text-decoration:none!important;font-weight:600;padding:11px 20px;border-radius:8px;font-size:.9rem;}\n<\/style>\n<div class=\"ahhb-wrap\" data-ahhb=\"1\">\n  <h4>Heartbeat Decision Checker<\/h4>\n  <p class=\"ahhb-sub\">What does your site depend on? Pick the closest match.<\/p>\n  <p class=\"ahhb-q\">Your setup<\/p>\n  <div class=\"ahhb-opts\">\n    <button type=\"button\" class=\"ahhb-btn\" data-ahhb-opt=\"solo\">Solo site, no store, no page builder editor needs<\/button>\n    <button type=\"button\" class=\"ahhb-btn\" data-ahhb-opt=\"store\">WooCommerce \/ membership \u2014 carts, stock, or sessions update live<\/button>\n    <button type=\"button\" class=\"ahhb-btn\" data-ahhb-opt=\"team\">Multiple editors working at once in the block editor<\/button>\n  <\/div>\n  <div class=\"ahhb-out\" data-ahhb-out>\n    <p data-ahhb-text><\/p>\n    <div class=\"ahhb-cta\"><a class=\"ahhb-cta-btn wp-element-button\" href=\"https:\/\/www.ahosting.net\/wordpress-hosting.html\" target=\"_blank\" rel=\"noopener\">See AHosting WordPress plans<\/a><\/div>\n  <\/div>\n<\/div>\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var wrap = document.querySelector('[data-ahhb=\"1\"]');\n    if (!wrap) { return; }\n    var out = wrap.querySelector('[data-ahhb-out]');\n    if (!out) { return; }\n    var textEl = wrap.querySelector('[data-ahhb-text]');\n    if (!textEl) { return; }\n    var msg = {};\n    msg.solo = 'Disable on the front end and throttle the editor to 60 seconds. You do not need real-time features, so the full filter in this guide is the right call.';\n    msg.store = 'Throttle only. Set the interval to 60 seconds but keep Heartbeat registered, because your cart, stock, or session features poll through it. Do not deregister the script.';\n    msg.team = 'Throttle to 60 seconds and keep the editor Heartbeat on for post locking. If concurrency regularly loads your workers, size up a plan tier so the polling has headroom.';\n    wrap.addEventListener('click', function(e){\n      var btn = e.target;\n      if (!btn) { return; }\n      var opt = btn.getAttribute('data-ahhb-opt');\n      if (!opt) { return; }\n      var all = wrap.querySelectorAll('.ahhb-btn');\n      var i = 0;\n      for (i = 0; i < all.length; i++) { all[i].classList.remove('ahhb-active'); }\n      btn.classList.add('ahhb-active');\n      if (msg[opt]) { textEl.textContent = msg[opt]; }\n      out.classList.add('ahhb-show');\n    });\n  });\n})();\n<\/script>\n\n\n\n<h2 id=\"aioseo-when-disabling-heartbeat-is-a-symptom-of-outgrowing-your-plan-38\" class=\"wp-block-heading\">When Disabling Heartbeat Is a Symptom of Outgrowing Your Plan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, treat a chronic Heartbeat problem as a signal, not just a nuisance. Occasionally, throttling is enough forever. But if you are throttling, deregistering, and still bumping the worker ceiling during normal editing, the real constraint is concurrency headroom. As the table above shows, the same tick count that occupies 100% of a Bronze plan barely touches a Gold plan \u2014 the difference is published worker allocation, not a hidden setting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Therefore, the durable fix for a growing team is more workers behind the same polling, which is what higher shared tiers and VPS provide. Heartbeat tuning buys you room; capacity buys you certainty. Size the plan against the concurrency math in this guide, and you will stop firefighting <code>admin-ajax.php<\/code> for good.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Last updated:<\/strong> July 15, 2026<\/p>\n\n\n\n<h2 id=\"faq-heartbeat\" class=\"wp-block-heading\">Frequently Asked Questions: Disabling the WordPress Heartbeat<\/h2>\n\n\n\n<h3 id=\"faq-break-autosave\" class=\"wp-block-heading\">Does disabling the WordPress Heartbeat break autosave or post locking?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically, disabling Heartbeat everywhere removes autosave and post locking, but throttling it to 60 seconds keeps both while cutting requests by about 75 percent. Therefore the recommended pattern is throttle in the editor, disable on the front end. The filter earlier in this guide does exactly that.<\/p>\n\n\n\n<h3 id=\"faq-safest-2026\" class=\"wp-block-heading\">What is the safest way to disable the WordPress Heartbeat in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Generally, the safest way to disable the WordPress Heartbeat in 2026 is to throttle the interval to 60 seconds and deregister the script only on the front end, leaving the editor untouched. Consequently autosave and post locking keep working while admin-ajax.php load drops sharply.<\/p>\n\n\n\n<h3 id=\"faq-plugin-vs-filter\" class=\"wp-block-heading\">Heartbeat Control plugin vs the heartbeat_settings filter: which should I use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, the heartbeat_settings filter is lighter because it adds no plugin overhead, while the Heartbeat Control plugin is friendlier if you avoid code. Both reach the same result. The comparison table above maps each method to the resource cost it removes.<\/p>\n\n\n\n<h3 id=\"faq-functions-vs-snippet\" class=\"wp-block-heading\">Disable WordPress Heartbeat in functions.php or in a snippet plugin: what is the difference?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notably, a functions.php edit is theme-bound and disappears on theme switch, whereas a code-snippet plugin survives theme changes and is easier to toggle. Therefore a snippet plugin is the more durable place to disable the WordPress Heartbeat on a production site.<\/p>\n\n\n\n<h3 id=\"faq-shared-load\" class=\"wp-block-heading\">How much server load does the WordPress Heartbeat cause on AHosting shared hosting in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Concretely, each Heartbeat tick is one uncacheable admin-ajax.php request that consumes one PHP worker for its duration. As a result, fifteen open editor tabs can occupy every worker on an entry-level plan. The plan-by-plan table above shows exactly where that ceiling sits on Bronze, Silver, and Gold.<\/p>\n\n\n\n<h3 id=\"faq-cpu-no-traffic\" class=\"wp-block-heading\">Why does admin-ajax.php show high CPU even when my WordPress site has no traffic?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Fundamentally, admin-ajax.php runs the Heartbeat API on a timer, so it fires whether or not visitors are on the site. Because that path bypasses page caching, LiteSpeed cannot absorb it. In other words, the CPU is spent polling from an open admin tab, not serving readers.<\/p>\n\n\n\n<h3 id=\"faq-litespeed-workers\" class=\"wp-block-heading\">Does AHosting's LiteSpeed cache stop Heartbeat from consuming PHP workers without needing to disable WordPress Heartbeat?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately no, because admin-ajax.php is uncacheable by design, so LiteSpeed serves it through PHP like any dynamic request. However, AHosting publishes its per-plan worker counts, so you can size the Heartbeat cost against a known ceiling rather than guessing.<\/p>\n\n\n\n<h3 id=\"faq-woo-throttle\" class=\"wp-block-heading\">Should I throttle the WordPress Heartbeat or disable WordPress Heartbeat on a 2026 WooCommerce store?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically, throttle rather than disable when a WooCommerce store or membership plugin depends on Heartbeat for cart, stock, or session updates. Accordingly, set the interval to 60 seconds instead of deregistering the script, so real-time features survive while load falls.<\/p>\n\n\n\n<h3 id=\"faq-vs-wpcron\" class=\"wp-block-heading\">Is the WordPress Heartbeat the same thing as WP-Cron?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No, and confusing the two leads to the wrong fix. Whereas WP-Cron runs scheduled server tasks on page load, the Heartbeat is a browser-to-server poll that only runs while an admin tab is open. Disabling one does nothing to the other.<\/p>\n\n\n\n<h3 id=\"faq-wp7-dashboard\" class=\"wp-block-heading\">Will my WordPress 7.0 dashboard on AHosting be faster if I disable WordPress Heartbeat?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Often yes, because a sluggish WordPress 7.0 dashboard is frequently a Heartbeat storm from several open editor tabs rather than a slow server. After you disable the WordPress Heartbeat on the front end and throttle the editor, admin-ajax.php pressure drops and the dashboard feels lighter.<\/p>\n\n\n\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var allH3s = document.querySelectorAll('h3.wp-block-heading');\n    var inFaq = false;\n    for (var i = 0; i < allH3s.length; i++) {\n      var h3 = allH3s[i];\n      var prev = h3.previousElementSibling;\n      if (prev) {\n        if (prev.tagName === 'H2') {\n          var prevId = prev.getAttribute('id');\n          if (prevId) {\n            if (prevId.indexOf('faq-') === 0) {\n              inFaq = true;\n            } else {\n              inFaq = false;\n            }\n          }\n        }\n      }\n      if (inFaq) {\n        initToggle(h3);\n      }\n    }\n    function initToggle(h3) {\n      var answer = h3.nextElementSibling;\n      if (!answer) { return; }\n      if (answer.tagName !== 'P') { return; }\n      var chev = document.createElement('span');\n      chev.className = 'ahfaq-chev ahfaq-chev-closed';\n      chev.setAttribute('aria-hidden', 'true');\n      h3.appendChild(chev);\n      h3.setAttribute('role', 'button');\n      h3.setAttribute('tabindex', '0');\n      h3.setAttribute('aria-expanded', 'false');\n      answer.classList.add('ahfaq-collapsed');\n      h3.addEventListener('click', function(){ doToggle(h3, answer, chev); });\n      h3.addEventListener('keydown', function(e){\n        if (e.key === 'Enter') { e.preventDefault(); doToggle(h3, answer, chev); }\n        if (e.key === ' ') { e.preventDefault(); doToggle(h3, answer, chev); }\n      });\n    }\n    function doToggle(h3, answer, chev) {\n      var isOpen = h3.getAttribute('aria-expanded') === 'true';\n      if (isOpen) {\n        answer.classList.remove('ahfaq-open');\n        answer.classList.add('ahfaq-collapsed');\n        h3.setAttribute('aria-expanded', 'false');\n        chev.classList.add('ahfaq-chev-closed');\n        chev.classList.remove('ahfaq-chev-open');\n      } else {\n        answer.classList.remove('ahfaq-collapsed');\n        answer.classList.add('ahfaq-open');\n        h3.setAttribute('aria-expanded', 'true');\n        chev.classList.remove('ahfaq-chev-closed');\n        chev.classList.add('ahfaq-chev-open');\n      }\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR To disable WordPress Heartbeat safely, throttle its interval to 60 seconds and deregister it on the front end with one heartbeat_settings filter \u2014 this cuts admin-ajax.php load about 75% while keeping autosave and post locking. If you want to disable WordPress Heartbeat, the goal is almost never to kill it outright \u2014 it is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":943,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[128,8],"tags":[130,95,62,129,131],"class_list":["post-942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","category-wordpress","tag-admin-ajax","tag-litespeed-hosting","tag-php-workers","tag-wordpress-heartbeat","tag-wordpress-performance"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Matt Chrust\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AHosting Blog Home | AHosting Blog\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Disable WordPress Heartbeat: Stop admin-ajax Load 2026\" \/>\n\t\t<meta property=\"og:description\" content=\"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-15T22:14:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-15T22:25:40+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Disable WordPress Heartbeat: Stop admin-ajax Load 2026\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#article\",\"name\":\"Disable WordPress Heartbeat: Stop admin-ajax Load 2026\",\"headline\":\"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)\",\"author\":{\"@type\":\"Person\",\"name\":\"Matt Chrust\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/disable-wordpress-heartbeat-ahosting.jpg\",\"width\":1200,\"height\":675},\"datePublished\":\"2026-07-15T22:14:08+00:00\",\"dateModified\":\"2026-07-15T22:25:40+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#webpage\"},\"articleSection\":\"How To, WordPress, admin-ajax, LiteSpeed hosting, PHP workers, wordpress heartbeat, wordpress performance\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#listItem\",\"name\":\"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#listItem\",\"position\":3,\"name\":\"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"},\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/\"}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\",\"name\":\"AHosting\",\"description\":\"AHosting Blog\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/assets\\\/img\\\/ahosting-logo.svg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\",\"name\":\"Matt Chrust\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Matt Chrust\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/\",\"name\":\"Disable WordPress Heartbeat: Stop admin-ajax Load 2026\",\"description\":\"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \\u2014 or throttle it right.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/disable-wordpress-heartbeat-ahosting.jpg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#mainImage\",\"width\":1200,\"height\":675},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/how-to-disable-wordpress-heartbeat\\\/#mainImage\"},\"datePublished\":\"2026-07-15T22:14:08+00:00\",\"dateModified\":\"2026-07-15T22:25:40+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#website\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"name\":\"AHosting\",\"description\":\"AHosting Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","description":"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.","canonical_url":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#article","name":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","headline":"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)","author":{"@type":"Person","name":"Matt Chrust","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/"},"publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg","width":1200,"height":675},"datePublished":"2026-07-15T22:14:08+00:00","dateModified":"2026-07-15T22:25:40+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#webpage"},"articleSection":"How To, WordPress, admin-ajax, LiteSpeed hosting, PHP workers, wordpress heartbeat, wordpress performance"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.ahosting.net\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","position":2,"name":"WordPress","item":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#listItem","name":"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#listItem","position":3,"name":"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"},"item":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/"}]},{"@type":"Organization","@id":"https:\/\/www.ahosting.net\/#organization","name":"AHosting","description":"AHosting Blog","url":"https:\/\/www.ahosting.net\/","logo":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/assets\/img\/ahosting-logo.svg","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#organizationLogo"},"image":{"@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/","name":"Matt Chrust","image":{"@type":"ImageObject","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g","width":96,"height":96,"caption":"Matt Chrust"}},{"@type":"WebPage","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#webpage","url":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/","name":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","description":"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"creator":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg","@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#mainImage","width":1200,"height":675},"primaryImageOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/#mainImage"},"datePublished":"2026-07-15T22:14:08+00:00","dateModified":"2026-07-15T22:25:40+00:00"},{"@type":"WebSite","@id":"https:\/\/www.ahosting.net\/#website","url":"https:\/\/www.ahosting.net\/","name":"AHosting","description":"AHosting Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"}}]},"og:locale":"en_US","og:site_name":"AHosting Blog Home | AHosting Blog","og:type":"article","og:title":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","og:description":"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.","og:url":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/","og:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg","og:image:secure_url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg","og:image:width":1200,"og:image:height":675,"article:published_time":"2026-07-15T22:14:08+00:00","article:modified_time":"2026-07-15T22:25:40+00:00","twitter:card":"summary_large_image","twitter:title":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","twitter:description":"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.","twitter:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/07\/disable-wordpress-heartbeat-ahosting.jpg"},"aioseo_meta_data":{"post_id":"942","title":"Disable WordPress Heartbeat: Stop admin-ajax Load 2026","description":"Heartbeat quietly floods admin-ajax.php and burns PHP workers with zero error. Learn how to disable WordPress Heartbeat safely \u2014 or throttle it right.","keywords":null,"keyphrases":{"focus":{"keyphrase":"disable wordpress heartbeat","score":100,"analysis":{"keyphraseInTitle":{"score":9,"maxScore":9,"error":0},"keyphraseInDescription":{"score":9,"maxScore":9,"error":0},"keyphraseLength":{"score":9,"maxScore":9,"error":0,"length":3},"keyphraseInURL":{"score":5,"maxScore":5,"error":0},"keyphraseInIntroduction":{"score":9,"maxScore":9,"error":0},"keyphraseInSubHeadings":{"score":9,"maxScore":9,"error":0},"keyphraseInImageAlt":[],"keywordDensity":{"type":"best","score":9,"maxScore":9,"error":0}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-07-15 22:08:57","updated":"2026-07-15 23:15:03","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/\" title=\"WordPress\">WordPress<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.ahosting.net\/blog"},{"label":"WordPress","link":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/"},{"label":"How to Disable the WordPress Heartbeat (Before It Eats Your PHP Workers)","link":"https:\/\/www.ahosting.net\/blog\/how-to-disable-wordpress-heartbeat\/"}],"_links":{"self":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/comments?post=942"}],"version-history":[{"count":3,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/942\/revisions"}],"predecessor-version":[{"id":948,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/942\/revisions\/948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media\/943"}],"wp:attachment":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media?parent=942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/categories?post=942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/tags?post=942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}