Header Bidding for Publishers, in Plain English
What header bidding is, client-side versus server-side, Prebid and managed wrappers, the speed cost and when a small site should skip it.
5 min read · Updated
Header bidding is one of those terms that turns up in every conversation about raising website ad income, usually without an explanation. In short, it lets several ad exchanges bid for the same ad slot at the same time, instead of being asked one after another.
That simple change can lift the price you get for each impression. It also adds code, network requests and ongoing maintenance to your site, and on a small site the cost can easily outweigh the gain.
This guide explains what header bidding is, how client-side and server-side setups differ, where Prebid fits, what managed networks do for you, the speed trade-offs and when a small site should not bother. Figures are estimates from our benchmark tables, the same ones behind the revenue calculator.
The problem it solved
Before header bidding, most publishers ran a waterfall in their ad server. The ad server offered the impression to one source at a set price. If that source declined, it tried the next one at a lower price, and so on down the list.
The flaw is that the order is fixed in advance. A buyer lower down the list might have paid more for a particular impression, but never got the chance to bid because a buyer higher up took it first at a lower price. The ad server's own demand could also get a privileged look at every impression. Header bidding was the industry's way to make every source compete at once. The same idea arrived later in apps, as bidding vs waterfall explains.
How an auction runs on the page
The name comes from where the code first lived: in the header of the page. The sequence runs roughly like this:
- The page starts to load and the header bidding script runs.
- It sends a bid request to each connected exchange, often called a bidder or demand partner.
- Each bidder replies with a price, or no bid, within a time limit you set.
- The script passes the best bids to your ad server as key-values.
- The ad server compares them with its own demand and any direct deals, and picks the winner.
- The winning ad renders in the slot.
The time limit, usually called the timeout, is the key setting. Too short and slow bidders miss out. Too long and the page waits for ads. Floor prices sit on top of this, and choosing floor prices covers how they shape the result.
Client-side header bidding
In a client-side setup, the reader's browser does the work. It sends a request to every bidder directly, waits for answers and runs the comparison.
The advantage is match quality. Each bidder sees its own cookies and identifiers in the browser, so it can recognise users it knows and bid with confidence. The cost falls on the reader's device. Every bidder adds a network request and some script work, and on a mid-range phone on a slow connection that adds up quickly.
Server-side and hybrid setups
In a server-side setup, the browser sends a single request to a server, and the server contacts the bidders. The page does far less work, and you can connect more bidders without each one adding weight to the page.
The trade-off is that bidders see less of the user. Without direct access to their own cookies, some recognise fewer readers and bid lower or less often. A setup can therefore be hybrid: a few strong bidders run client-side, and the rest run through a server.
Prebid and other wrappers
A wrapper is the code that manages the auction: it holds the list of bidders, applies the timeout and passes results to the ad server. Prebid is the best-known open-source wrapper. Prebid.js runs in the browser, and Prebid Server handles the server-side version. Each bidder needs its own adapter and its own account.
Other options sit alongside it. Amazon offers its own header bidding service for publishers, and Google's Ad Manager can run server-side auctions with third-party exchanges inside the ad server itself. A large site can combine more than one.
Every bidder you add also needs a line in your ads.txt file, following the IAB Tech Lab standards, or buyers may treat your inventory as unauthorised.
Wrappers run by managed networks
If you join a managed network, you never touch Prebid yourself. Managed networks such as Mediavine, Raptive, Monumetric and Ezoic run their own auctions, with their own demand partners, timeouts and floors. You add their script, and they maintain the rest.
That is a large part of what you pay for in their revenue share. They negotiate with exchanges, update adapters, test timeouts and watch for problems. It is also why they set traffic bars: the work pays off only on enough volume.
Latency and Core Web Vitals
Header bidding affects how fast your pages feel, and Google measures that through Core Web Vitals.
- Loading. If bidding holds up ad requests, slots stay empty for longer. If your setup holds up the rest of the page, your main content can appear later too.
- Layout shift. Ads that arrive late and push content down hurt your Cumulative Layout Shift score. Reserve space for every slot. Google's CLS guidance explains how it is measured.
- Responsiveness. Heavy script work on the main thread can make taps and clicks feel sluggish.
Lazy loading ads further down the page, capping the number of bidders and keeping the timeout tight all help. Ads and Core Web Vitals goes into the detail.
What it is worth, by our tables
Our tables do not isolate header bidding, so treat this section with care. They do show the gap between networks that leave you to run things and those that run an advanced auction for you.
| Network | Tier 1 RPM | Tier 3 RPM |
|---|---|---|
| AdSense | $7.00 | $0.80 |
| Ezoic | $9.50 | $1.10 |
| Monumetric | $10.50 | $1.20 |
| Mediavine | $17.00 | $2.00 |
| Raptive | $18.00 | $2.10 |
Part of that gap comes from the auction, and part from layout testing, video players, direct deals and the quality of the sites each network accepts. Do not read the whole difference as a header bidding effect. The home page comparison shows these networks for your own traffic, and the Mediavine and Raptive calculators show what their bars mean for you.
When a small site should not bother
Running your own header bidding needs an ad server account, approval from each exchange you want as a bidder, a wrapper set up and maintained, ads.txt kept current and someone watching reports every week. Exchanges can be selective about which small sites they accept.
Run the numbers first. A general-interest blog (our niche multiplier is 0.8) with 20,000 monthly pageviews, all Tier 1, earns about $112 a month on AdSense at $5.60 per thousand. If a self-built setup lifted that by a hypothetical 20%, you would gain about $22 a month, before any slowdown costs you readers.
Below a managed network's bar, spend the time on content, layout and the steps in earning more from the audience you have. Check your figures in the AdSense calculator, and if you want an automated auction without building one, the Ezoic guide covers a network with no published traffic bar. When you do qualify for a managed network, AdSense or Mediavine walks through the move.