Rule of 72 doubling time
Divide 72 by the annual rate to see roughly how long money takes to double: at 6% it is about 12 years. Or start from the years and get the rate you would need. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Rate percent
- 6
- Decimal places
- 4
- Calculation mode
- years_to_double
- Years
- 12
Estimate doubling time or required rate with the Rule of 72. Search intent: rule of 72 calculator. No network calls, no random seeds, and no server state are required for a correct answer. Failed jobs are not billed.
The two questions the Rule of 72 answers
The Rule of 72 is a shortcut for compound growth. It answers two questions without a spreadsheet: how many years money takes to double at a fixed annual rate, and what rate you would need to double it in a chosen number of years. For the first, divide 72 by the rate in percent; for the second, divide 72 by the years. At 6% a year, 72 divided by 6 is 12, so the money roughly doubles in 12 years. Turned around, doubling in 12 years calls for about 6% a year. It is handy for comparing savings accounts, investment returns or loan rates at a glance.
Common mistakes with the rule
The most frequent slip is entering the rate as a decimal fraction instead of a whole percent, which turns a 12-year answer into nonsense. The second is treating the result as exact: the rule gives an estimate, and when precision matters a dedicated doubling time calculation is the better choice. The rule also assumes the rate stays the same every year and that the growth stays invested. Results are rounded once to the number of decimals you choose.
When to use it
Use when the search intent matches this tool. Estimate doubling time or required rate with the Rule of 72. No network calls, no random seeds, and no server state are required for a correct answer.
Failed jobs are not billed. Landings target the stated search intent with precise keywords. Prefer explicit units and ranges over silent coercion of bad types.
When a field is optional, defaults are documented in params and echoed in the output. This keeps
FAQ
Locales?
EN-only delivery; Nitro hydrates the other seven languages.
Should I enter the rate as a percent or as a decimal?
As a percent: for a 6% rate, enter 6. The rule divides 72 by the whole percent, so 6 gives 12 years. Typing the decimal form instead would produce a wildly long doubling time that makes no sense.
How do I find the rate needed to double my money in a set time?
Use the reverse direction: divide 72 by the number of years. To double in 12 years you need roughly 6% a year. Treat it as a target for savings or investments, not a promise of returns.
Is the Rule of 72 exact?
No, it is a shortcut that gives an estimate. For the precise doubling time at a specific rate, a doubling time calculator is the better tool; the Rule of 72 is for quick mental checks and for comparing rates side by side.
Can I choose how many decimals the result shows?
Yes. Set the number of decimals and the result is rounded once from the unrounded figure, with halves going up. The example with a 6% rate returns 12 years whichever precision you pick.
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/finance/rule-of-72 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"rate_percent":6}'const res = await fetch("https://api.kit.forhosting.com/finance/rule-of-72", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"rate_percent": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/rule-of-72",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"rate_percent": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/rule-of-72", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"rate_percent":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"rate_percent":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/rule-of-72", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"rate_percent": 6
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.rule_of_72",
"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
The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.
How it works
No network calls, no random seeds, and no server state are required for a correct answer. Failed jobs are not billed. Landings target the stated search intent with precise keywords. Prefer explicit units and ranges over silent coercion of bad types. When a field is optional, defaults are documented in params and echoed in the output. Estimate doubling time or required rate with the Rule of 72. years ≈ 72 / rate_percent; rate ≈ 72 / years. The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.
Inputs, limits and rounding
Outputs echo inputs for logging. No network calls, no random seeds, and no server state are required for a correct answer. Failed jobs are not billed. Landings target the stated search intent with precise keywords. Prefer explicit units and ranges over silent coercion of bad types. When a field is optional, defaults are documented in params and echoed in the output. Provide required JSON fields. Optional decimals use half-up once from raw IEEE values. Invalid types or ranges raise invalid_input. The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.
When to use it
The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.
Integration use cases
Quick check
Use the free widget to verify a formula before production.
Automation
Call the API with the same JSON contract from scripts or CMS.
Teaching
Show pinned golden examples without proprietary software.
Technical questions
Is the browser widget free?
Yes. Tier A is free client-side with the same core as the API.
Does it use the network?
No. Computation is local and deterministic.
What on bad input?
invalid_input is thrown; failed jobs are not billed.
API compatible?
Yes — same JSON fields as params.json.