A no fill is an ad request that comes back without an advertisement. The slot existed, the page or the app asked for something to put in it, and nothing arrived. Each layer of the chain has its own vocabulary for the same outcome: an ad server logs an unfilled impression, a bidder returns an empty HTTP response, a video player raises error 303, a mobile software development kit throws an error constant named for the condition. The request succeeded. The transaction did not.

The term exists because inventory and demand are decoupled: publishers create slots by publishing pages, and advertisers decide impression by impression whether any are worth buying. Fill rate, the ratio of delivered impressions to ad requests, measures the gap.

How a no fill is signaled

Google Ad Manager defines an unfilled impression as "an ad request that did not return a line item and means that no line item was eligible to serve". On the page, that empty response then has to be handled visually. Google Publisher Tag offers two collapse behaviours: ON_NO_FILL displays the slot and hides it once the response confirms nothing is coming, while BEFORE_FETCH keeps it hidden and expands it only if an ad exists. Left alone, unfilled slots stay visible as blank space.

In real-time bidding the signal is defined by OpenRTB. The bid response carries an optional attribute, nbr, described in the specification as the "reason for not bidding" and pointing to an enumerated list, present since version 2.2, dated April 2014. The codes separate commercial refusals from technical ones: 3 for a known web spider, 4 for suspected non-human traffic, 5 for a cloud, data centre or proxy IP address, 6 for an unsupported device, 7 for a blocked publisher, 8 for an unmatched user. Later entries cover ads.txt authorisation failures, insufficient time left inside the request's tmax window, and blocked SupplyChain nodes.

Most bidders send no reason at all. The specification calls an empty response "the most bandwidth friendly form" of a no-bid, and version 2.6, published in April 2022, instructs that calls returning no content to a valid request "should return HTTP 204". At bidder volumes, dropping a response body on the majority of requests is a material saving, which is why the reason codes exist largely on paper.

That opacity prompted a workaround. A community extension sponsored by Xandr, Magnite, CafeMedia and Media.net adds a seatnonbid array to the bid response, letting an exchange report which buyer seats declined and why. Its most revealing status band, 200 to 299, covers impressions never sent to a seat at all.

Video and app environments use different plumbing. A VAST wrapper chain resolving to nothing produces error 303, reported by Google's Interactive Media Ads SDK as "No Ads VAST response after one or more Wrappers". In mobile SDKs the condition is a named constant: on iOS, GADErrorNoFill carries the value 1 and the description "The ad request was successful, but no ad was returned".

The arithmetic

The denominator depends on which layer is counted. Slot-level fill asks whether a placement ended up with an ad from any source; bidder-level fill asks whether one demand partner answered one request. DataBeat, analysing May 2026 activity across publishers generating more than $55 million in monthly revenue, put conventional programmatic fill at 0.183% and agentic buyers at 0.204%: roughly two impressions per thousand bid requests. Non-fill is not the edge case in real-time bidding, it is the default, and the exceptions are what get billed.

Some of that ratio reflects duplication rather than rejection. A DataBeat sellers report published on June 11, 2026 found a 46% duplicated-domain rate among tier 1 supply-side platforms, at an average of 1.31 intermediaries per domain, so the same impression often enters the same auction by two routes. Will Doherty of The Trade Desk described supply-side platforms sending "30% of the publisher's traffic - the stuff they think is best - and they send it three times".

Filling the gap

Publishers rarely accept the empty slot as final. Passback hands the request onward, returning a tag that calls a different system. Backfill designates a standing demand source to take whatever higher tiers left. House ads promote the publisher's own products at zero revenue. Collapse removes the slot from the layout, improving page experience while shrinking the fill-rate denominator on refresh.

Origin and evolution

The problem predates programmatic buying. Ramsey McGrory, writing in MediaPost on February 15, 2007, described daisy chaining as "the process of redirecting ad calls among network partners", adopted because early ad servers could not manage unsold inventory. His worked example remains the clearest statement of its cost: of one million initial ad calls passed down a chain, roughly 91,813 were lost between ad servers, and sequential ordering guaranteed mispricing, with a first network paying a $1.75 effective cost per thousand impressions for inventory a third valued at $3.50.

Yield optimisation grew out of that inefficiency. Admeld, founded in 2007, consolidated the chain into a single tag and reordered networks by predicted acceptance. Google acquired it for approximately $400 million in 2011 and folded the product into DoubleClick Ad Exchange in late 2013.

Header bidding, emerging in 2014 and 2015, attacked the sequence itself. Running demand sources in parallel meant a no fill from one bidder no longer stalled the rest. It also multiplied requests, leaving publishers, in the words of Chegg's Linda Chen, "exposing all inventory at once and inadvertently competing against themselves multiple times".

Pricing rules shaped fill from the other direction. Google discontinued its existing floor price rules on the move to a first-price auction, announced on May 15, 2019, replacing them with unified pricing rules applying one floor across non-guaranteed demand. A floor set too high converts bids into no fills by design.

Why unfilled requests now cost money

Unfilled inventory has always meant zero revenue. Since April 16, 2026 it can also mean a bill. PubMatic began charging publishers whose bid request volumes exceed daily allocations $0.001 CPM on the excess, rounded up to the nearest $10 a month, so a billion surplus impressions costs $1,000. Enforcement escalates to domain blocking, and publishers reported notices arriving before they had seen their caps.

