RAID calculator
Four 2 TB disks in RAID 5 give 6 TB of usable space out of 8 TB raw, a 75% efficiency, and one disk can fail. Choose the level, the number of equal disks and their size to plan a NAS before you buy. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Raid level
- 5
- Disk count
- 4
- Disk size
- 2
- Raid name
- RAID 5
- Scheme
- distributed parity
- Min disks
- 3
- Data disks
- 3
A RAID calculator answers the storage question that trips up almost every first NAS build: given a RAID level, a count of equal disks, and the size of each disk, how much capacity can you actually write, and how many disks can fail before the array is gone. Invoice terabytes are raw. RAID 1, 5, 6, and 10 spend part of that raw space on mirrors or parity, so usable capacity is the number that belongs in a purchase plan and a filesystem forecast.
Raw space versus usable space
The terabytes printed on a disk invoice are raw capacity: the number of disks times the size of each one. RAID 1, 5, 6 and 10 set part of that raw space aside for mirrors or parity, so the space you can actually write is smaller. RAID 0 keeps everything but survives no failure at all. RAID 1 mirrors every disk, so you keep the space of one disk and can lose all the others but one. RAID 4 and RAID 5 give up one disk to parity, and RAID 6 gives up two. The result comes back in the same unit you used for the disk size.
Planning a NAS before buying drives
Work backward from the space you need. For eight terabytes on RAID 5 with 2 TB disks, four disks give only 6 TB, so you need five. RAID 6 with the same disks needs six, and RAID 10 needs eight while allowing one failure in each mirrored pair. A common mistake is treating RAID 0 as a home for photos or backups: four 2 TB disks give the full 8 TB and no protection. Another is mixing disk sizes or expecting RAID 50 or 60, which this calculator does not cover.
Planning arrays before you buy disks
Use this calculator before you click buy, not after the drives are in the chassis. If you need eight terabytes of filesystem space on RAID 5 with two-terabyte disks, four members give six terabytes usable—short of the goal—so you need five members for eight terabytes usable plus the parity disk. RAID 6 with the same two-terabyte disks needs six members for eight terabytes usable because two disks are parity.
RAID 10 with two-terabyte disks needs eight members for eight terabytes usable, costs more spindles, and pays for faster rebuilds and the ability to lose one disk per pair. RAID 0 with four two-terabyte disks gives the full eight terabytes and zero fault tolerance; that is a scratch pool, not a photo archive.
Prefer this capability when disks are equal and the level is 0, 1, 4, 5, 6, or 10; if you need RAID 50, RAID 60, or mixed-size pooling, that is a different layout with extra parameters this landing does not claim to solve.
FAQ
What is the minimum disk count for each RAID level?
RAID 0 and RAID 1 need 2 disks. RAID 4 and RAID 5 need 3. RAID 6 and RAID 10 need 4.
How much usable space do four 2 TB disks give in RAID 5?
6 TB out of 8 TB raw, an efficiency of 75%. One disk's worth of space holds the parity, so the array survives the failure of any one disk.
What is the difference between RAID 4 and RAID 5?
Capacity and protection are the same: both need at least three disks, keep all but one disk of space and tolerate one failure. RAID 4 stores parity on a dedicated disk, while RAID 5 spreads it across all members.
How many disks can fail in RAID 10?
One disk in each mirrored pair. If both disks of the same pair fail, the array is lost. With eight 2 TB disks you get 8 TB of usable space and faster rebuilds than parity levels.
Does it handle RAID 50, RAID 60 or disks of different sizes?
No. It covers RAID 0, 1, 4, 5, 6 and 10 with disks of equal size. Nested levels and mixed-size pools need extra details, such as a group count, that this calculator does not take.
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/game/raid \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"raid_level":"5","disk_count":4,"disk_size":2}'const res = await fetch("https://api.kit.forhosting.com/game/raid", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"raid_level": "5",
"disk_count": 4,
"disk_size": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/raid",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"raid_level": "5",
"disk_count": 4,
"disk_size": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/raid", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"raid_level":"5","disk_count":4,"disk_size":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"raid_level":"5","disk_count":4,"disk_size":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/raid", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"raid_level": "5",
"disk_count": 4,
"disk_size": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.raid",
"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.
Limits
max_disks | 256 |
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
This tool supports RAID 0, 1, 4, 5, 6, and 10, returns usable_capacity in the same unit you used for disk_size, and reports fault_tolerance as a disk count. If disk_count is below the level's minimum the task fails with invalid_input instead of inventing a layout that no controller would assemble. The free browser path and the prepaid API share one deterministic module; successful API calls cost $0.002.
RAID formulas: usable capacity, overhead, and fault tolerance
RAID usable capacity is never a mystery once the disks are equal. RAID 4 keeps a dedicated parity disk; RAID 5 rotates that single parity stripe across members. Two failures in the same pair still kill that stripe. Nested RAID 50 and RAID 60 need a group count this three-field contract does not accept, so they are not offered. Raw capacity is disk_count times disk_size. RAID 0 stripes every block across all members with no copy and no parity, so usable_capacity equals raw capacity and fault_tolerance is zero: any single disk failure loses the array. RAID 1 is an n-way mirror: usable_capacity equals one disk_size, and the array survives until the last remaining disk fails, so fault_tolerance is disk_count minus one. Both need at least three disks, both give usable_capacity of (disk_count minus one) times disk_size, and both tolerate exactly one disk failure. RAID 6 stores two independent parity syndromes, needs at least four disks, gives usable_capacity of (disk_count minus two) times disk_size, and tolerates any two disk failures. RAID 10 is a stripe of two-disk mirrors: disk_count must be even and at least four, usable_capacity is half of raw, and one disk may fail in each pair (up to disk_count over two). Efficiency_percent is usable_capacity divided by raw_capacity times one hundred, so RAID 5 with four disks is seventy-five percent and RAID 10 is always fifty. These identities assume identical members; mixed sizes are truncated to the smallest disk by real controllers and are out of scope here. Overhead is simply raw_capacity minus usable_capacity: the space spent on copies or parity rather than host data.
Input contract, level minima, and the response shape
RAID 10 additionally requires an even count so members pair into mirrors. None of those failures are billed. Send a JSON body with three required fields. Field raid_level is the closed set 0, 1, 4, 5, 6, or 10; aliases level, raid, and raid_type are accepted, and a leading raid prefix is stripped so RAID-5 and 5 mean the same layout. Field disk_count is a positive integer from two through two hundred fifty-six; aliases disks, n, drives, and drive_count map to it. Field disk_size is a positive finite capacity in any consistent unit—gigabytes, terabytes, or tebibytes—because every output capacity is returned in that same unit; aliases size, capacity, drive_size, and disk_capacity are accepted. Minimum disk_count depends on the level: two for RAID 0 and RAID 1, three for RAID 4 and RAID 5, four for RAID 6 and RAID 10. A disk_count below the level minimum is invalid_input naming disk_count; an odd RAID 10 count is invalid_input for the same field; a missing or non-finite disk_size is invalid_input naming disk_size. On success the body echoes raid_level, disk_count, and disk_size; names the layout (raid_name, scheme); lists min_disks, data_disks, and redundancy_disks; and returns raw_capacity, usable_capacity, overhead, efficiency_percent, fault_tolerance, fault_tolerance_note, formula, and a one-line message. Example: raid_level 5, disk_count 4, disk_size 2 yields usable_capacity 6, overhead 2, efficiency 75, and fault_tolerance 1. Pricing is a flat $0.002 per successful request with unit item.
Planning arrays before you buy disks
Homelab NAS shoppers comparing consumer RAID 5 against RAID 6 should weigh the extra disk of RAID 6 against the dual-parity rebuild window, which this tool does not simulate: it reports static capacity and static fault_tolerance, not rebuild time or unrecoverable-read-error risk during a rebuild. Keep disk_count at or below two hundred fifty-six and disk_size inside the published positive range so intermediate products stay finite in IEEE double precision on the Worker and in the browser. Failed validation does not consume prepaid balance, which keeps exploratory scripts cheap when you try RAID 5 with two disks and learn the minimum is three. Successful API calls cost $0.002 per request.
Integration use cases
Homelab NAS before buying drives
Enter RAID 5 or RAID 6, the number of bays you will fill, and the advertised terabytes per disk to see usable_capacity before you order a matching set.
Datacenter bill of materials
Capacity planners compare RAID 10 versus RAID 6 on the same disk_size and disk_count to trade usable terabytes against fault_tolerance in a spreadsheet or script.
Sysadmin coursework and fixtures
Instructors generate known-good RAID 0/1/5/6/10 cases plus a below-minimum disk_count rejection so students see usable capacity and invalid_input together.
Technical questions
How is usable RAID capacity calculated?
With equal disks: RAID 0 uses n times disk_size; RAID 1 uses one disk_size; RAID 4 and 5 use (n-1) times disk_size; RAID 6 uses (n-2) times disk_size; RAID 10 uses (n/2) times disk_size.
What happens if disk_count is below the RAID minimum?
The task fails with invalid_input naming disk_count. The calculator will not invent a degraded array or silently fall back to another RAID level. Failed validation is not billed.
What units does disk_size use?
Any consistent unit you choose (GB, TB, TiB). raw_capacity, usable_capacity, and overhead are returned in that same unit. Convert vendor decimal TB versus binary TiB yourself if your controller uses one or the other.
What does the RAID calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.