Fixing Core Web Vitals on a WordPress and Elementor Site
Core Web Vitals failures on WordPress almost always trace to four things: an oversized hero image, too much JavaScript, third-party scripts loaded in the head, and elements without reserved space. Fix those in order and most sites pass. Adding another optimisation plugin before fixing them usually makes diagnosis harder, not performance better.
Core Web Vitals measure three experiences: how quickly the main content paints, how quickly the page responds to input, and how much the layout jumps. WordPress and Elementor can pass all three. They just make it easy to fail.
What do the three metrics actually measure?
Each metric targets a different failure. Knowing which one you are failing tells you which part of the stack to look at.
| Metric | What it measures | Good threshold | Usual culprit |
|---|---|---|---|
| LCP | Time to paint the largest visible element | Under 2.5s | Hero image, slow server, render-blocking CSS |
| INP | Responsiveness to user interaction | Under 200ms | JavaScript execution, bloated event handlers |
| CLS | Unexpected layout movement | Under 0.1 | Unsized images, injected banners, web fonts |
Thresholds and the metrics themselves have changed before. INP replaced First Input Delay, and Google has adjusted guidance more than once, so confirm current thresholds in Google's web.dev documentation before reporting against them.
Measure field data, not lab data. Lighthouse on your laptop tells you about your laptop. The Chrome User Experience Report and your own real-user monitoring tell you what visitors on a mid-range Android phone on a mobile network actually experience, which is what gets assessed.
How do you fix LCP on an Elementor site?
Start with the hero. On nearly every Elementor homepage, the largest contentful element is the hero image or the background of the first section, and it is almost always the problem.
Get the hero image right
Four changes, in this order.
- Export at the actual rendered size. A 3000px wide image in a 1440px container wastes most of its bytes.
- Serve WebP or AVIF with a JPEG fallback.
- Exclude the hero from lazy loading. Lazy loading the LCP element delays the exact paint being measured.
- Preload it with
<link rel="preload" as="image">so discovery does not wait for CSS.
If the hero is a CSS background image set in Elementor, the browser cannot discover it until the stylesheet parses. Use a real <img> element for the LCP image where you can, and keep decorative backgrounds as backgrounds.
Reduce render-blocking CSS
Elementor loads global styles plus per-page CSS. Enable its improved CSS loading so widget styles load only on pages that use them. Then remove stylesheets from plugins that are not active on the page, which is usually a handful of sliders, forms and galleries loading sitewide for no reason.
Fix the server
Time to first byte sets the floor for LCP. Page caching, object caching, PHP 8.x, HTTP/2 or HTTP/3, and a CDN with a point of presence near your audience all help. For a UAE audience, latency to a European or Indian origin is measurable, so check where your edge nodes actually sit.
# Example robots directive: keep crawlers out of endpoints
# that generate uncacheable load
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
How do you fix INP?
INP is a JavaScript problem. Reducing it means running less JavaScript on the main thread during and after interaction, which on WordPress usually means running fewer plugins.
Audit first. Open the performance panel, interact with the page, and find the long tasks. You will typically find three sources: a page builder's own scripts, analytics and tag managers, and a chat or popup widget.
Then act.
- Defer anything not needed for first interaction. Marketing pixels, heatmaps and chat widgets rarely need to load before the user does something.
- Load third-party scripts after interaction or after a short idle delay rather than in the head.
- Replace plugins whose only job is one small feature. Four plugins each adding 60KB of JavaScript to serve one widget is a trade worth reversing.
- Avoid jQuery-dependent chains where a few lines of vanilla JavaScript will do.
Tag managers deserve particular scrutiny. A container holding fifteen historic tags, half of them for campaigns that ended, will quietly tax every interaction. We treat tag hygiene as part of performance marketing rather than as a separate technical chore, because the tags exist to serve campaigns.
How do you fix CLS?
Reserve space for everything that loads late. Layout shift happens when the browser has to re-flow because something arrived without dimensions.
Five fixes handle most cases.
- Set explicit
widthandheightattributes on every image, including those in Elementor widgets. - Give embeds and iframes a fixed aspect ratio container.
- Use
font-display: swapwith a metric-compatible fallback so text does not reflow when the web font loads. - Reserve a fixed height for cookie banners, promotional bars and announcement strips instead of injecting them above existing content.
- Avoid animating layout properties. Animate
transformandopacity, notheightandtop.
Sliders are a repeat offender. A slider that initialises after paint will shift everything below it. Either give the slider container a fixed height, or replace it with a static hero, which usually performs better anyway.
What is the right order of work?
Sequence matters, because fixing the wrong thing first hides the real problem.
- Measure field data for the worst five templates, not just the homepage.
- Fix the hero image on each template.
- Fix server response time and enable caching properly.
- Reduce render-blocking CSS and JavaScript.
- Defer or delay third-party scripts.
- Reserve space for every late-loading element.
- Audit the plugin list and remove duplicated functionality.
- Re-measure after 28 days, since field data is a rolling window.
That last point catches people out. You will not see field data move the day after a deployment. Lab scores confirm the change landed. Field data confirms it mattered.
When is the site the wrong thing to optimise?
Sometimes the honest answer is that the build is past saving. A site carrying forty plugins, three page builders and a decade of theme edits will cost more to tune than to rebuild cleanly.
The signal is simple: if the fixes above require touching code you cannot safely change, rebuild the templates. We approach that as a web design and development project with performance budgets set before design begins, supported by UI and UX design decisions that keep hero sections light. We apply the same budgets to our own products, including GameHarbor, where interface weight is a product decision rather than a marketing one. Examples of client work sit in our case studies.
Frequently asked questions
Can an Elementor site pass Core Web Vitals?
Yes. Elementor adds markup and CSS overhead, but the usual failures come from unoptimised hero images, too many plugins and heavy third-party scripts rather than the builder itself. A disciplined Elementor build with lean templates and server-side caching can pass on mobile.
What is the most common cause of poor LCP on WordPress?
An oversized, lazy-loaded hero image. The largest element is usually the hero, and lazy loading it delays the very paint being measured. Serve it in WebP or AVIF at the correct dimensions, preload it, and exclude it from lazy loading.
Do caching plugins fix Core Web Vitals on their own?
No. Caching improves server response time, which helps LCP, but it does not reduce JavaScript execution that drives INP, and it does not stop layout shift. Caching is one layer. Image discipline, script reduction and reserved space for dynamic elements do the rest.
If your Core Web Vitals report is red and you have already tried three optimisation plugins, the problem is architectural. We will measure it properly and tell you whether to tune or rebuild. Call +971 52 961 4900, email info@oldport.ae, or use the contact page.
Keep reading
Schema Markup That Actually Matters for a Business Website
The seven schema types worth implementing on a business website, with short correct JSON-LD examples and the mistakes…
Specifying a custom PC build for business and creative work in the UAE
How to specify a custom PC build in Dubai for business and creative work: where to spend, thermal…
Headless vs WordPress for a UAE Business Site: Choosing Honestly
An honest comparison of headless and traditional WordPress for a UAE business site, covering cost, editing, performance and…














