A wrapper is the container code a publisher loads on a page to run a header bidding auction. It calls several exchanges at the same time, waits a fixed number of milliseconds for their bids, selects the highest, and passes that price into the publisher's ad server as targeting data before the ad server decides what to serve. The layer exists because ad servers historically called demand sources in a fixed sequence, so position in the queue rather than willingness to pay determined which buyer got first refusal.

The complaint Magnite filed against Google on September 16, 2025 describes the mechanism in the language of litigation: a piece of JavaScript placed on the page, typically called a header bidding wrapper, that solicited bids from multiple exchanges as the page loaded, ran a mini-auction among them, and entered the winner into the ad server as though it were a high-priority line item.

How a wrapper runs an auction

Configuration begins with ad units. Each one names a slot, the media types it accepts, the creative sizes allowed, and an array of bidders, each with its own parameters: a placement code, a publisher identifier, sometimes a floor. TripleLift's Prebid.js adapter, for instance, requires an inventoryCode string and accepts an optional dollar floor. The bidder list is the wrapper's demand roster, and adding a partner means adding an adapter at build time rather than trafficking a new tag.

When the page calls for bids, the wrapper dispatches parallel requests through those adapters and starts a clock. Prebid documentation distinguishes four timers: an auction timeout governing how long bid collection may take, a failsafe timeout set outside the library as a JavaScript safety net that invokes the ad server callback if something breaks, a server-to-server timeout that Prebid recommends setting at 50% to 75% of the auction timeout and that defaults to 75%, and a server-side adjustment that shaves a buffer off the value passed downstream as OpenRTB tmax. The documentation also warns that consent management, user identity and real-time data modules run before bidding starts, and that vendors routinely request long pre-auction windows which consume the same budget.

Prices then get quantised. An ad server cannot hold a line item for every possible bid, so the wrapper rounds each bid down into a price bucket. Prebid's built-in options run from low granularity, at 0.50 increments capped at 5.00 and requiring 11 line items per bidder, to high granularity at 0.01 increments capped at 20.00 and requiring 2,001. Ten bidders at the finest setting, with every bid forwarded rather than only the winner, means a minimum of 20,000 line items. Rounding is lossy in the ad server auction but not in payment: a 2.95 bid under 0.50 granularity reaches the ad server as 2.50 and can lose to a 2.51 line item, yet if it wins the buyer still pays 2.95.

The handover itself is a query string. Prebid attaches key-value pairs to the ad request: hb_pb for the price bucket, hb_bidder for the winning exchange, hb_adid for the creative identifier used at render time, hb_size, hb_deal for private marketplace matching, and hb_uuid for the cache location of a video creative. Google Ad Manager caps key names at 20 characters, so bidder-specific keys are truncated, and hb_adid_longBidderName arrives as hb_adid_longBidderNa. Line items must target the truncated form or they will not match. Prebid's own worked example of forwarding every bid produces a query string of 2,625 characters, which is why the library ships controls limiting which keys are sent and how long the string may run.

Origin and evolution

Prebid.js was written in early 2015 at AppNexus by Matt Kendall and Paul Yang with Nick Jacob of the publisher Aplus. AppNexus and Rubicon Project then founded Prebid.org in 2017 to standardise implementation, formally launching the organisation on September 11, 2017 with 81 demand partners, five analytics vendors and 191 individual contributors. Version 1.0 shipped on December 13, 2017 with unified support for banner, video and native ad units, the release that made the library broadly deployable.

Expansion followed the formats. Prebid Server reached Accelerated Mobile Pages in 2018 through AMP's Real-Time Config, extending the auction to pages where in-page JavaScript could not run. Prebid Mobile moved the same model into apps, positioned not as a mediation replacement but as an additional demand source that takes no revenue cut. The Trade Desk joined Prebid.org as a leader member in 2020, with co-founder David Pickles taking a board seat; Google never joined, building Exchange Bidding instead.

Governance moved with the code. Transaction identifiers, added to OpenRTB in 2013, gained Prebid.js support in version 8 in June 2023. Version 10 arrived in July 2025.

Open, proprietary and managed variants

Not every wrapper is open source. Amazon Publisher Services operates Transparent Ad Marketplace as a server-side wrapper reached through a single tag, running a first-price auction among net bids across more than 20 supply-side platforms and charging bidders a stated 2.5% service fee. Its Unified Ad Marketplace variant hands demand partner relationships to Amazon rather than the publisher. Supply-side platforms sell managed Prebid deployments on similar terms. The economic distinction is straightforward: a proprietary layer charges per impression handled, while an open one does not, which is the reason IAB Spain's first supply-side platform guide, published in April 2026, describes Prebid as the dominant open-source wrapper and treats integrations as written against it.

Why the layer matters

Whoever controls the wrapper controls the order of operations: which exchanges see the impression, what floor they see, which identifiers travel with the request, and what reaches the ad server. Floors are configured there as much as in the ad server. Identity modules such as ID5 are installed as wrapper submodules, with refresh intervals set in configuration. Supply chain declarations are carried as first-party data at ortb2.source.schain since version 10Header bidding is also what forced display auctions to first price, because an exchange clearing at second price entered the ad server comparison understating its own demand.

Limitations and disputes

Latency is the structural cost. Every bidder called is a network round trip held open while the slot sits empty, and pre-auction modules extend the wait before a single bid request leaves the page.

