How a Media Plan Generator Works: Formulas and a Template
A media plan generator runs a fixed chain of rules. It starts from a channel mix for your objective, multiplies each weight by industry and market factors, rescales to 100% inside a floor and ceiling per channel, keeps only the deals a channel's money can cover, prices each line from a rate card, converts money into impressions and reach with an overlap discount, then spreads spend across the weeks.
What actually happens inside a media plan generator?
A media plan generator is a chain of small rules, each handing a more finished plan to the next. None is clever alone. The value is that they run the same way every time, so every number traces back to a weight, a band or a rate.
Most generators work in the same order, and so do the plans we build when you ask for a free media plan. They start from a channel mix, adjust it, cap it, add deals, price the lines, estimate reach and spread the money by week.
The sections below take each rule in turn, using one brief, and a sheet you can copy closes the post. For the planning process itself, from objective to creatives, read how to create a programmatic media plan.
The running example: a mobile gaming studio is launching a new title and wants awareness among 18 to 34 year olds across India, with extra weight in the metros, in Hindi and English. It has ₹30 lakh of media for four weeks, and Diwali falls in week three.
Which inputs drive which part of the plan?
Each input feeds one step. Leave it vague and that step falls back to a default, which is where generic-looking plans come from.
| Input | What it changes |
|---|---|
| Objective | The starting mix, each channel's band and the KPI per line |
| Industry | Multipliers on channel weights and on suitable publishers |
| States, cities and tiers | Regional publishers score up or down; metros lift DOOH |
| Languages | Publishers score by language match, so a Tamil app stays out of a Hindi plan |
| Budget | How many channels survive and which deals clear their minimums |
| Dates and key dates | The weekly weights |
| Formats and named publishers | Which channels are in play, and which deals are forced in |
In our plans, age, gender and segments do not change the split at all. They travel with each line as targeting.
How does a generator decide each channel's share?
It starts with a base weight per channel, set by the objective, plus a band. For awareness, our plans start YouTube at 35 inside 30–40% and CTV and OTT at 30 inside 25–35%, with smaller weights for online video, display and DOOH.
Then it multiplies. A gaming brand gets 1.3 on YouTube, 1.2 on online video and 0.8 on CTV, on the view that its audience watches less television. Targeting metros multiplies DOOH by 1.3. The results are rescaled to 100.
Then it enforces the bands. A share outside its band is pinned to the nearest edge, and what is left is shared among the rest by weight, repeating until nothing moves.
| Channel | Base | Multiplier | Adjusted | Before bands | Band | Final | Budget |
|---|---|---|---|---|---|---|---|
| YouTube | 35 | 1.3 | 45.5 | 41.4% | 30–40% | 40.0% | ₹12,00,000 |
| CTV and OTT | 30 | 0.8 | 24.0 | 21.8% | 25–35% | 25.0% | ₹7,50,000 |
| Online video | 15 | 1.2 | 18.0 | 16.4% | 10–20% | 15.6% | ₹4,68,000 |
| Display | 12 | 1.0 | 12.0 | 10.9% | 10–15% | 10.4% | ₹3,12,000 |
| DOOH | 8 | 1.3 | 10.4 | 9.5% | 0–15% | 9.0% | ₹2,70,000 |
YouTube's 41.4% breaks its ceiling and CTV's 21.8% falls under its floor, so both are pinned. The other three share the remaining 35% in the ratio 16.4 : 10.9 : 9.5.
Two more rules sit here. Under ₹10 lakh our plans keep only the four heaviest channels, so at ₹8 lakh this brief would lose DOOH. And a secondary objective is blended in at 30% against 70% for the primary.
Want to see the numbers for your brand?
Get a free DV360 media plan from our team within one working day.
How does it choose deals and publishers inside a channel?
A channel can hold open-auction formats and deals with named publishers. When it holds both, our plans set aside 60% of that channel's money for deals.
Candidate publishers are scored: industry fit raises a score, a language or region match raises it further, and a mismatch cuts it sharply. Only publishers whose minimum fits the deal money and whose score clears a threshold are picked, two per channel at most.
In the gaming plan, CTV and OTT has ₹7.5 lakh, so deals could take ₹4.5 lakh. JioHotstar entertainment, ZEE5 and SonyLIV each need about ₹10 lakh, so none fits. A smaller Hindi-language app with a ₹2–3 lakh minimum would, and a generator may suggest one, but whether its content suits young gamers is your call. We assume you leave premium OTT deals out of the formats, so no deal is suggested and the whole ₹7.5 lakh goes to open-auction connected TV.
Weak generators test the ₹10 lakh minimum against the ₹30 lakh total and add the deal anyway. If you name ZEE5 yourself, a sensible generator lets the deal take the whole channel, so at a 25% share you would need about ₹40 lakh. Our guide to DV360 minimum budgets gives the usual minimums for OTT apps, news publishers and DOOH. Any line under 2% of the plan is then removed as too small to optimise.
Which formulas turn a line's budget into delivery?
The rate comes from the most specific card in force: the publisher's, then the format's, then the channel's. Each card holds a default rate, a low and high value, the click and view rates the formulas need, and its start date.
| Output | How it is worked out |
|---|---|
| Impressions, CPM line | Line budget ÷ CPM × 1,000 |
| Views, CPV line | Line budget ÷ CPV, then views ÷ view rate for impressions |
| Clicks and conversions | Impressions × click-through rate, then clicks × conversion rate |
| Line reach | Impressions ÷ frequency cap, a planning shortcut (see the curve below) |
| Low and high case | Mid estimate less or plus 15% |
Inside a channel, open-auction money is split by how well each format suits the objective. For awareness our plans score bumpers 0.9 and skippable ads 0.6, so YouTube's ₹12 lakh becomes ₹7.2 lakh and ₹4.8 lakh. Rates are illustrative defaults from our rate card.
| Line | Budget | Rate | Impressions | Line reach |
|---|---|---|---|---|
| YouTube bumpers, cap 5 | ₹7,20,000 | ₹150 CPM | 48,00,000 | 9,60,000 |
| YouTube skippable, cap 3 | ₹4,80,000 | ₹0.90 CPV | 19,04,762 | 6,34,921 |
| Connected TV, cap 3 | ₹7,50,000 | ₹450 CPM | 16,66,667 | 5,55,556 |
| In-stream video, cap 3 | ₹4,68,000 | ₹180 CPM | 26,00,000 | 8,66,667 |
| Display banners, cap 4 | ₹3,12,000 | ₹70 CPM | 44,57,143 | 11,14,286 |
| Metro DOOH screens, cap 6 | ₹2,70,000 | ₹400 per 1,000 viewers | 6,75,000 viewers | 1,12,500 |
The skippable line shows why view rate matters: ₹4.8 lakh at ₹0.90 buys 5,33,333 views, and if 28% of impressions become views, about 19 lakh impressions sit behind them. DOOH is counted the same way, viewers ÷ its cap of 6, even though screen audiences are estimates rather than unique people.
All of this is media money. The programmatic advertising cost calculator shows how to strip fees and GST out of an all-in figure before any of these sums start.
Which reach method does a generator use, and how much does it change the answer?
Generators handle overlap with one of three levels of care. The crudest adds up line reach: 42.4 lakh people in the gaming plan, which counts the same gamer several times. For channel-by-channel deduplication, GRPs and effective reach, the reach and frequency calculator works through every sum.
The second applies an overlap factor. Our plans keep 72% of summed reach, the same as a 28% overlap discount, which puts the gaming plan at about 30.6 lakh people, shown as 26.0 to 35.1 lakh. Some planners leave DOOH out because screen audiences are estimated viewers. That would take this plan to 29.7 lakh.
The third uses a reach curve. Dividing by a frequency cap assumes everyone sees the ad exactly that often. In practice, light weight reaches many people once, and heavy weight piles impressions onto people already reached. A simple curve is =Ceiling*(1-EXP(-GRPs/Ceiling)), where GRPs are impressions as a percentage of the audience and the ceiling is the most one channel can realistically reach.
In-stream video at ₹180 CPM with a cap of 3, against an audience of 1 crore and an assumed 70% ceiling:
| Budget | GRPs | Curve reach | Impressions ÷ 3 |
|---|---|---|---|
| ₹10 lakh | 56 | About 38 lakh | 18.5 lakh |
| ₹20 lakh | 111 | About 56 lakh | 37.0 lakh |
| ₹40 lakh | 222 | About 67 lakh | 74.1 lakh |
The quick method undercounts at light weight and overpromises at heavy weight. On the curve, doubling from ₹20 lakh to ₹40 lakh adds only about 11 lakh people, which is the real case for a second channel instead of more money in the first.
How is spend spread across the weeks?
Each week gets a weight, and its share is that weight divided by the total. Even flighting gives every week 1. Front-loaded falls in a straight line from 1.6 to 0.4, so four weeks run 40%, 30%, 20% and 10%. Burst drops every third week to 0.3. A key date multiplies its week by 1.5 and the week before by 1.2.
For the gaming plan, an even flight with Diwali in week three gives weights of 1, 1.2, 1.5 and 1. That is 21.3%, 25.5%, 31.9% and 21.3%, or ₹6,38,298, ₹7,65,957, ₹9,57,447 and ₹6,38,298, and every line follows the same pattern.
Where do media plan generators go wrong?
Rarely in the arithmetic. Usually a rule is missing or a number has gone stale.
- Using one default frequency cap for every format. Our rate card uses 5 for bumpers, 4 for banners and 6 for DOOH, so one flat cap misstates reach on all three.
- No floor or ceiling per channel, so one industry multiplier can push a channel past any sensible share.
- Testing deal minimums against the total budget instead of the money that channel and deal receive.
- Averaging line CPMs. Divide the plan's spend by its impressions and multiply by 1,000, as our CPM calculator guide explains.
- A rate card with no date and no season. Diwali and IPL weeks need the top of each range.
- One number instead of a range. Rates and delivery move with season and inventory, so show the low and high case and say which assumptions sit behind them.
How can you rebuild the logic in a spreadsheet?
Put the media budget in B1 and the overlap factor (0.72, or your own) in B2. B3 and B4 are helper cells, explained below. Enter one channel per row from row 5 to row 9, using the main format's rate.
| Column | Entry or formula for row 5 |
|---|---|
| A, channel | Type it in |
| B, base weight | From your objective, for example 35 |
| C, industry multiplier | 1 if there is none |
| D, market multiplier | For example 1.3 on DOOH for metros |
| E, adjusted weight | =B5*C5*D5 |
| F, raw share | =E5/SUM($E$5:$E$9) |
| G and H, floor and ceiling | For example 30% and 40% |
| I, banded share | =MIN(MAX(F5,G5),H5) |
| J, final share | =IF(I5<>F5,I5,F5*(1-$B$3)/$B$4) |
| K, budget | =$B$1*J5 |
| L, deal minimum | Blank for open auction |
| M, minimum check | =IF(L5="","",IF(K5>=L5,"Clears","Too small")) |
| N and O, rate type and rate | CPM or CPV, and the rate in ₹ |
| P, view rate | CPV lines only, for example 28% |
| Q, impressions | =IF(N5="CPM",K5/O5*1000,K5/O5/P5) |
| R, frequency cap | For example 3, or 6 on the DOOH row |
| S, line reach | =Q5/R5 |
In B3, total the pinned shares with =SUMPRODUCT((I5:I9<>F5:F9)*I5:I9). In B4, total the raw shares that were not pinned with =SUMPRODUCT((I5:I9=F5:F9)*F5:F9). Column J then holds pinned channels at their band edge and rescales the rest. If a rescaled share crosses its band, pin it by hand; that is the loop a generator runs for you.
Plan reach is =SUM(S5:S9)*B2, times 0.85 and 1.15 for the low and high case. Blended CPM is =SUM(K5:K9)/SUM(Q5:Q9)*1000. Where a channel also carries open-auction lines, test the minimum against the deal's part of column K, not all of it.
Next step
Send us your own brief for a free media plan and hold the plan against the sheet above. Each share traces to a base weight, a multiplier and a band. If a share looks wrong for your brand, tell us and we will change it, keeping the lines you are happy with. We confirm real rates and inventory before anything is booked, as our note on estimates explains.