What the Third-Party Performance Budget Calculator does
This calculator sets a performance budget for all the third-party code on a site - analytics, tag managers, consent banners, ads, chat widgets, reviews, video and social embeds - splits it between the vendors by priority, and shows which ones are over their share of transfer size, requests and main-thread time. It then writes a short governance report you can put in front of the people who own each tag.
Third-party scripts are usually added one at a time by different teams, each reasonable on its own, and nobody owns the total. A budget turns that into a shared number with named owners: when the chat widget costs ten times its share, the conversation is about that widget, not about "the site being slow".
How to use it
- List the third parties as CSV: name, category, compressed transfer size in KB, number of requests, main-thread time in milliseconds, priority and loading method. Measure them in Chrome DevTools (the Network panel filtered by domain, and the Performance panel's bottom-up view grouped by domain) or from a Lighthouse report's third-party summary. You can also drop a CSV file.
- Mark each item essential, important or optional. Essential is anything the business cannot run without on that page, such as consent or core analytics; optional is anything that could be removed or loaded on demand.
- Enter the overall budget for third parties: total KB, requests and main-thread milliseconds. Leave any of them empty to skip it.
- Read the totals and meters, then the findings: which budgets are exceeded, which vendors use the most of their share, which load synchronously and which could sit behind a facade.
- Download the Markdown governance report or the CSV allocation and share them with the tag owners.
Reading the results
Each item's share of every budget is its priority weight - essential 3, important 2, optional 1 - divided by the sum of all weights. This is a convention A2Z uses to make the split explicit, not an industry standard; the point is that everyone can see and argue about the rule rather than about individual numbers.
Status compares the item's worst metric with its share: within below 80%, near from 80% to 100%, and over above 100%. The portfolio can be within budget while one item is over its share, and the other way round - the totals and the per-item statuses answer different questions.
Main-thread time is the metric that relates most directly to responsiveness (Interaction to Next Paint and Total Blocking Time). Transfer size and requests matter most on slow networks and for Largest Contentful Paint.
Worked example: a retail site with eight third parties
The retail example lists eight vendors totalling 1,593 KB, 47 requests and 1,645 ms of main-thread time, against a budget of 600 KB, 30 requests and 800 ms. All three budgets are exceeded. The weights are 3 x 3 for the essential analytics, tag manager and consent banner, 2 x 2 for the reviews widget and A/B testing, and 3 x 1 for chat, the ad pixel and product video: 16 in total.
Each essential item's share is 3/16 = 18.75%, or 112.5 KB and 150 ms; each optional item gets 1/16 = 6.25%, or 37.5 KB and 50 ms. The product video, at 650 KB, uses 17.3 times its transfer share, and the live chat uses 10.9 times (410 KB against 37.5 KB). The tag manager is near its limit at 93% of its main-thread share (140 of 150 ms).
Loading the video and chat behind click-to-load facades removes 1,060 KB and 820 ms from the initial page, which brings transfer to 533 KB and main-thread time to 825 ms - within the size budget and just 25 ms over on the main thread. The report also flags the consent banner and A/B test for loading synchronously.
Formulas and scoring rules
- Share
share(i) = weight(i) / sum of weights; weights essential 3, important 2, optional 1- Allocation
allocation(i, metric) = budget(metric) x share(i)- Use of share
use(i) = max over metrics of measured(i, metric) / allocation(i, metric)Over above 1.00, near from 0.80 to 1.00.- Budget used
used(metric) = sum of measured / budget(metric)Shown as whole percentages.
Limitations: what the result does not prove
- It uses the figures you enter. It does not load your pages or measure vendors; costs vary by page, device, consent state and ad auction, so measure on representative pages and a mid-range phone.
- Main-thread time attributed to a vendor depends on the tool that measured it, and scripts injected by a tag manager are sometimes counted against the tag manager instead of the vendor.
- The priority weights are a documented convention, not a law. Change the priorities if the split does not reflect your business.
- Budgets constrain cost, not value. A tag within budget can still be unnecessary, and one over budget can be worth keeping - the report is a basis for that decision, not the decision itself.
Privacy: where your data goes
Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.
Standards and sources
- web.dev - Performance budgets 101
- web.dev - Loading third-party JavaScript
- Chrome for Developers - Lighthouse: Reduce the impact of third-party code
- Chrome for Developers - Lazy load third-party resources with facades
Frequently asked questions
What is a third-party performance budget?
A limit on how much third-party code a page may load and run, usually in kilobytes, requests and main-thread time. It gives teams a shared ceiling: adding a new tag means finding room for it, by optimising or removing something else, rather than quietly making the page slower.
How do I measure the main-thread cost of a third-party script?
Record a page load in the Chrome DevTools Performance panel on a throttled CPU, open the Bottom-Up tab and group by domain or third party. Lighthouse's third-party summary gives similar totals. Measure on the pages where the tag actually runs, with consent granted if it only loads after consent.
What budget should I set for third parties?
There is no universal figure. A practical start is to measure what you have today on a key template, set the budget at or slightly below it so nothing can grow, and lower it as you remove or defer vendors. Some teams set third parties to a fixed fraction of their overall page budget.
What is a facade for a third-party widget?
A lightweight placeholder that looks like the widget - a chat bubble, a video thumbnail with a play button - and loads the real script only when someone clicks or scrolls to it. Most visitors never interact, so most visits never pay the cost.
Why is a synchronous third-party script a problem?
A script without async or defer stops the HTML parser until it downloads and runs. If the vendor's server is slow or down, your page waits with it. Consent and A/B testing tools sometimes require it to prevent flicker; in that case keep them as small as possible and on a fast host.
How are the shares calculated?
Each item gets a weight from its priority - essential 3, important 2, optional 1 - and its share is its weight divided by the total weight. Its allocation for each metric is that share of the overall budget. An item is over when any of its measured costs is larger than its allocation.
Last reviewed by the A2Z.Tools team against the sources listed above.