XML Sitemap: How to Create, Optimize and Submit It
XML sitemap guide: what to include, how a valid file looks, how to submit it in Search Console and which mistakes make it useless to Google.
Key takeaways
Core Web Vitals are three metrics Google uses to describe real-world page experience: LCP (how fast the main content appears), INP (how fast the page reacts to a click or tap) and CLS (how much content jumps around while loading). Google says they are used by its ranking systems, but they do not replace content relevance.
The good news is that the thresholds are clear and most problems have repeatable causes: a large image loaded late, third-party scripts, missing image dimensions. The less good news is that many people optimize for the wrong score. This guide shows what to measure, where to read real-user data and what to fix, in order of impact. Speed work is one of the central parts of technical SEO, and for a quick check you can use our site speed test.
Each metric has three zones: good, needs improvement and poor. Google assesses a page, or a group of similar pages, at the 75th percentile of real visits, separately for mobile and desktop. In other words, three out of four visits must fall within the good threshold.
| Metric | What it measures | Good | Needs improvement | Poor |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | When the largest visible element appears | ≤ 2.5 s | 2.5–4 s | > 4 s |
| INP (Interaction to Next Paint) | Delay until the page visually responds to interactions | ≤ 200 ms | 200–500 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | Unexpected movement of content | ≤ 0.1 | 0.1–0.25 | > 0.25 |
A few clarifications to avoid confusion:
One useful related term is TTFB (time to first byte). It is not one of the three metrics, but it feeds directly into LCP: if the server answers slowly, everything else starts late.
Google’s documentation says that Core Web Vitals are used by its ranking systems, and that good scores do not guarantee a top position. It also says Search always seeks to show the most relevant content, even when page experience is sub-par. In short: a fast site will not outrank a far more relevant one, but when content is similarly helpful, a great page experience can contribute to success.
Think of the effect in two layers:
So treat speed as an investment in conversions and crawling, not as a ranking trick. Equally, strong content on a page that jumps and lags never reaches its potential. For that content side, see our guide to E-E-A-T.
This is where most confusion starts. There are two kinds of data:
The practical consequence: Lighthouse in its standard mode cannot measure INP, because a simulated page load contains no real user interactions. In the lab you see an approximation, Total Blocking Time. That is why a superb lab score can coexist with a poor field INP.
Where to look:
web-vitals JavaScript library reports the actual values your users experience:import { onLCP, onINP, onCLS } from 'web-vitals';
function send(metric) {
navigator.sendBeacon('/vitals', JSON.stringify({
name: metric.name, value: metric.value, id: metric.id
}));
}
onLCP(send);
onINP(send);
onCLS(send);If your traffic is low, your own measurements may be the only field data you get.
LCP breaks down into four phases, and knowing which one is costing you saves hours of guessing. The web.dev guidance suggests a rough split, which it describes as a guideline and not a strict rule:
The two “delay” phases should approach zero. If they are large, the problem is not the image itself but how you load it. The fixes, in order:
loading="lazy" on the LCP image. It is a common mistake, especially in themes that defer all images. The main image must load right away.fetchpriority="high" attribute on the likely LCP image helps the browser request it sooner:<img src="/img/hero.webp" width="1200" height="630"
alt="Short description of the image" fetchpriority="high">INP rises when the page is busy and cannot respond to a tap. The culprit is usually long-running JavaScript on the main thread. Any task over 50 ms can block interactions.
button.addEventListener('click', async () => {
updateInterface(); // immediate visual response
await new Promise(r => setTimeout(r, 0)); // yield the main thread
heavyCalculation(); // the rest of the work
});CLS is the easiest metric to fix because the causes are few and predictable:
width and height attributes or the CSS aspect-ratio property so the browser reserves space before the download.font-display: swap, host fonts locally, preload the main one and pick a fallback with similar metrics:@font-face {
font-family: "Headline";
src: url("/fonts/headline.woff2") format("woff2");
font-display: swap;
}transform and opacity, which do not trigger layout shifts.Honesty helps here: not every page needs the same attention.
For an online store, where every second on mobile shows up as abandoned carts, the priority is higher; the context is discussed in our ecommerce SEO guide. The same logic applies to any business whose customers browse mostly on phones.
Core Web Vitals are not a goal in themselves but a way to check real experience. A simple plan:
web-vitals measurement if field data is missing.If you would rather have a team run the checks and the fixes, start with our technical SEO service or write to us via the contact page.
Frequently asked questions
The performance score comes from a lab test, run once on a simulated device. Search Console uses field data collected from real users over 28 days. Slow networks, older phones and late-loading scripts show up only in real-world data, not in the test.
There is no all-green-or-penalty rule. Google treats page experience as one signal among many, and content relevance remains essential. In practice, fix the red metrics first, especially on pages that earn traffic and sales, rather than chasing a perfect score everywhere.
First Input Delay measured only the delay of the first interaction. INP replaced it as a Core Web Vital in March 2024 and measures responsiveness across the whole visit, reflecting roughly the slowest interactions. It is closer to what users actually feel, which is why many sites find it harder to pass.
The report uses real Chrome user data and appears only for URLs with enough traffic. A new or low-traffic site may not have the volume. In that case, rely on lab tests and your own measurements with the web-vitals library until real data accumulates.
Yes, with realistic expectations. You can gain a lot from images, caching, fonts and removing unneeded plugins. If the theme loads hundreds of kilobytes of JavaScript for decorative effects, a ceiling remains, and changing the theme or page builder becomes the right call.
Related service
Keep reading
XML sitemap guide: what to include, how a valid file looks, how to submit it in Search Console and which mistakes make it useless to Google.
JavaScript SEO explained: how Google renders pages, which rendering model to choose (SSR, SSG, CSR), common errors and how to test indexing step by step.
Hreflang explained: URL structures, the three ways to implement it, language codes, x-default, common mistakes and how to check a multilingual site.
Send us your website address and we’ll reply with a free initial analysis and a concrete SEO strategy — no strings attached.