Performance Budget Calculator
Set realistic performance budgets for your web projects. Predict load times across devices and connection speeds. Export Lighthouse CI configs to enforce budgets in your build process.
Loading Performance Budget Calculator...
Why Performance Budgets Matter
Performance budgets aren't just technical constraints—they're business imperatives that directly impact user experience, conversions, and revenue
User Experience Impact
53% of mobile users abandon sites that take longer than 3 seconds to load. Performance directly affects user satisfaction and engagement.
Conversion & Revenue
Every 100ms of load time improvement can increase conversion rates by 1%. Amazon found that 100ms delay costs them 1% in sales.
SEO Rankings
Google uses Core Web Vitals as ranking factors. Faster sites rank higher and get more organic traffic.
Mobile Performance
Over 60% of web traffic is mobile. Users on slower devices and networks need optimized experiences.
How Performance Budgets Work
A systematic approach to maintaining fast, user-friendly experiences
Define Your Budget
Set size limits for each resource type (HTML, CSS, JS, images, fonts) based on your target load time and audience.
Test & Measure
Use tools like Lighthouse, PageSpeed Insights, and WebPageTest to measure your current performance against your budget.
Enforce in CI/CD
Integrate Lighthouse CI into your build process to automatically fail builds that exceed your performance budget.
Monitor & Iterate
Continuously monitor real user metrics (RUM) and adjust your budget as your application evolves.
Understanding Core Web Vitals
Google's user-centric metrics for measuring real-world performance
| Metric | Description | Target Values |
|---|---|---|
| Largest Contentful Paint (LCP) | Measures loading performance. Should occur within 2.5 seconds of page load. | < 2.5s2.5s - 4s> 4s |
| First Input Delay (FID) | Measures interactivity. Should be less than 100 milliseconds. | < 100ms100ms - 300ms> 300ms |
| Cumulative Layout Shift (CLS) | Measures visual stability. Should maintain a score of less than 0.1. | < 0.10.1 - 0.25> 0.25 |
| Time to Interactive (TTI) | When the page becomes fully interactive. Target under 3.8 seconds on mobile. | < 3.8s3.8s - 7.3s> 7.3s |
| First Contentful Paint (FCP) | When the first content appears on screen. Should be under 1.8 seconds. | < 1.8s1.8s - 3s> 3s |
Quick Wins to Reduce File Sizes
Proven strategies to significantly improve performance without sacrificing features
Optimize Images
Convert images to modern formats like WebP and AVIF. Can reduce file sizes by 30-70% while maintaining quality.
- Use our Image Converter tool to convert PNG/JPG to WebP/AVIF
- Compress images before uploading
- Use responsive images with srcset
- Lazy load images below the fold
- Consider using CDN image optimization services
Code Splitting
Split JavaScript bundles so users only download code they need. Modern frameworks support this out of the box.
- Use dynamic imports for route-based splitting
- Lazy load heavy components and libraries
- Split vendor code from application code
- Use React.lazy() or Next.js dynamic imports
- Analyze bundle sizes with webpack-bundle-analyzer
Enable Compression
Gzip and Brotli compression can reduce text-based assets by 60-80%.
- Enable Brotli compression on your server (better than Gzip)
- Pre-compress static assets at build time
- Ensure Content-Encoding headers are set correctly
- Most CDNs handle compression automatically
Optimize Fonts
Web fonts can be heavy. Optimize loading strategy and use variable fonts when possible.
- Use font-display: swap for faster perceived load
- Subset fonts to only include needed characters
- Use variable fonts instead of multiple weights
- Preload critical fonts
- Consider system font stacks for faster loads
Remove Unused Code
Tree shaking and dead code elimination can significantly reduce bundle sizes.
- Use modern build tools that support tree shaking
- Audit dependencies with webpack-bundle-analyzer
- Remove unused CSS with PurgeCSS or similar
- Use imports from specific paths (e.g., lodash/debounce vs lodash)
- Regularly review and remove unused dependencies
Lazy Loading
Defer loading of non-critical resources until they are needed.
- Lazy load images with loading="lazy" attribute
- Defer non-critical JavaScript
- Use Intersection Observer for dynamic loading
- Lazy load third-party embeds (videos, maps, social widgets)
- Consider lazy loading below-the-fold content
Resource Hints
Help browsers prioritize and preload critical resources.
- Use <link rel="preload"> for critical resources
- Use <link rel="prefetch"> for next-page resources
- Use <link rel="preconnect"> for third-party domains
- Use <link rel="dns-prefetch"> for DNS resolution
- Prioritize above-the-fold content
Use a CDN
Content Delivery Networks serve assets from locations close to users, reducing latency.
- Serve static assets from a CDN
- Use edge caching for dynamic content
- Enable HTTP/2 or HTTP/3 for multiplexing
- Configure proper cache headers
- Consider edge computing for API responses
Measuring Your Current Performance
Essential tools for auditing and monitoring web performance
Google PageSpeed Insights
Free tool that analyzes your page and provides both lab and field data with specific recommendations.
Best for quick audits and getting actionable recommendations
Lighthouse
Open-source automated tool built into Chrome DevTools. Provides comprehensive performance audits.
Best for development and detailed technical analysis
WebPageTest
Advanced testing tool that lets you test from multiple locations, devices, and connection speeds.
Best for detailed waterfall analysis and testing specific scenarios
Chrome DevTools Network Tab
Built-in browser tool for analyzing all network requests, timing, and resource sizes.
Best for real-time debugging during development
Lighthouse CI
Continuous integration tool that fails builds when performance budgets are exceeded.
Best for enforcing performance budgets in CI/CD
Setting Realistic Budgets
Strategic approaches to defining performance targets that balance user experience and feature requirements
Start with Target Load Time
Begin with a target load time (e.g., Time to Interactive under 3s on 3G) and work backwards to determine file size budgets.
Analyze Competitors
Use PageSpeed Insights to analyze competitor sites in your industry. Aim to be faster than the average.
Consider Your Audience
If your users are primarily on mobile or in regions with slower networks, be more aggressive with budgets.
Progressive Enhancement
Ensure core functionality works within your budget, then progressively enhance for better connections.
Allocate Strategically
JavaScript is most expensive (parsing + execution). Images are cheaper but add up. Balance based on your needs.
Industry Benchmarks
Typical performance budgets across different sectors
| Industry | JavaScript | Images | Total | Notes |
|---|---|---|---|---|
| News & Media | 150-300 KB | 400-800 KB | 800-1500 KB | Content-heavy, image-rich sites |
| E-commerce | 200-400 KB | 300-600 KB | 800-1500 KB | Product images, interactive features |
| Landing Pages | 100-200 KB | 200-400 KB | 400-800 KB | Conversion-focused, minimal complexity |
| SaaS/Dashboards | 300-600 KB | 100-300 KB | 600-1200 KB | Feature-rich applications |
| Blogs | 100-250 KB | 300-500 KB | 600-1000 KB | Content-focused with images |
Frequently Asked Questions
Common questions about setting, enforcing, and measuring web performance budgets
A performance budget is a set of limits you define for metrics that affect how fast a page feels: total page weight, JavaScript size, image size, number of requests, or timing metrics like Time to Interactive. Once set, you test builds against it and treat a budget-busting change the same way you'd treat a failing test: block it or negotiate a trade-off before it ships. Budgets exist because "make it fast" isn't actionable on its own. A number your team can check a build against is.
A widely-cited starting point (popularized by Addy Osmani's performance budgeting work) is around 170KB of JavaScript, minified and compressed, for a page that needs to become interactive quickly on a mid-range phone over a typical mobile connection. That's roughly 700KB once the browser unpacks and parses it. Desktop-only experiences can usually afford more, since desktops have faster CPUs and users are more likely on a fast, stable connection. These are starting points, not hard rules: use the calculator above to set a target load time for your actual device and connection mix, and it will work backward to a JS budget that fits your audience instead of a generic guideline.
Core Web Vitals are the outcomes Google measures from real users: Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS). A performance budget is the input you control to hit them. A budget on JavaScript size and image weight, for example, directly constrains LCP (large hero images and render-blocking JS delay it) and INP (heavier JS bundles mean more main-thread work before the page can respond to input). The current "good" thresholds are LCP under 2.5s, INP under 200ms, and CLS under 0.1, measured at the 75th percentile of real visitors in Chrome UX Report data. A budget that keeps you comfortably under these on a mid-tier device and 4G connection leaves margin for the slower quarter of your traffic that CrUX also counts.
No. Google retired FID as a Core Web Vital in March 2024 and replaced it with Interaction to Next Paint (INP). FID only measured the delay before the browser started processing a user's first interaction; INP measures the full latency of every interaction across the page's lifetime, which is a far better proxy for whether a page feels responsive while in use. If you're setting budgets today, track INP (good: under 200ms) rather than FID, and treat JavaScript execution time, not just download size, as the main lever that moves it.
Manual spot-checks don't scale. The standard approach is Lighthouse CI, which reads a budget config and fails the build when a page exceeds it, so a pull request that blows the budget gets caught before it merges instead of after users notice. Use the "Export Configs" section above to download a ready-made lighthouserc.json generated from the numbers you've set on this page, place it in your project root, and run lhci autorun in your CI pipeline (or as a pre-deploy step) to enforce it automatically on every build.
Set your budget for the slowest device and connection your real users have, not the one you develop on. Check your analytics for the most common device category and, if available, effective connection type; without that data, a mid-tier Android phone on a throttled 4G connection is a reasonable default, since it approximates a typical global mobile user rather than someone on a flagship phone and fast Wi-Fi. If a meaningful share of your traffic is in regions still on 3G, or your audience skews toward older or lower-end devices, budget for that tier explicitly instead of assuming the best case.
There's no universal ratio, but JavaScript deserves the tightest per-kilobyte budget because it costs more than any other resource type: the browser has to download, parse, compile, and execute it, while an image mostly just needs to decode and paint. A common allocation pattern spends roughly a quarter to a third of the total budget on JavaScript, close to half on images (usually the biggest category by bytes but relatively cheap per byte to process), and the remainder across CSS, fonts, and HTML. The industry benchmarks on this page give more concrete starting ranges by site type. Use those as a baseline, then adjust based on which resource type is driving your slowest metric today.

Need Help Optimizing Your Website?
I can audit your site, identify bottlenecks, and implement optimizations that dramatically improve load times and Core Web Vitals. I've helped businesses achieve 50%+ performance improvements.
Schedule Free Performance Audit