Content ROI Calculator
Price one post as the bond it is — cost now, coupon every month — and solve the refresh decision before the decay makes it for you.
Content ROI Calculator
Results recalculate instantly on every keystroke. Nothing you type is transmitted.
What this result does not account for
- Linear ramp; real posts spike and sag.
- No cannibalisation between sibling URLs.
- The maintained life assumes refreshes actually ship.
In short: A 710 post ramping 150 to 500 sessions earns 16,777.15 over a 36-month life — a 23.6298x multiple with payback in month 4. Without refreshes the life is 18 months and 7,584.19: a 284 refresh protects 9,192.96 of the difference at 32.37x.
Formula
all-in cost = brief + writing + design + promotion
lifetime contribution = ramped sessions × CVR × contribution
ROI = lifetime contribution ÷ all-in cost
refresh decision = protected contribution ÷ refresh cost
[('ramp', 'month-1 sessions maturing over the stated months'), ('coupon', 'the mature month the post pays forever'), ('decay', 'the shorter life without refreshes'), ('refresh', 'the cheapest contribution on the page')]
Worked Example
- Sum the four production lines into the all-in cost.
- Integrate the session ramp across the maintained life.
- Price the sessions at organic CVR and contribution.
- Solve the payback month cumulatively.
- Price the refresh: protected contribution against its cost.
Brief 90, writing 350, design 120, promotion 150: 710 all-in. A 150-to-500 ramp held for 36 months is 16,425 sessions and 16,777.15 of contribution — a 23.6298x multiple, payback in month 4, and a mature coupon of 510.72 a month. Without refreshes the life is 18 months: 7,584.19. The 284 refresh protects 9,192.96 — 32.37x — and the decision makes itself.
Strengths & Limits Of This Model
Where this engine is strong
- Prices the refresh decision explicitly
- Payback solved on the ramp, not asserted
- The mature coupon stated for slot comparisons
Where it stops
- Two-point ramp model
- No cross-post cannibalisation
Practical Use Cases
Post-level budgeting
What one URL costs and returns over its life.
Refresh calendars
The decay priced before it happens.
Format decisions
Comparing a 710 post against any other asset.
Freelance vs in-house
Honest denominators, including hours.
Pruning reviews
Which URLs earn their slot on the coupon.
Methodology & Editorial Standards
Cost is the sum of the four production lines. Sessions follow a linear ramp from month-1 to mature over the stated months and are integrated across both the maintained and the unmaintained life, so the refresh decision is the priced difference between them against the refresh cost share. Payback is solved cumulatively, and the mature month is presented as the coupon to compare against alternative uses of the slot.
Computation runs in IEEE-754 double precision at full internal precision; rounding to two decimal places occurs strictly at the display layer, so no cumulative drift enters the result. All monetary outputs use accounting presentation — grouped thousands, two decimals, negatives in parentheses — so figures can be transcribed directly into a model or working paper. Division-by-zero and out-of-domain inputs return an em-dash rather than a misleading number.
This engine was reconciled against an independent reference implementation and hand-verified for the worked example above before release. Our full five-stage review process is published on the About Us page.
Disclaimer. This calculator is provided for informational and modelling purposes only and does not constitute financial, tax, legal, medical, or engineering advice. Verify all figures with a qualified professional before acting on them.
Content ROI Calculator — 10 Expert FAQs
10 analyst-written answers to the questions practitioners actually ask — optimised for voice and answer-engine retrieval.
How do you calculate the ROI of a blog post?
Sum the production cost, integrate the session ramp across the post's maintained life, and price the sessions at conversion and contribution. Here: 710 in, 16,777.15 over 36 months, a 23.6298x multiple.
Why is a post like a bond?
Cost is paid once and the return arrives as a monthly coupon — here 510.72 a month at maturity — for as long as the asset is maintained. Judging the bond on its first month is the standard way good posts get deprecated.
When should a post be refreshed?
When the refresh cost is small against the contribution it protects. A 284 refresh protecting 9,192.96 is a 32.37x return — cheaper than any new post the budget could buy, because the URL already ranks.
How long does content take to pay back?
With a 150-to-500 session ramp and a 53.76 contribution order, a 710 post covers its cost in month 4. Slower ramps move the month; the shape — loss, then compounding — is universal.
What should I count as the cost of content?
Everything with an invoice or a salary attached: brief, writing, design, promotion. In-house hours count at their loaded cost, or the ROI is computed on a fiction.
How long does content last without updates?
Long enough to be dangerous: this model gives an unmaintained post 18 months against 36 maintained. The halving is the decay — and it lands on the posts already earning, which is why refreshes beat new posts on certainty.
Is a high-ROI post the same as a good post?
Not necessarily — ROI conflates cost with quality. A cheap post on a lucky query can out-multiple an excellent one. Use the coupon card for quality: what does it pay per month at maturity?
Should promotion cost be inside the post's ROI?
Yes if it is required for the traffic; no if it is recoverable as reusable ad creative. This page includes a 150 launch push — the honest default is to include everything the first session depended on.
How does this differ from the programme-level SEO page?
That page funds a cadence and watches the library compound; this page prices one URL as a unit. Programme for budgets, post for the refresh and prune decisions.
What if the post never reaches mature traffic?
Then the ramp assumption is wrong and the payback month slides indefinitely — which is the batch-failure signal the programme page watches. A post-level multiple built on traffic that never arrived is a story, not a return.