Backup retention storage calculator with deduplication
This backup retention storage calculator turns a daily backup volume and a retention period into a practical capacity estimate.
Run — free
Add an optional deduplication ratio to compare logical backup growth with the physical space likely to be consumed. The result shows raw storage, estimated stored data, terabytes, and savings, making it useful for early budgeting, infrastructure reviews, and policy discussions. It is a deterministic planning estimate: it does not inspect a backup system or silently assume compression, change rates, reserve capacity, replication, or operational overhead.
Start with a defensible daily backup volume
Enter the amount of backup data created during an ordinary day in gigabytes. The calculator multiplies that amount by the number of retained daily recovery points, so the quality of the result begins with the quality of this daily figure. For a full-backup policy, use the typical size of one full backup. For an incremental workflow, use the average new data stored per daily recovery point rather than the total protected source volume. A short measurement window can hide end-of-month exports, database maintenance, or seasonal peaks, so use a representative average or deliberately choose a high-percentile day when capacity risk matters more than a central estimate. The input can be zero for a hypothetical empty workload, but it cannot be negative or nonnumeric. Keep every figure in decimal gigabytes: the terabyte result also uses 1,000 gigabytes per terabyte. This consistent unit convention prevents an unnoticed mix of binary and decimal capacity labels from distorting procurement calculations.
Apply retention and deduplication correctly
Retention days represents the number of daily backup sets kept at the same time, and it must be a positive whole number. A value of 30 therefore models thirty retained daily recovery points, not a calendar month with an additional current copy. The raw estimate is daily backup size multiplied by retention days. Deduplication is entered as a ratio factor: use 1 for no reduction, 2 for a 2:1 ratio, 4 for 4:1, and so on. The estimated physical storage is the raw amount divided by that factor. This definition avoids confusing a ratio with a savings percentage; a 4:1 ratio means one quarter of the raw storage remains, which corresponds to 75 percent savings. Use a ratio supported by measurements from comparable workloads. Encrypted, compressed, or rapidly changing data may deduplicate poorly, while repeated virtual machine images may perform much better. If evidence is weak, run several scenarios and treat the lowest credible ratio as the safer planning case.
Turn the estimate into a capacity plan
The result separates raw storage from the deduplicated estimate and reports the difference as savings. It also converts the estimated amount to decimal terabytes for easier comparison with storage offerings. Those values describe retained backup payload only; they are not a complete appliance, repository, or cloud bill. Before purchasing capacity, add the overhead required by your actual design, including filesystem metadata, indexes, immutable snapshots, replication copies, erasure coding, staging space, restore testing, and free-space thresholds. Growth also matters: a daily volume measured today may be too small for a policy that must remain viable next year. A useful review records the inputs, runs conservative and expected deduplication cases, adds the organization’s operating reserve, and compares the totals with usable rather than advertised capacity. Recalculate whenever retention rules, backup frequency, protected systems, or deduplication behavior changes. The API costs $0.002 per request when you automate these checks, while the browser calculation uses the same deterministic logic for interactive planning.
What you can do with it
Size a new backup repository
Convert measured daily backup growth and a proposed retention policy into a baseline capacity requirement before adding operational reserve.
Compare deduplication scenarios
Evaluate no-deduplication, conservative, and expected ratios to see how workload efficiency changes physical storage needs.
Review a retention policy
Show the storage effect of keeping more or fewer daily recovery points during cost, compliance, and resilience discussions.
FAQ
How is required backup storage calculated?
Raw storage equals daily backup size multiplied by retention days. Estimated physical storage equals that raw amount divided by the deduplication ratio.
What should I enter when deduplication is not used?
Use a deduplication ratio of 1, or omit the optional field. The estimated and raw storage values will then be equal.
Is a 4:1 deduplication ratio the same as 4 percent savings?
No. A 4:1 ratio leaves one quarter of the raw data, which represents 75 percent estimated savings.
Does the estimate include replication and free space?
No. It estimates retained backup payload. Add replication, metadata, staging, immutability, restore-testing space, and an operating reserve separately.
Can retention days be zero or fractional?
No. Retention must be a positive whole number because the calculator models a count of retained daily backup sets.
What does an API calculation cost?
Each API request costs $0.002. The same deterministic calculation is also available in the browser.
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/dev/backup-retention-storage-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"daily_backup_size_gb":250,"retention_days":30}'const res = await fetch("https://api.kit.forhosting.com/dev/backup-retention-storage-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"daily_backup_size_gb": 250,
"retention_days": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/backup-retention-storage-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"daily_backup_size_gb": 250,
"retention_days": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/backup-retention-storage-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"daily_backup_size_gb":250,"retention_days":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"daily_backup_size_gb":250,"retention_days":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/backup-retention-storage-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"daily_backup_size_gb": 250,
"retention_days": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.backup_retention_storage_estimate",
"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. |