A reader who visits daily and sees the same banner every time stops seeing it entirely by week two. Frequency capping limits how often one person is shown the same campaign. Traditionally it used a third-party cookie. That method is finished.

Why capping matters

Diminishing returns. The first few exposures do the work. Somewhere between three and seven, effect flattens and then goes negative as irritation sets in.

Your regulars are your best readers. They are the ones who get over-exposed, and they are the ones you least want to annoy.

Better use of inventory. Impressions spent on someone who has already seen an ad five times are impressions not spent on a new visitor.

The old way, and why it stopped working

A third-party cookie counted exposures across every site using the same ad network. Safari blocked those in 2017, Firefox in 2019, Chrome dismantled them over years. Any capping that relies on them now works for a shrinking minority.

What works now

Count in the visitor's own browser, on your own site.

The ad server sends the count back with each ad request:

  1. The tag keeps a small record in localStorage: campaign id, number of views, expiry.
  2. Each request includes those counts, compactly.
  3. The server excludes any campaign already at its cap.
  4. After rendering, the tag increments the count.

No cookies, no server-side per-visitor state, and nothing that identifies anyone. The data never leaves the visitor's browser except as a number attached to a campaign id.

What you give up

It is per-site, not cross-site. You can cap on your own property. You cannot know a visitor saw the ad elsewhere. For a direct publisher that is exactly the scope you want.

Clearing storage resets it. Someone browsing privately gets counted from zero. In practice this is a small fraction, and the failure mode is showing an ad slightly more often — not a disaster.

It is client-reported. A determined person could tamper with the counts. The worst outcome is seeing more or fewer ads, so it does not warrant defending.

Setting a sensible cap

Be careful: an aggressive cap on a site with loyal readers will visibly reduce your fill rate, because your regulars become ineligible. That is correct behaviour, but it will look like a delivery problem if you have forgotten the cap is there.

Interaction with delivery promises

If you promised a sponsor 20,000 impressions and capped at three per day, you may not reach it — especially with a small, loyal audience.

Work it out before you promise. Unique monthly visitors multiplied by the cap gives you a ceiling. If that ceiling is below the number you quoted, either loosen the cap or lower the commitment.

The privacy upside worth mentioning

Because the count lives on the visitor's device and is scoped to your site alone, this approach involves no cross-site identifier at all. That is worth saying plainly to sponsors and to readers — it is a meaningfully different thing from what the industry did for twenty years.