At a glance
- Budgets come in three kinds: quantity (bytes, requests), timing (lab metrics) and field outcomes (Core Web Vitals).
- Google publishes thresholds for Core Web Vitals, not per-resource size budgets; size limits are your own choice.
- Set budgets per template: the lobby, game page and cashier have different needs.
- Check budgets automatically in the build and review field results monthly.
Three kinds of budget
| Kind | Examples | Checked with | Strength |
|---|---|---|---|
| Quantity | Total transfer size, JavaScript at load, image bytes in first view, number of third-party origins | Build tools, lab runs | Easy to check on every change |
| Lab timing | Lab LCP, Total Blocking Time, CLS on a fixed profile | Lighthouse in CI | Catches regressions before release |
| Field outcome | LCP, INP and CLS at the 75th percentile | CrUX, your own monitoring | What players actually experienced |
Quantity budgets are proxies. A page can be light and still slow because of a long task or a late LCP image, and a heavier page can pass if its critical path is clean. Use quantity budgets to prevent creep, and field outcomes to judge success.
Set numbers from your own data
- Find a template that passes Core Web Vitals in the field on mobile, or the best one you have.
- Measure its transfer size by type (HTML, CSS, JavaScript, images, fonts, third-party) on a throttled mobile run.
- Use those values, or slightly lower ones, as the budget for that template.
- For failing templates, set a budget that moves toward the passing one in steps.
The budget calculator takes these per-type numbers, shows each share of the total and exports a CSV for your tracker. Its starting values are editorial examples, not a standard.
Per-template differences
- Lobby: images dominate. Budget image bytes in the first view separately from the total.
- Game page: the game itself often loads from a provider in a frame. Budget your own wrapper page and agree expectations with the provider.
- Cashier: third-party payment code dominates. Budget your own code and the number of extra origins.
- Sportsbook event page: JavaScript and live updates dominate. Budget script at load and main-thread time.
Turning size into time, carefully
It is tempting to convert a byte budget into seconds. The calculator shows raw transfer time, total kilobytes times eight divided by throughput, at an assumed connection speed. Lighthouse's standard mobile setting assumes 1.6 Mbps, at which 1,000 KB takes about five seconds to transfer before any latency. That figure is not an LCP estimate: the LCP depends on what loads first, priorities, server time, caching and rendering, and many bytes load after the LCP element has painted.
Enforce in the build
- Fail the build, or warn, when a template exceeds its quantity budget.
- Run lab checks on key templates for each pull request and compare medians of several runs.
- Require an owner and a reason for every new third-party script.
- Review field results monthly, by template and device, and adjust budgets as the site changes.
Questions
Is there an official page weight limit for good Core Web Vitals?
No. Google publishes thresholds for LCP, INP and CLS, not size limits. Any size budget, including our examples, is a team choice.
Should budgets include third-party scripts?
Yes, as their own line. They are often the fastest-growing part of a casino page.
What if marketing needs a heavier campaign banner?
Trade within the budget: compress, resize or remove something else, and check that the banner is not delaying LCP.
Sources
- web.dev, How the Core Web Vitals metrics thresholds were defined, last updated May 7, 2025.
- GoogleChrome, Lighthouse throttling documentation, no date shown.
- Chrome for Developers, How Lighthouse calculates your overall Performance score, footer date September 19, 2019.
- web.dev, Optimize Largest Contentful Paint, last updated March 31, 2025.