Calculate CAC to LTV ratio
When a customer's lifetime value is four times what it cost to win them, the ratio is 4:1 and clears the common 3:1 rule of thumb for a healthy business. A quick check of unit economics. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Customer acquisition cost
- 120
- Customer lifetime value
- 480
- Ltv cac ratio
- 4
- Ratio display
- 4:1
- Healthy threshold
- 3
The CAC to LTV ratio calculator compares what your business spends to acquire one customer with the value that customer is expected to generate over the relationship. Enter customer acquisition cost and customer lifetime value on the same currency and accounting basis. The result shows the LTV:CAC multiple, a readable ratio, and whether it reaches the widely used healthy-business rule of thumb of 3:1. It is a quick diagnostic for unit economics, not a substitute for examining margin, payback period, retention, cash timing, or differences between customer segments.
How to calculate the LTV:CAC ratio
The calculation divides customer lifetime value by customer acquisition cost. If lifetime value is 480 and acquisition cost is 120, the result is 4, commonly written as 4:1. That means the estimated value associated with an average acquired customer is four times the average cost of acquiring that customer.
Both inputs must use the same currency and should describe the same customer population and period assumptions. Do not compare an enterprise lifetime value with a blended acquisition cost that also includes self-service customers, because the arithmetic would be valid while the business conclusion would be misleading. This calculator returns the numeric multiple rounded to six decimal places, a display version rounded to two decimal places, and the original inputs for an auditable result.
Customer acquisition cost must be greater than zero because division by zero is undefined and a negative acquisition cost does not represent the conventional CAC metric. Lifetime value must be a finite number; a negative value is allowed because it can honestly represent a loss-making customer cohort.
Interpreting the 3:1 rule of thumb
A result of 3:1 or higher is flagged as healthy under the requested rule of thumb. At 3:1, each unit spent on acquisition corresponds to three units of estimated lifetime value. The flag is a screening signal, not a universal verdict.
A young company may intentionally accept a lower ratio while testing a channel, entering a market, or investing in growth, while a very high ratio may indicate that the business is underinvesting in acquisition and leaving profitable growth available. Industry structure also matters: gross margins, sales cycles, churn patterns, working-capital requirements, and the time needed to recover CAC can make two companies with the same ratio economically different.
The calculator evaluates the exact, unrounded quotient against the threshold, so a displayed value near 3.00 does not introduce a rounding-based classification error. A benchmark is most useful when it starts a focused question rather than ending the analysis.
Build comparable CAC and LTV inputs
Reliable interpretation depends more on input quality than on the division itself. CAC typically includes the sales and marketing costs attributable to acquiring customers divided by the number of new customers acquired. Decide whether salaries, commissions, agency fees, software, discounts, and overhead belong in that numerator, document the choice, and apply it consistently.
Lifetime value should follow a similarly explicit method. Revenue-based LTV can overstate economic value when delivery costs are material, so many teams prefer a gross-margin-adjusted contribution value. Segmenting is often better than blending: calculate separate ratios for paid search, partners, outbound sales, geography, plan, or acquisition month when their economics differ.
Use mature cohorts where possible, and label model-based lifetime estimates as forecasts. Recalculate on a stable cadence so changes reflect the business rather than shifting definitions. Keep the source CAC, source LTV, cohort definition, observation date, and calculation result together so reviewers can reproduce the decision later.
What you can do with it
Channel unit-economics review
Compare consistent CAC and LTV estimates by acquisition channel and flag channels that fall below the 3:1 screening threshold.
Cohort health dashboard
Calculate the ratio for monthly or quarterly customer cohorts and track whether improving retention or acquisition efficiency changes the result.
Budget planning check
Test forecast CAC and LTV assumptions before allocating a sales or marketing budget, then investigate payback and cash timing separately.
FAQ
What is the formula for the LTV:CAC ratio?
Divide customer lifetime value by customer acquisition cost: LTV:CAC = LTV / CAC. A quotient of 4 is displayed as 4:1.
What ratio is considered healthy?
This calculator applies the common rule of thumb that 3:1 or higher is healthy, but the right target depends on margin, payback, risk, and growth strategy.
Why must CAC be positive?
A zero CAC makes the ratio undefined, while a negative CAC does not fit the conventional acquisition-cost definition.
Should LTV use revenue or gross profit?
Use the definition appropriate to your analysis and label it clearly. Gross-margin-adjusted or contribution-based LTV often gives a more realistic economic comparison.
Is a very high LTV:CAC ratio always good?
Not necessarily. A very high ratio may mean the business is underinvesting in acquisition and leaving profitable growth on the table, while a young company may accept a lower ratio while testing a channel.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/biz/cac-ltv-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"customer_acquisition_cost":120,"customer_lifetime_value":480}'const res = await fetch("https://api.kit.forhosting.com/biz/cac-ltv-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"customer_acquisition_cost": 120,
"customer_lifetime_value": 480
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/cac-ltv-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"customer_acquisition_cost": 120,
"customer_lifetime_value": 480
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/cac-ltv-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"customer_acquisition_cost":120,"customer_lifetime_value":480}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"customer_acquisition_cost":120,"customer_lifetime_value":480}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/cac-ltv-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"customer_acquisition_cost": 120,
"customer_lifetime_value": 480
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.cac_ltv_ratio",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Interpreting the 3:1 rule of thumb
Use the boolean result to power a simple dashboard check, then investigate the underlying cohort data before changing budgets, pricing, or sales strategy.
Build comparable CAC and LTV inputs
The API price begins at $0.002 per request, and the same deterministic calculation can be used in recurring reports.
Technical questions
How much does an API calculation cost?
The API price starts at $0.002 per request. The calculation is deterministic and uses no network, model, or random input.