{"id":7674,"date":"2026-07-08T00:31:23","date_gmt":"2026-07-08T00:31:23","guid":{"rendered":"https:\/\/www.wpconsults.com\/?p=7674"},"modified":"2026-07-08T00:31:23","modified_gmt":"2026-07-08T00:31:23","slug":"inp-wordpress","status":"publish","type":"post","link":"https:\/\/www.wpconsults.com\/de\/inp-wordpress\/","title":{"rendered":"How to Improve INP on WordPress (Interaction to Next Paint)"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Most WordPress sites pass their loading scores and then quietly fail INP, because INP does not measure how fast your page appears; it measures how fast your page responds when someone actually clicks, taps, or types. That is a different problem, and it lives almost entirely in your JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide is the diagnostic version, not another list of plugins to install. I will show you what INP is really made of, how to find the exact interaction that is slow, which WordPress habits cause it, and the JavaScript diet that actually moves the number.<\/p>\n\n\n\n<div class=\"wp-block-group wpc-takeaways is-layout-flow wp-block-group-is-layout-flow\">\n\n<h2 class=\"wp-block-heading toc-ignore\">Wichtigste Erkenntnisse<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>INP replaced First Input Delay as a Core Web Vital in March 2024, and it is the metric most WordPress sites now fail because it measures real interaction responsiveness, not first-load speed.<\/li><li>A good INP is 200ms or less; 200 to 500ms needs work; above 500ms is poor, judged at the 75th percentile of real visits.<\/li><li>INP has three parts: input delay, processing time, and presentation delay; knowing which one is slow tells you exactly what to fix.<\/li><li>On WordPress the usual culprits are page builders, live-chat widgets, heavy third-party tags, and plugins that load JavaScript on every page.<\/li><li>The fix is a JavaScript diet: delay and defer scripts, load heavy widgets behind a facade, and cut the plugins running JS you do not need, not one magic plugin.<\/li><\/ul>\n\n<\/div>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:15px 15px 0px 0px rgba(160, 152, 255, 0.31);}.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-content-wrap{border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id7066_f7400a-9c .kb-table-of-content-wrap{border-top:1px solid var(--global-palette10, #3182CE);border-right:1px solid var(--global-palette10, #3182CE);border-bottom:1px solid var(--global-palette10, #3182CE);border-left:1px solid var(--global-palette10, #3182CE);}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">Why INP is the Core Web Vital most WordPress sites fail<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google swapped First Input Delay for <a href=\"https:\/\/web.dev\/articles\/inp\" rel=\"nofollow noopener\" target=\"_blank\">Interaction to Next Paint<\/a> in March 2024, and that swap is why a lot of sites that used to pass now do not. FID only timed the delay before the browser started handling your very first interaction, so a site could score well while still feeling sluggish on every click after that.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INP is stricter because it watches every interaction across the whole visit and reports close to the worst one. A good score is <strong>200ms or less<\/strong>, 200 to 500ms needs improvement, and anything above 500ms is poor, measured at the 75th percentile of your real visitors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress fails this more than most stacks for one reason: it ships a lot of JavaScript. Between a page builder, a few plugins that each enqueue their own scripts, and a couple of third-party tags, the main thread ends up busy, and a busy main thread is exactly what makes an interaction wait. Passing your Largest Contentful Paint says nothing about this, which is why I treat INP as its own job in my <a href=\"https:\/\/www.wpconsults.com\/de\/how-to-pass-core-web-vitals\/\">Core Web Vitals guide<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What INP actually measures: input delay, processing, and presentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the part most guides skip, and it is the part that makes fixing INP straightforward instead of guesswork. Every interaction is really three stretches of time added together, and your slow number is almost always sitting in just one of them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Input delay<\/strong> is the wait before your code even starts, usually because the main thread is busy running something else. <strong>Processing time<\/strong> is your event handlers actually doing their work. <strong>Presentation delay<\/strong> is the browser rendering and painting the result on screen. Diagnose which stretch is long, and you know whether the problem is too much background JavaScript, a heavy handler, or a bloated layout.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>The three parts of INP<\/th><th>Was es ist<\/th><th>Common WordPress cause<\/th><th>Die L\u00f6sung<\/th><\/tr><\/thead><tbody><tr><td>Input delay<\/td><td>The wait before your handler starts, while the main thread is busy<\/td><td>Scripts from plugins, tag managers, and builders all executing at once<\/td><td>Delay and defer non-critical JS so the thread is free when the user acts<\/td><\/tr><tr><td>Processing time<\/td><td>Your event handlers doing their work<\/td><td>A heavy widget or a handler that does too much on click<\/td><td>Break the work up, or load the widget behind a facade until it is needed<\/td><\/tr><tr><td>Presentation delay<\/td><td>The browser rendering and painting the next frame<\/td><td>An oversized DOM from a page builder with deeply nested elements<\/td><td>Simplify the layout and cut the element count on heavy templates<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The three stretches of time inside every INP measurement, the WordPress habit that usually causes each one, and where to aim the fix.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How to find your slowest interaction with real field data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You cannot fix an interaction you have not identified, so start with field data, not a lab guess. The <a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/core-web-vitals\" rel=\"nofollow noopener\" target=\"_blank\">Chrome User Experience Report<\/a> holds the INP your real visitors experienced, and PageSpeed Insights surfaces it at the top of any URL you test. That number is the one Google grades you on, so it is where I always begin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"554\" src=\"https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681.avif\" alt=\"PageSpeed Insights showing the Interaction to Next Paint (INP) field metric from the Chrome UX Report\" class=\"wp-image-7681\" srcset=\"https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681.avif 1200w, https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681-300x139.avif 300w, https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681-1024x473.avif 1024w, https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681-768x355.avif 768w, https:\/\/www.wpconsults.com\/wp-content\/uploads\/2026\/07\/pagespeed-insights-inp-field-data-7681-18x8.avif 18w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-element-caption\">A real PageSpeed Insights report: the Interaction to Next Paint (INP) value, here 138 ms, comes straight from the Chrome UX Report field data. Screenshot: Google PageSpeed Insights.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The catch is that field data only exists once a page has enough traffic, so a new or low-traffic site often shows no INP report yet. For those, and for reproducing a specific slow click, use the Performance panel in Chrome DevTools with the interaction recorded; it breaks a single interaction into the three parts above so you can see which one is long. I covered this field-versus-lab split in detail in my breakdown of <a href=\"https:\/\/www.wpconsults.com\/de\/crux-vis-vs-pagespeed-insights\/\">CrUX Vis versus PageSpeed Insights<\/a>, because reading the right one is half the battle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The WordPress plugins and widgets that wreck INP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, the same handful of offenders show up on almost every WordPress audit. Heavy page builders are the first, because a builder like Divi adds large scripts and deeply nested markup that make both processing and presentation slower. A live-chat widget is often the single worst item; one chat script can add hundreds of milliseconds of processing on its own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After those come the quieter ones: analytics and tag-manager setups that load several third-party scripts, slider and popup plugins, and the general pile-up of plugins that each enqueue JavaScript site-wide even on pages that never use it. None of these is fatal alone, but together they keep the main thread busy, and a busy thread is what turns a click into a wait. A lighter theme helps here too, which is part of why I keep pushing on <a href=\"https:\/\/www.wpconsults.com\/de\/schadet-ihr-wordpress-thema-ihrem-seo\/\">whether your theme is hurting your SEO<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The JavaScript diet: fixing INP on WordPress step by step<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The goal of the fix is simple to state: keep the main thread free so that when a user interacts, the browser can respond right away. You get there by loading less JavaScript, loading it later, and only running the heavy pieces when they are actually needed.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<figure class=\"wpc-flow\">\n  <p class=\"wpc-flow__title\">Fixing WordPress INP, in the order that clears the most first<\/p>\n  <ol class=\"wpc-flow__list\">\n    <li class=\"is-blue\">Audit what loads JavaScript on each template and remove plugins you do not need<\/li>\n    <li class=\"is-teal\">Delay and defer non-critical scripts so the main thread is free on load<\/li>\n    <li class=\"is-purple\">Put heavy widgets (chat, video, maps) behind a facade that loads on click<\/li>\n    <li class=\"is-amber\">Conditionally load plugin scripts only on the pages that use them<\/li>\n    <li class=\"is-green\">Re-measure INP in the field and confirm the worst interaction improved<\/li>\n  <\/ol>\n  <figcaption class=\"wpc-flow__cap\">Work top to bottom: cutting and delaying JavaScript frees the thread first, and the facade handles the single heaviest widget.<\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Start by auditing what each template actually loads, because the cheapest millisecond is the one you never ship. Deactivate plugins you no longer use, and for the ones you keep, check whether they enqueue scripts on every page or only where needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then delay and defer the non-critical scripts. Most caching plugins, including LiteSpeed Cache, have a &#8220;delay JavaScript&#8221; option that holds scripts until the first user interaction, which frees the thread during the crucial early moments. Be a little careful here, because delaying a script your above-the-fold content depends on can break it, so test after you enable it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die <strong>facade pattern<\/strong> is the highest-value single fix for most sites. Instead of loading a live-chat or video widget on page load, you show a lightweight fake: a static button or a thumbnail that looks like the real thing, and the heavy script only loads once the user clicks it. A chat widget that was adding 300ms of processing to every interaction stops touching your INP entirely until someone actually opens the chat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, load plugin scripts conditionally so a contact-form or slider script only appears on the pages that use it, not site-wide. This is more work than flipping a switch, but it is often what separates a site that keeps failing from one that finally passes, because it attacks the input-delay pile-up at its source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to confirm your INP actually improved<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not judge the result by a lab score alone. Lab tools simulate one run, but INP is a field metric built from your real visitors, so the number that matters updates slowly in CrUX as fresh data comes in. Expect to wait a few weeks after a change before the field INP fully reflects it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the meantime, verify in the lab that the specific interaction you fixed is faster: record it again in the Performance panel and confirm the part you targeted, input delay, processing, or presentation, actually shrank. When the lab shows the fix working and the field number drifts down over the following weeks, you know it stuck.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So, how hard is INP to fix on WordPress really?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Honestly, it is more approachable than its reputation, as long as you stop treating it like a loading-speed problem. Almost every INP failure I diagnose traces back to JavaScript that did not need to run when it did, and the facade pattern plus a proper delay-JS pass clears the bulk of it on most sites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So do not go plugin-shopping for a fix; diagnose which of the three parts is slow, then cut, delay, and defer your way back to a free main thread. Yes, the conditional-loading step takes real effort, but that is usually the one that turns a stubborn &#8220;needs improvement&#8221; into a pass, and it is worth doing properly.<\/p>\n\n\n\n<div class=\"wp-block-group wpc-post-cta is-layout-flow wp-block-group-is-layout-flow\">\n\n<h3 class=\"wp-block-heading\">Still Stuck on a Failing INP Score?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Z\u00f6gern Sie nicht <a href=\"https:\/\/www.wpconsults.com\/de\/arbeit-mit-wpconsults\/\">kontaktieren Sie uns<\/a> oder <a href=\"mailto:info.wpconsults@gmail.com\">E-Mail<\/a> and I will help you trace the interaction that is dragging it down. Remember, INP is a JavaScript problem before it is anything else, so the fix is almost always closer than it looks.<\/p>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>INP is the Core Web Vital most WordPress sites now fail. This guide shows how to diagnose Interaction to Next Paint and fix it with a practical JavaScript diet, step by step.<\/p>","protected":false},"author":1,"featured_media":7675,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kb_optimizer_status":0,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","rank_math_title":"How to Improve INP on WordPress (Interaction to Next Paint)","rank_math_description":"INP is the Core Web Vital most WordPress sites fail. Here is how to diagnose Interaction to Next Paint and fix it with a real JavaScript diet, step by step.","rank_math_focus_keyword":"inp wordpress","_colophon_preset":"regular","_colophon_fc_on":"0","_colophon_edited_on":"0","footnotes":""},"categories":[89,7],"tags":[],"class_list":["post-7674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-seo","category-wordpress-tips-tutorials"],"_links":{"self":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts\/7674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/comments?post=7674"}],"version-history":[{"count":3,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts\/7674\/revisions"}],"predecessor-version":[{"id":7682,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/posts\/7674\/revisions\/7682"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/media\/7675"}],"wp:attachment":[{"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/media?parent=7674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/categories?post=7674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wpconsults.com\/de\/wp-json\/wp\/v2\/tags?post=7674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}