The CPM formula, and the error that is off by a factor of a million
CPM is the cost of one thousand impressions. The M is the Roman numeral for a thousand, carried over from the newspaper trade. It does not stand for million, though people have misread it that way for as long as the term has existed.
CPM = cost ÷ impressions × 1,000
Read it in that order and it's obvious: divide the spend by the impressions to get the price of one impression, then multiply by a thousand to price a thousand of them. Spend $2,500, get 400,000 impressions, and each one cost $0.00625. A thousand of them cost $6.25.
The classic mistake is putting the thousand in the wrong place. Writing
cost ÷ (impressions × 1,000) instead of cost ÷ impressions × 1,000
returns $0.00000625, a number one million times smaller than the right answer
that still looks perfectly believable. It's small and positive, it has decimals, and it
goes straight into a slide. Nothing about it looks wrong. The same error in reverse,
dividing a budget by a CPM without putting the thousand back, understates reach by the
same factor and makes a perfectly ordinary media plan look unaffordable.
One identity, three ways to be stuck
There's only one equation here. The three questions people actually show up with are that equation solved for each variable:
- What CPM did I pay? cost ÷ impressions × 1,000
- What will this budget buy? cost ÷ CPM × 1,000
- What will this volume cost? CPM × impressions ÷ 1,000
The calculator solves whichever one is missing, and the three paths agree with each other to the limit of floating point: feed a result back in and you land on the number you started with. It rejects fractional impressions, because an impression is a count of events and there's no half of one. That refusal has a practical reason. A fractional impression count almost always means the number arrived already divided, or was expressed in thousands, and accepting it silently would return a confident CPM for an input that isn't what you think it is.
A cheap CPM is not a good campaign
This is what separates a media plan from a rule of three. CPM prices the first link in a chain of five, and every link is a multiplication:
budget → impressions → clicks → conversions → revenue
Impressions turn into clicks at the click-through rate. Clicks turn into customers at the conversion rate. Only at the end of that chain does a cost per acquisition appear, and CPA is the number that decides whether the campaign lives.
That's why chasing a low CPM is one of the most reliable ways to waste a budget. Take two $10,000 buys. The first pays a $20 CPM for tightly targeted inventory: 500,000 impressions, a 0.8% click-through rate, a 4% conversion rate, a $120 order, 160 conversions at a $62.50 CPA. The second pays a $2 CPM for broad, cheap inventory and gets ten times the impressions, 5,000,000 of them. But at a 0.15% click-through rate and a 0.4% conversion rate, that's 30 conversions at a $333 CPA. The second buy is ten times cheaper per impression and more than five times worse per customer. The CPM improved, the business got worse, and a CPM-only report would never show it.
Work from the ceiling instead. Because the budget cancels out of the algebra, the highest CPM a campaign can support doesn't depend on how much you spend: max CPM = 1,000 × CTR × conversion rate × order value ÷ target ROAS. That turns "is this CPM expensive?", which has no answer, into "is this CPM above or below my ceiling?", which does.
ROAS is not ROI, and the difference is the whole margin
ROAS is revenue divided by ad spend. It's a multiple, not a percentage, and it says nothing about whether you made money, because it ignores what the product cost to make and deliver.
- ROAS = revenue ÷ ad spend
- ROI = (revenue − cost of goods − ad spend) ÷ ad spend
A 3× ROAS sounds like a 200% return. On a product with 60% cost of goods, each dollar of spend brings back $3.00 of revenue. $1.80 of that goes to the product and $1.00 was the ad, which leaves $0.20. That's a 20% ROI. Push cost of goods to 70% and the same 3× ROAS is a 10% loss: the campaign sold well and lost money.
In practice, break-even is almost never a ROAS of 1. It's 1 ÷ (1 − cost of goods rate): 2.5× at 60% cost of goods, 3.3× at 70%. A team celebrating clearing 2× has, in that second case, been losing money on every order. Fill in the cost of goods field and the calculator shows both numbers side by side, where the difference is impossible to miss.
eCPM: the same arithmetic from the other side of the auction
Every impression has a buyer and a seller, and the seller runs the identical calculation with the numerator swapped. The advertiser divides what it paid by the impressions bought; the publisher divides what it earned by the impressions served. That's eCPM. "Effective" because one ad slot typically earns from mixed models at once (auction CPM, CPC campaigns, affiliate CPA), and eCPM is the common denominator that lets you compare two ad units.
Two distinctions matter here, and most calculators skip both. First, served impressions are not ad requests. A 70% fill rate means three of every ten calls came back empty and earned nothing. eCPM measured on served impressions looks healthy, while eCPM measured on requests (the number that tells you what a page earns per opportunity) is 30% lower. A publisher who switches networks based on the first number can easily switch to something worse.
Second, the platform's cut. The ad tech take rate sits between what the advertiser pays and what the publisher receives: the SSP, the exchange and any middlemen keep a slice, historically enough of the supply chain's spend that industry studies have spent years trying to trace where it goes. Net eCPM is the only figure that shows up in a bank balance.
Viewability, the MRC standard and what you are actually buying
An impression is an ad that was served, which doesn't mean anyone saw it. The Media Rating Council standard counts a display impression as viewable when at least 50% of its pixels are in the viewport for at least one continuous second. Large-format display units get a lower pixel threshold, and video requires 50% of pixels for two continuous seconds. Anything below that was paid for and never had a chance to work.
That's why buyers increasingly trade on vCPM, cost per thousand viewable impressions, instead of raw CPM. The conversion is simple and unforgiving: at a 60% viewability rate, a $5 CPM is an $8.33 vCPM. Two placements quoted at the same CPM with viewability of 40% and 75% are not the same price, and comparing them on CPM alone tells you nothing. Invalid traffic pushes the same way: impressions served to bots get counted, billed and are worth nothing. Any serious plan discounts for both before deciding what an inventory source really costs.
Where CPMs land in the US market
Rates move constantly with the season (Q4 retail demand reliably lifts everything) and with how narrowly you target, because narrow targeting asks the auction for a smaller pool of people and scarcity gets priced. Use the ranges below as order-of-magnitude guidance for planning. They are not a rate card:
| Inventory | Typical US CPM | What drives it |
|---|---|---|
| Open exchange display | $0.50-$4 | Effectively unlimited supply; quality and viewability vary enormously. |
| Social feed, broad reach | $3-$10 | Priced by auction against every other advertiser wanting the same feed. |
| Social feed, conversion objective | $10-$30 | You bid for people the platform predicts will convert, not for eyeballs. |
| Online video and YouTube | $6-$20 | Completion and skip behavior change the effective price sharply. |
| Connected TV | $20-$50 | Fixed supply, non-skippable, sold with premium positioning. |
| Podcast host-read | $18-$50 | Priced on trust and a narrow, loyal audience instead of reach. |
| Professional and B2B audiences | $25-$90 | A small addressable pool with very high commercial value per person. |
| Programmatic guaranteed premium | $15-$45 | Reserved placements on named publishers, negotiated instead of auctioned. |
Open exchange, private marketplace and guaranteed deals
You can buy the same impression three ways, and the CPM you see reflects which one. Open exchange is the fully programmatic auction: any buyer, any seller, the lowest prices and the widest spread in quality. That's where the low-CPM trap lives. A private marketplace is an invitation-only auction on one publisher's inventory, with higher floor prices and known context. Programmatic guaranteed and traditional direct buys lock both volume and price in advance, which is how premium publishers hold rates the open exchange would never clear.
None of that changes the arithmetic on this page. It changes what the number means. A $2 CPM from the open exchange and a $25 CPM from a guaranteed deal are two prices for different things, and the only honest way to compare them is to run each one down the chain to its CPA.
Privacy
Every figure stays in your browser. Nothing is uploaded, nothing is logged and there is no account. That matters more here than on most calculators, because what you type is your media budget, your conversion rate and your margin, the three numbers you'd least want to hand to a stranger's form.
Frequently asked questions
What is the CPM formula?
CPM = cost ÷ impressions × 1,000. Divide the spend by the number of impressions to get the cost of one impression, then multiply by a thousand. Spending $2,500 for 400,000 impressions gives $0.00625 per impression, which is a $6.25 CPM. The same identity rearranged gives cost = CPM × impressions ÷ 1,000 and impressions = cost ÷ CPM × 1,000.
Why does my CPM calculation come out a million times too small?
The thousand ended up in the denominator. Writing cost ÷ (impressions × 1,000) instead of cost ÷ impressions × 1,000 gives a number a million times smaller than the right one, and it still looks like a believable price: small, positive, with decimals. The M in CPM is the Roman numeral for a thousand, not short for million, and the thousand multiplies the result instead of inflating the impression count.
Is a low CPM good?
Not by itself. CPM prices the first link in a chain: impressions turn into clicks at the click-through rate, clicks turn into customers at the conversion rate, and only then do you get a cost per acquisition. Buying impressions at half the price from an audience that converts at a third of the rate is a worse buy at a better price. CPA is the metric that decides, and a campaign can cut its CPM in half while its CPA doubles.
What is the difference between ROAS and ROI?
ROAS is revenue divided by ad spend, and it ignores what the product cost to make. ROI subtracts that cost too: (revenue − cost of goods − ad spend) ÷ ad spend. A 3× ROAS on a product with 60% cost of goods leaves $0.20 of profit per dollar spent. That's a 20% ROI, not 200%. At 70% cost of goods the same 3× ROAS loses money. Break-even isn't a ROAS of 1; it's 1 ÷ (1 − cost of goods rate), which is 2.5× at 60%.
What is eCPM and how is it different from CPM?
Same arithmetic, publisher's side. The advertiser divides what it paid by the impressions bought. The publisher divides what it earned by the impressions served, then multiplies by a thousand. It's called effective because one ad slot usually earns from mixed models (auction CPM, CPC campaigns, affiliate CPA), and eCPM is the common denominator that lets you compare two ad units.
What CPM should I expect to pay?
Format and targeting matter far more than the platform. Broad open-exchange display inventory in the US usually clears in the low single digits. Social feeds run from the mid single digits to the low teens depending on objective and audience. Connected TV, podcast and professional-audience inventory costs several times more. Narrow targeting raises CPM by definition: you're asking the auction for a smaller pool of people, and scarcity gets priced.
How many impressions will my budget buy?
Impressions = budget ÷ CPM × 1,000. A $5,000 budget at a $6.25 CPM buys 800,000 impressions. Set the calculator to solve for impressions and it does this directly, then carries the number through click-through rate and conversion rate so you see the clicks and conversions the budget implies, not just raw reach.
Are my numbers sent anywhere?
No. Everything runs as arithmetic in your browser. Nothing is uploaded, nothing is stored and there is no account. That matters here, because what you type is your media budget, your conversion rate and your margin structure.