The logic is infrastructural: every request ending in a no fill still consumes servers and bandwidth on both sides. Publishers have responded with throttling: Chegg stops calling a slot once it has drawn 20 or more requests with zero bids, serving content or a house ad instead, while avoiding tighter thresholds that would cut off inventory still capable of selling.

The backdrop sharpens the incentive. Alphabet's Google Network segment, which monetises third-party publishers, reported $6.97 billion in first-quarter 2026 revenue, down 4% from $7.26 billion a year earlier.

Limitations and disputes

Fill rate is among the easiest metrics in advertising to move without improving anything. Lowering floors lifts fill and can reduce revenue, while raising them depresses fill and can raise yield. Collapsing slots, cutting refreshes or throttling requests lifts fill by shrinking the denominator.

The denominator is contested too. With 46% domain duplication at the largest supply-side platforms, an impression counted unfilled in one path may have sold in another. Broader waste compounds the ambiguity: IAB Spain's first supply-side platform guide, published on April 15, 2026, found only 41% of programmatic investment reaching measurable, viewable impressions free of invalid traffic.

Reason codes remain largely theoretical. Because HTTP 204 carries no payload, the dominant no-bid signal transmits no explanation, and seat non-bid adoption is uneven, so publishers see that demand declined without learning whether price, audience, brand safety, invalid traffic filtering or a timeout caused it. Throttling is contested on similar grounds: Chris Kane of Jounce Media has warned that traffic shaping produces a narrowing effect in which demand-side platforms see progressively less inventory, cutting discovery of the infrequent high-value impressions that justify request volume in the first place.

Not every no fill is a demand signal. During Google's platform failures beginning on January 13, 2026, publishers reported revenue declines between 50% and 90% within a day. Requests logged unfilled during an outage measure infrastructure, not appetite.

Disambiguation

no bid is one demand partner declining one request. A no fill is the outcome after every partner has declined, or after a winning bid failed a floor or a policy check. Many no bids can coexist with a fill.

discrepancy is a difference between two systems' counts of the same event, of the kind McGrory quantified in 2007, and occurs on filled impressions too.

Remnant inventory is sold cheaply through networks and exchanges. Unsold inventory never monetises at all. A no fill is the single-impression version of unsold, not of remnant.

blank impression is a slot that rendered nothing although an ad was returned, usually a blocked or broken creative. The revenue outcome resembles a no fill; the diagnosis does not.

Recent developments

Pricing control returned to publishers in December 2025. According to Search Engine Land, reporting on December 17, 2025, Google removed unified pricing rules from Ad Manager under antitrust pressure, restoring the ability to set different floors for individual buyers. Jason Kint of Digital Content Next said unified pricing had often lowered yield. Buyer-specific floors reintroduce a deliberate trade of fill for price.

Agentic buying is altering the shape of the funnel rather than its size. DataBeat's June 2026 comparison found agentic buyers entering 86% fewer auctions than conventional demand while clearing at $6.13 CPM against $6.95, with a marginally higher fill rate on the requests they do enter: fewer, more selective requests converted slightly better, a pattern closer to television buying than to the open exchange.

Timeline

  • February 15, 2007: MediaPost publishes an analysis of daisy chaining, quantifying ad calls lost between networks handling unsold inventory
  • 2007: Admeld founded to consolidate remnant chains into a single publisher tag
  • December 6, 2011: Google closes its acquisition of Admeld for approximately $400 million
  • Late 2013: Admeld is shut down and folded into DoubleClick Ad Exchange
  • April 2014: OpenRTB 2.2 documents the nbr attribute and its no-bid reason code list
  • 2014 to 2015: Header bidding replaces sequential passbacks with parallel auctions
  • May 15, 2019: Google announces the discontinuation of existing floor price rules and the introduction of unified pricing rules
  • April 2022: OpenRTB 2.6 confirms HTTP 204 as the response for calls returning no content
  • December 17, 2025: Google removes unified pricing rules from Ad Manager
  • January 13 to 15, 2026: Google Ad Manager and AdSense failures produce large-scale unfilled inventory unrelated to demand
  • April 15, 2026: IAB Spain publishes its first supply-side platform guide, measuring working media at 41%
  • April 16, 2026: PubMatic begins charging for bid request volumes above publisher allocations
  • June 11, 2026: DataBeat reports a 46% duplicated-domain rate at tier 1 supply-side platforms

Summary

Who. Publishers and ad servers count no fills; supply-side platforms and exchanges relay them; demand-side platforms and bidders generate them by declining or ignoring requests. Standards bodies including the IAB Tech Lab define how the condition is expressed.

What. A no fill is an ad request that returns no advertisement, signalled as an unfilled impression in an ad server, an empty bid response or HTTP 204 in OpenRTB, error 303 in a VAST chain, or a no-fill error constant in a mobile SDK. Fill rate measures how often it happens.

When. The condition dates to the earliest ad networks and was documented in daisy chain analysis by 2007, encoded in OpenRTB from version 2.2 in April 2014, and repriced in 2026 as platforms began charging for request volume.

Where. It occurs at every layer of the chain: the ad server, the header bidding wrapper, the exchange, the bidder, the video player and the mobile SDK, each with its own signal and its own count.

Why. Unfilled requests carry infrastructure cost without revenue, which makes them the pressure point for throttling, traffic shaping and supply-path decisions. The metric built on them is also easy to distort, so fill rate read without yield describes activity rather than outcome.