Skip to main content

Web Vitals Budget Planner

Set LCP, CLS, and INP targets for your page type and get a full resource budget breakdown with pass/fail indicators.

✓ Page type presets ✓ Resource size limits ✓ Third-party budget ✓ Google thresholds reference

Page Type

Google Thresholds

LCP
Good ≤2.5s NI ≤4.0s Poor >4.0s
CLS
Good ≤0.1 NI ≤0.25 Poor >0.25
INP
Good ≤200ms NI ≤500ms Poor >500ms

Active Targets

Resource Budget Breakdown

Optimization Rules

Third-Party Script Budget

Frequently Asked Questions

What are Core Web Vitals?▼

Core Web Vitals are a set of real-world metrics Google uses to measure user experience: LCP (Largest Contentful Paint) measures loading performance, CLS (Cumulative Layout Shift) measures visual stability, and INP (Interaction to Next Paint) measures responsiveness. Google uses these metrics as ranking signals in Search. All three are measured in field data from real users via the Chrome User Experience Report (CrUX).

What is a performance budget?▼

A performance budget is a set of limits on metrics that affect website performance — page weight, resource sizes, number of requests, or Core Web Vitals scores. By setting a budget before building a feature, you create a constraint that forces you to optimize. Budgets should be tied to your user-facing targets (e.g., LCP ≤ 2.5s on 4G) and enforced in CI/CD using tools like Lighthouse CI or bundlesize.

How is the hero image size budget calculated?▼

The hero image size limit is estimated by assuming a 4G connection speed of approximately 10 Mbps (1.25 MB/s) and allocating a fraction of your LCP budget to the hero image download. Since the hero image is typically the LCP element, it must be downloaded and decoded before LCP fires. The formula used here is: LCP target (seconds) × 100 KB/s network allowance. Optimize with modern formats (WebP/AVIF), responsive srcset, and priority fetchpriority attribute.

What is INP and how does it differ from FID?▼

INP (Interaction to Next Paint) replaced FID (First Input Delay) as a Core Web Vital in March 2024. FID only measured the delay before the first interaction was processed. INP measures the latency of ALL interactions throughout the page lifecycle — clicks, taps, and keyboard inputs — and reports the worst percentile. A poor INP usually means too much long-task JavaScript blocking the main thread.

What causes CLS and how do I fix it?▼

CLS is caused by content that shifts after the initial render: images without explicit width/height, ads that expand, web fonts causing text reflow (FOUT), or dynamically injected content above existing content. Fixes: always set explicit dimensions on images and video elements, use font-display: optional or preload fonts, reserve space for ads with min-height, and avoid inserting content above the fold after page load.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →