The public Prebid Cache that Microsoft ran at prebid.adnxs.com/pbc shut down on 30 April 2026, after one extension from the original January date. Any Prebid video setup still configured to cache at that endpoint now wins auctions it cannot play: the bid wins in Ad Manager, the player asks the cache for the VAST, the cache is gone, and the slot shows a VAST error. Six months later this is still turning up on sites that migrated the main domain and forgot a section, an AMP template or a second wrapper.
Here is what broke, how to check, and how publishers replaced it.
What the cache was doing
Prebid video runs the auction in the page, like display, but the winning creative is a VAST document the video player has to fetch later, after Ad Manager has run its own auction and decided the Prebid line item won. Something has to hold that VAST between the two moments. That is the cache: Prebid posts the winning bid's VAST to it, gets back an ID, passes the ID to Ad Manager as a key-value, and the player fetches the VAST by ID when the line item renders.
Microsoft's public endpoint was free and was the default in a great many setups. One estimate before the shutdown put it at more than 60 percent of configured cache endpoints. When it closed, every one of those setups kept bidding and kept winning, and the player kept failing at the last step. Nothing in the Prebid auction logs looked wrong.
The 30-second check
On a page that serves video ads, open the console and run:
pbjs.getConfig().cache
Three outcomes:
undefined: you are not caching, which is fine only if you run local caching or no video.- An object with a
urlthat containsadnxs.com: this is the problem. Every winning video bid on this page fails. - An object with a
urlpointing somewhere else: check that the host answers. A quick request to the URL should return a response from a live cache, not a timeout.
Run it on every template that serves video, on AMP pages, and on any site section that loads a separate wrapper build. The shutdown stories we hear in October are almost all "we fixed the main site in March".
What a broken cache looks like in the reports
Because the auction still runs, the symptoms sit downstream:
- In Ad Manager: the Prebid video line items keep winning impressions in the delivery report, but video completion and start metrics drop, and VAST error rates rise. If you report on creative errors, error code 303 (no ads) and 301 (timeout) climb.
- In Prebid analytics: bid rate and win rate look normal. Render rate, if you track it, falls off a cliff. This gap between "won" and "rendered" is the single most useful number in a video setup, and most dashboards do not have it.
- In revenue: video revenue from Prebid drops to near zero while the auction metrics say nothing changed. Direct video and Ad Exchange video hold, so the total masks the loss.
If your reporting cannot put won bids next to rendered impressions per bidder, that is the gap to close before the next migration of any kind.
The three ways publishers replaced it
1. A hosted cache from a vendor. Several companies stood up Prebid Cache services in the months before the deadline. The configuration change is one line: the cache.url moves to the vendor's host. Cost is per request or flat; the appeal is that nothing else changes. Check the vendor's uptime commitment and where the servers are, because the cache sits on the critical path of every video render.
2. Your own cache. Prebid Server includes a cache module, and some publishers already ran Prebid Server for other reasons. Running it yourself removes the vendor from the path and adds an operational duty: the service must answer within a few hundred milliseconds from wherever your readers are, or you have replaced one failure with a slower one.
3. Local caching. Microsoft's own recommendation was to switch to local caching, where the VAST is held in the browser and the player reads it from there. It avoids the round trip entirely. During the migration, community reports described poor behaviour with some bidders that maintain their own caching, with Rubicon, Xandr and Nativo named. Test per bidder on a slice of traffic rather than flipping it for everyone.
A fourth answer, from Primis, was to question whether the cache was doing useful work at all for their setup; their internal logging said it largely was not. That is a legitimate finding for a network that controls its own player, and less so for a publisher who runs a standard GAM video line item.
The checklist to run this week
- Run the console check on every video-serving template, including AMP and any section with its own wrapper.
- Pull the Ad Manager delivery report for Prebid video line items with video start and VAST error columns, last 30 days against the 30 days before April.
- In your Prebid analytics, compare won bids and rendered impressions per bidder for video. Any bidder with wins and no renders is caching somewhere that does not answer.
- If you moved to a vendor cache, request their uptime report for the last quarter. If you run your own, look at its latency from your top three countries.
- Write the cache URL and the owner of the cache into the ad stack runbook. The next person to touch the wrapper should not have to find this post.
Optimon reads your Prebid analytics and Ad Manager reports together, so a bidder that wins video auctions and renders nothing shows up as a ranked cause the next morning, with the numbers, rather than as a gap in a quarter-end review.
FAQ
How do I check whether my site still uses the old Prebid Cache?
Open a page with video ads, open the browser console and run pbjs.getConfig().cache. If the returned URL contains adnxs.com, your bids are being cached at an endpoint that no longer serves, and winning video bids fail at render time.
Why does Google Ad Manager need the cache at all for Prebid video?
Prebid wins are passed to Ad Manager as key-values; if the Prebid line item wins the Ad Manager auction, the player fetches the VAST by the cache ID from the cache URL. Without a working cache the fetch fails and the player reports a VAST error instead of playing the ad.
Is local caching a safe default?
It works for many setups, but community reports during the migration described bidders that maintain their own caching (Rubicon, Xandr and Nativo were named) behaving worse with local caching enabled. Test it per bidder with a small share of traffic before switching everything.
Sources
- Microsoft kills free Prebid Cache publishers rely on for video ads (PPC Land)
- Microsoft to stop caching Prebid video files, leaving publishers with a major ad serving problem (AdExchanger)
- Shinka launches enterprise-grade Prebid Cache ahead of Microsoft deprecation (ExchangeWire, December 2025)
- Why Primis skipped the Prebid Cache migration debate entirely (PPC Land)
- Prebid.js publisher API reference, getConfig



