A performance budget is a set of explicit limits on the characteristics that determine how fast a page loads and responds, agreed in advance and enforced as part of the development process. Budgets are typically expressed as thresholds on metrics such as Largest Contentful Paint, on quantities such as total JavaScript size, or on rules such as the number of third-party requests permitted.
The problem it addresses is regression rather than optimization. Sites do not become slow through a single decision; they accumulate weight through many individually reasonable additions, each too small to trigger concern. A new feature, an additional tracking script, a larger hero image, another font weight, and a component library upgrade each add a fraction of a second, and after two years the site is substantially slower with no identifiable cause. A budget makes each addition confront a limit.
Budgets work because they convert an abstract preference for speed into a constraint that must be addressed at the point a decision is made. Without one, the argument about whether a script is worth its cost happens after the fact, if at all, and the person proposing the addition has no reason to consider it. With one, adding something means either staying within the limit or explicitly removing something else, which is the trade-off that should be happening anyway.
Setting the numbers requires evidence rather than aspiration. Useful anchors include current performance, so the budget prevents deterioration; competitor measurements, so the target reflects the market the site competes in; and the thresholds associated with the metrics that matter for search and for user experience. Budgets set at levels the site cannot currently meet are useful as targets but must be distinguished from limits enforced on new work, or every build fails and the check is disabled.
Enforcement in automated tooling is what separates a budget from a document. Integrating the check into the build pipeline, so that a change exceeding the limit fails or requires explicit approval, is the mechanism that produces the behaviour. Budgets recorded in a specification and checked periodically by an interested engineer are exceeded routinely, because by the time anyone notices the work has shipped and the cost of reversal exceeds the cost of accepting it.
Granularity should match how the site is built. Different templates have different characteristics, and a single site-wide budget either constrains a simple page unnecessarily or permits an interactive one to expand unchecked. Setting budgets per template, with the most demanding limits on the highest-value paths such as landing and checkout pages, directs the constraint where it matters most.
Exceptions need a defined process rather than being either forbidden or informal. Legitimate cases arise where a feature genuinely justifies additional weight, and a budget with no exception route is either circumvented or blocks valuable work. Requiring the exception to be requested, approved by someone accountable for performance, and recorded with an expiry keeps the mechanism credible while allowing genuine cases through.
Because budgets constrain decisions made across engineering, design, and marketing, they require agreement beyond the team that measures performance. In practice the limits are set through web performance work, enforcement is built into the pipeline by product development, and the commercial case for the constraint is usually made by connecting performance to conversion using the analysis maintained through data analytics.