Core Web Vitals Remediation Checklist
Use this Core Web Vitals remediation checklist to diagnose TTFB, LCP, INP, and CLS, sequence fixes by dependency, and verify results through rolling field data.
Core Web Vitals remediation checklist
Checklist: Core Web Vitals remediation. Timebox: one working day to confirm scope and diagnosis; one to ten working days for a typical fix and release, depending on whether the cause sits in an asset, shared template, third-party script, origin, or CDN. Field verification follows the rolling 28-day data window and is scheduled separately. Owner: a performance engineer or senior front-end engineer is accountable. The technical SEO lead owns the field acceptance criteria; platform, design, analytics, and product owners approve changes in their systems.
This checklist turns a diagnosed performance finding into a released, field-verified fix. Core Web Vitals are Google’s real-user measures of loading, responsiveness, and visual stability: Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS). Time to First Byte (TTFB) and First Contentful Paint (FCP) are supporting diagnostic metrics. They are included because a slow response or blank screen consumes the time available to achieve a good LCP.
Why this checklist, and why here
This checklist consumes the remediation register from the performance and Core Web Vitals audit . That earlier phase identifies the failing metric, affected URL and template, real-user baseline, repeatable lab condition, suspected cause, priority, and owner. Remediation begins only after those fields exist. Otherwise, a developer is asked to “make the site faster” and will naturally change whatever a tool highlights first, whether or not it causes the field failure.
Diagnosis must narrow three levels before action: which metric, which template, and which element or task. An origin-wide TTFB failure needs a platform fix; LCP that fails only on article pages may come from their hero component; INP after opening a product filter may come from one event handler; CLS on promotional pages may come from an unreserved banner. Treating these as one problem produces broad changes and unclear ownership.
Order matters inside the fix. TTFB is upstream: until the first response byte arrives, the browser cannot discover normal HTML resources or paint page content. If TTFB is poor, fix response generation, caching, redirects, and edge delivery before compressing the LCP image. After response time is inside budget, work forward through resource discovery, resource download, rendering, interactions, and layout stability.
Skipping this checklist leaves the audit as a report. Running it before diagnosis invites symptom chasing: compressing an image when late discovery dominates or deferring scripts when the origin is slow.
Inputs and outputs
The outputs let a future owner reproduce the failure, identify what shipped, and distinguish lab acceptance from field confirmation.
| Direction | Item | Why it is needed | Acceptance condition |
|---|---|---|---|
| Input | Diagnosed finding | Prevents generic optimization and assigns one measurable problem. | Names metric, p75 field value and window, URL/origin level, template, suspect element or task, severity, and owner. |
| Input | Representative test matrix | Ensures the fix covers real page variation. | Includes a typical and heavy URL per affected template, relevant device, geography, consent/login state, and cold/warm cache condition. |
| Input | Repeatable lab evidence | Makes immediate comparison possible. | Preserves tool version, test profile, trace or waterfall, repeated-run baseline, and the identified LCP element, long task, shift source, or slow response span. |
| Input | Release constraints | Stops a performance change from silently breaking revenue, consent, analytics, design, or accessibility. | Lists required behavior, third-party obligations, rollback owner, release window, and protected journeys. |
| Output | Implemented remediation | Records the smallest change that removes the diagnosed cause across scope. | Links change and release identifiers to the finding and states affected templates, components, infrastructure, and configuration. |
| Output | Immediate acceptance pack | Proves that the release works before field data catches up. | Contains production checks, repeated lab results, request reliability, critical-journey tests, regression results, and release annotation. |
| Output | Field verification record | Establishes the real-user outcome. | Records comparable CrUX level, p75 metric, rolling window, scope, threshold, limitations, decision, owner, and date. |
| Output | Monitoring handoff | Prevents recurrence from becoming a new audit. | Defines alert or review threshold, dashboard, cadence, responsible owner, and reopen rule. |
The checklist
Complete items 1–4 before changing production. Items 5–8 implement the dependency-ordered fix. Items 9–11 separate immediate release acceptance from field verification.
1. Lock the failing metric, template, and element
What: reduce the finding to one metric, affected template set, and named element, request, task, or server span. Why: a site-wide score does not identify deployable work, and two URLs can fail for different reasons. How: join the p75 failure to traces and compare affected and unaffected templates; name the LCP element and delay, INP interaction and task, CLS element and trigger, or TTFB request path and cache state. Tool: CrUX evidence, browser trace, waterfall, server timing, template inventory, and issue tracker. Done when: evidence supports “metric X fails on template Y because Z creates delay or movement under condition C.”
2. Confirm scope with representative pages
What: test the finding on a typical and worst-case URL for every implicated template, plus one unaffected control. Why: a one-page fix may hide a shared defect, while a global change may be unnecessary when one content variant causes the problem. How: hold device, network, location, consent, login, and cache conditions constant; compare component use, asset weight, response timing, third-party activity, and content length. Tool: analytics, template inventory, browser performance tools, request monitor, and a test matrix. Done when: every in-scope template is marked affected or control, each has reproducible evidence, and the release scope names the component, route, asset family, or platform layer that must change.
3. Set the budget and protect required behavior
What: define the numeric target, regression guardrails, and functions that must survive. Why: “faster” has no acceptance boundary, and deleting a consent manager, analytics tag, accessible focus behavior, or product feature can create a misleading pass. How: set the target from the decision table below, add a stricter internal buffer where repeated tests vary, and list critical journeys and non-target metrics to retest. Tool: finding register, product requirements, analytics plan, accessibility checks, and performance budget. Done when: the ticket states target metric and value, lab acceptance method, field acceptance method, protected behaviors, allowed tradeoffs, rollback condition, and named approvers.
4. Check TTFB before front-end work
What: measure TTFB under cold and warm cache conditions from audience-relevant locations. Why: TTFB is included in every subsequent paint time; front-end work cannot recover time already spent waiting for HTML. How: split the request into DNS, connection, redirects, CDN wait, origin compute, database or upstream API time, and streaming behavior where instrumentation allows. Compare cache hit and miss responses and confirm that personalization or cookies do not disable caching unexpectedly. Tool: request waterfall, server timing, CDN and origin logs, application profiling, and synthetic request monitoring. Done when: TTFB is within the agreed budget or a separate blocking platform finding is owned and scheduled. Do not begin LCP polish while a poor TTFB remains unexplained.
5. Remove server and delivery delay first
What: correct slow origin response, cache misses, redirects, or distant delivery. Why: these causes delay every element and often affect multiple templates. How: remove avoidable redirects; cache safe HTML and data; reduce slow database or API work; move work off the critical path; tune CDN routing and cache keys. Never cache private responses without an approved design. Tool: application profiler, query traces, CDN configuration, response headers, monitoring, and load testing. Done when: repeated cold and warm tests meet budget, cache variants remain correct, errors do not regress, and priority URLs return the intended response without an extra hop.
6. Fix LCP discovery, transfer, and render delay
What: shorten Largest Contentful Paint , when the largest visible image or text block renders. Why: oversized heroes are common, but late discovery, low priority, blocking CSS, JavaScript, or fonts can dominate. How: serve a correctly sized responsive image; do not lazy-load the above-the-fold LCP asset; expose it in initial HTML; prioritize or preload only with evidence; remove render blocking; and use subsetted, cacheable fonts with a suitable fallback. Tool: LCP breakdown, waterfall, image inspection, coverage report, trace, and visual comparison. Done when: the intended LCP element is consistent, its dominant delay falls, representative pages meet budget, and bandwidth, text visibility, and rendering do not regress.
7. Fix INP at the responsible interaction
What: reduce the interaction responsible for poor Interaction to Next Paint , the responsiveness metric. Why: deleting arbitrary JavaScript may not touch the slow event. How: separate input, processing, and presentation delay; break long tasks; remove synchronous work; defer nonessential third parties; avoid repeated layout; reduce rerenders; and yield for paint. Test realistic hardware with production third parties. Tool: interaction trace, main-thread profile, long-task entries, framework profiler, and realistic device. Done when: critical interactions work, the responsible task meets the repeated-test budget, the field proxy is documented, and analytics, consent, keyboard, and screen-reader behavior do not regress.
8. Fix CLS by reserving the final layout
What: prevent movement contributing to Cumulative Layout Shift
, the visual-instability score. Why: images, fonts, ads, banners, embeds, and asynchronous components can all shift the interface. How: set intrinsic dimensions or aspect-ratio; reserve slots for dynamic modules; use compatible font fallbacks; and animate with transforms. Tool: layout-shift regions, trace, filmstrip, visual regression tests, and throttled browser. Done when: every material shift cluster has a named source, pages meet the CLS budget through load and critical interactions, and reserved space obscures no control.
9. Re-test the whole metric set and protected journeys
What: compare the release candidate with the frozen baseline under identical conditions, then test production. Why: improving one metric can damage another: deferring JavaScript may improve LCP but worsen the first interaction, while an aggressive font change may improve paint timing but create layout shift. How: run several controlled samples, compare a declared statistic rather than the best run, inspect traces, exercise protected journeys, verify response correctness, and test affected and control templates. Tool: Lighthouse or equivalent lab runner, browser performance tools, request monitor, visual and functional tests, and release checklist. Done when: the target metric meets its lab budget across the declared repeated-run method, TTFB/FCP/LCP/INP/CLS show no critical regression, protected behavior passes, production serves the intended change, and rollback is not triggered.
10. Annotate the release and schedule field review
What: record the deployment timestamp, changed scope, target metric, expected direction, and field-review dates. Why: CrUX uses a rolling 28-day window, so pre-release experiences remain in the reported p75 after deployment. Without an annotation, the team may call a good fix ineffective too early or attribute later movement to the wrong release. How: attach the production version to the finding, check errors immediately, record early field readings without treating them as final, and schedule an owner to review a sufficiently refreshed window. Tool: deployment log, issue tracker, CrUX, AmICited Web Vitals, and monitoring. Done when: the ticket is marked Lab accepted, the release annotation and immediate evidence are attached, and a named owner and calendar date exist for field verification.
11. Verify against field data and close or reopen
What: compare like-for-like p75 field data after the rolling window has sufficiently refreshed. Why: real-user devices, networks, geography, cache behavior, consent states, and interactions cannot be represented by one lab run. How: use the same CrUX level—URL or origin—the same metric, and a comparable audience scope; account for partial rollout and other releases; inspect template representatives rather than relying only on an origin aggregate. If the result misses, compare the current trace with the original cause statement and reopen diagnosis instead of stacking unrelated tweaks. Tool: AmICited Web Vitals, CrUX history, release annotations, analytics segments, and the evidence pack. Done when: the target meets the agreed p75 threshold and scope with limitations recorded, at which point status becomes Field verified; or the ticket is explicitly reopened with new evidence, owner, and next hypothesis.
Tools in AmICited
Open AmICited Web Vitals to view LCP, INP, CLS, FCP, and TTFB from CrUX for your domain and tracked competitors. Use it at diagnosis to capture the field baseline and after deployment to verify the rolling field result. A blank value means insufficient eligible field data, not zero and not a pass. The product view supports the verdict; traces, server timing, and browser profiles still identify the cause.
Use Performance Impact to connect page-level performance evidence with citation position and identify valuable slow pages. That association helps prioritize remediation but does not prove that performance alone caused a citation outcome. Preserve relevance, content, authority, and release context when interpreting movement.
For the product workflow, follow How to Check Your Core Web Vitals in AmICited . The tutorial explains where the metrics appear and how competitor comparisons work; this checklist governs diagnosis, implementation, and acceptance.
Decision rules: what bad looks like
Use the 75th percentile, abbreviated p75, for field decisions: 75% of eligible recorded experiences are at or below that value. A boundary value belongs to the better band. LCP, INP, and CLS determine Core Web Vitals status; TTFB and FCP are supporting measures used to sequence and diagnose the work.
| Metric | Good | Needs improvement | Poor | Remediation rule |
|---|---|---|---|---|
| TTFB | ≤ 800 ms | > 800–1,800 ms | > 1,800 ms | Fix poor response delivery before front-end paint work; investigate any needs-improvement TTFB that consumes the LCP budget. |
| FCP | ≤ 1.8 s | > 1.8–3.0 s | > 3.0 s | Compare with TTFB; then remove render blocking or client-only blank-screen delay. |
| LCP | ≤ 2.5 s | > 2.5–4.0 s | > 4.0 s | Break the time into TTFB, discovery, transfer, and render delay; fix the largest evidenced component. |
| INP | ≤ 200 ms | > 200–500 ms | > 500 ms | Profile the actual slow interaction; reduce its input, processing, or presentation delay. |
| CLS | ≤ 0.10 | > 0.10–0.25 | > 0.25 | Name the shift source and reserve or stabilize its final layout across the visit. |
Apply these rules in order:
- A timeout, server error, incorrect response, or broken critical journey blocks release regardless of metric score.
- A poor TTFB is upstream of LCP and is remediated first. Do not claim an image-only solution while the server has already consumed most of the paint budget.
- Poor field metrics outrank needs-improvement metrics. Within one band, prioritize shared template causes, traffic, and business-critical journeys.
- A blank URL-level field value is unknown. Use lab evidence and a documented proxy, but do not relabel unknown as good.
- One passing lab run is insufficient. Declare the device/network profile and repeated-run method before testing.
- A fix is Lab accepted when deployed behavior and controlled tests pass. It is Field verified only after comparable rolling field data meets the agreed threshold.
- If origin data passes but a high-traffic template fails, the template result wins for that scope. Aggregation must not erase a concentrated user problem.
Deliverable: the remediation and verification packet
Hand over one ticket or register entry per root cause, with child scopes where a cause affects several templates. Use a spreadsheet, issue tracker, or engineering document, but preserve these fields:
Finding ID and primary metric:
Field source: URL | Origin
Field p75, band, and 28-day window:
Affected templates and representative URLs:
Control template and URL:
Element, interaction, request, or server span:
Cause statement and evidence links:
Lab profile and repeated-run baseline:
Target, guardrails, and protected journeys:
Chosen remediation and rejected alternatives:
Engineering owner, approvers, and dependencies:
Release/version ID and deployment timestamp:
Immediate production and lab results:
CrUX field-review owner and date:
Comparable field result and limitations:
Monitoring threshold and reopen rule:
Status: Open | Implementing | Lab accepted | Field verified | Reopened | Accepted risk
Attach traces, waterfalls, server spans, shift recordings, interaction profiles, test output, and release annotation. Accepted risk needs scope, reason, approver, expiry, and monitoring trigger; it is not a pass.
The packet is accepted when another engineer can reproduce the original problem, identify why this change addresses it, confirm what reached production, and repeat the field comparison without asking the original investigator to reconstruct the work.
What goes wrong
Optimizing before isolating the cause. Generic compression and script deletion replace diagnosis. Require metric-template-element evidence first.
Compressing the hero while the origin is slow. A smaller image cannot render before HTML arrives. Measure and remediate TTFB first when it is outside budget.
Fixing the wrong shift. CLS may come from an ad, consent banner, font, embed, or hydrated component. Name the shift source.
Deferring every script. Indiscriminate deferral can break consent ordering, analytics, navigation, forms, or the first interaction. Change the responsible execution path and regression-test required behavior.
Verifying one URL after a shared-template release. The selected example can pass while a heavier content variant or another component configuration still fails. Test typical, heavy, and control pages.
Reading origin-level data as a template pass. Healthy high-volume pages can mask a weak category, article, or product template. Keep the diagnosis and acceptance at the narrowest reliable scope.
Closing on the day of deployment. Immediate tests establish lab acceptance. They do not replace the rolling field-data window.
Waiting 28 days to discover a broken release. Field confirmation takes time, but status codes, errors, journeys, visual stability, and controlled metrics are checked immediately. Rolling data is not an excuse to skip release QA.
Next phase: continuous monitoring and iteration
Hand the field verification record, release annotation, affected templates, limitations, and thresholds to continuous refresh and iteration . It needs a stable baseline so later content, media, template, campaign, and third-party changes can be compared rather than rediscovered as unexplained movement.
The next owner records who watches each threshold, where the evidence lives, how often it is reviewed, and what reopens remediation. A newly poor metric, repeated needs-improvement trend across the fully refreshed window, changed LCP element, new slow interaction, or template release that alters the diagnosed path should reopen the checklist at item 1. Do not automatically repeat the previous fix: the same metric can fail for a different element after a redesign.
The handoff is complete when field status is explicit, every accepted limitation has an owner and review date, and monitoring can connect a regression to a template and release. If field verification remains pending, the next owner receives the scheduled review date and the ticket remains Lab accepted, not closed.
FAQ
Core Web Vitals remediation FAQ
Should we fix TTFB before LCP?
Why did Lighthouse improve while our Core Web Vitals still fail?
How many templates should a remediation cover?
What if a URL has no CrUX field data?
When can a remediation ticket be closed?
More tutorials in this section
Ready to put it into practice?
Free check · 7-day trial · no credit card