Transparency inside the layer is now contested. Prebid made transaction identifiers bidder-specific on August 27, 2025, so that each exchange receives a different identifier for the same opportunity. The IAB Tech Lab declared the same day that the change materially violated the OpenRTB specification, with chief executive Anthony Katsur saying the approach "risks undermining the integrity and consistency of open technical standards". Buyers lost the ability to recognise duplicate requests arriving through several exchanges. Publishers argued the shared identifier let buyers stitch data across exchanges and choose cheaper paths into the same impressionPrebid clarified on October 23, 2025 that the decision came from its Publisher Committee and that roughly 1% of traffic was affected, since the new logic landed in version 10.9 and adoption of major releases is slow.

Disagreement then became duplication. The Trade Desk branched the codebase on October 2, 2025 to preserve the original behaviour, launching OpenAds, and nine publishers including AccuWeather, BuzzFeed, the Guardian and Hearst committed on January 6, 2026. Two incompatible auction paths now exist.

Dependency is the third complaint. Microsoft announced on December 12, 2025 that it would retire the free Prebid Cache used by a majority of configured video endpoints, effective April 30, 2026. Raptive research head Patrick McCann put replacement caching at between 50,000 and 250,000 dollars a month for high-volume video publishers. Primis tested whether the cache was doing anything at all and concluded it largely was not.

Not the same as

VAST wrapper is unrelated. In the Video Ad Serving Template, a wrapper is an XML response containing no media file, only a redirect to another ad server, with VAST 4.3 setting five as the recommended redirect ceiling. A passback is the tag a demand source returns when it cannot fill, handing the impression onward in sequence rather than resolving competition in parallelMediation in apps ranks demand sources by historical average revenue rather than live price. And server-side header bidding moves the same auction off the device, where the wrapper becomes a single call to an endpoint that fans out to bidders.

Recent developments

Amazon opened a Prebid adapter in beta in January 2026, connecting publishers to Amazon demand and more than 60 additional buyers. Prebid.org took stewardship of an open-source sales agent for agent-driven buying on January 29, 2026. A DevTools module exposing live auction state to AI coding agents merged into the master branch in early August 2026. Leadership turned over twice in four months: president Mike Racic, chairman Garrett McGrath and product director Christian Janelli left in May 2026, OpenX chief technology officer Joel Meyer took the chair, and McGrath returned on September 10, 2026 as only the project's second president, starting September 15. The Prebid Summit in New York on October 13, 2026 is the next point at which direction should be visible.

Timeline

  • Early 2015: Prebid.js is written at AppNexus by Matt Kendall and Paul Yang with Nick Jacob of Aplus
  • July 19, 2015: The Prebid.js repository is created
  • September 11, 2017: AppNexus and Rubicon Project launch Prebid.org with 81 demand partners and 191 contributors
  • December 13, 2017: Prebid.js 1.0 unifies banner, video and native ad units
  • 2018: Prebid Server integrates with AMP Real-Time Config
  • 2020: The Trade Desk joins Prebid.org as a leader member and takes a board seat
  • June 2023: Prebid.js version 8 adds transaction identifier support
  • July 2025: Prebid.js version 10 is released
  • August 27, 2025: Transaction identifiers become bidder-specific; the IAB Tech Lab calls the change a specification violation
  • October 2, 2025: The Trade Desk launches OpenAds on forked Prebid code
  • October 23, 2025: Prebid clarifies the policy and restores publisher choice in version 10.9 and later
  • December 12, 2025: Microsoft announces the shutdown of the public Prebid Cache
  • January 6, 2026: Nine publishers commit to OpenAds
  • January 2026: Amazon Publisher Services opens a Prebid adapter in beta
  • April 2026: IAB Spain names Prebid the dominant open-source wrapper for header bidding
  • April 30, 2026: The public Prebid Cache is retired
  • May 2026: Prebid's president, chairman and product director depart
  • August 2026: A DevTools module exposing live auction state merges into Prebid.js
  • September 10, 2026: Garrett McGrath is named Prebid's second president, starting September 15
  • October 13, 2026: The Prebid Summit is scheduled in New York

Summary

Who. Publishers deploy wrappers; supply-side platforms, exchanges and identity vendors supply the adapters and modules inside them. Prebid.org, formed by AppNexus and Rubicon Project, governs the dominant open implementation through member committees. Amazon Publisher Services, supply-side platforms and managed service providers sell proprietary alternatives. The IAB Tech Lab sets the OpenRTB protocol the wrapper's output must conform to, and The Trade Desk maintains a fork.

What. A wrapper is container code that runs a parallel auction among several exchanges before a publisher's ad server is called, then passes the result into that ad server as price bucket and bidder key-value pairs so the external bid can compete with directly sold inventory.

When. The technique dates from 2015, was formalised through Prebid.org in September 2017 and Prebid.js 1.0 that December, and has been under dispute since August 2025, when identifier changes split the codebase and the standards body objected.

Where. In the browser through JavaScript loaded in the page head, on AMP pages through Real-Time Config, in mobile apps through the Prebid Mobile SDK, and on servers where the client makes one call and the fan-out happens remotely.

Why. Sequential demand calls priced inventory by queue position rather than by value. A wrapper makes exchanges compete simultaneously and gives the publisher a control point over floors, identity and supply chain declarations. The costs are latency, ad server configuration overhead measured in thousands of line items, and a governance layer that no standards body can arbitrate.