---
title: "Estimate RAID array IOPS performance and latency for ZFS and traditional RAID configurations. Calculates maximum read IOPS, write IOPS (accounting for write penalty/amplification per RAID level), blended IOPS for a configurable read/write workload mix, and rough per-disk latency. Supports stripe, mirror, raidz1, raidz2, and raidz3. Use with HDD IOPS (~150), SATA SSD (~50000), or NVMe SSD (~100000) to compare RAID topologies and plan storage performance for databases, VMs, media servers, and general homelab NAS workloads. Chains from zfs_capacity.data_disks for integrated capacity+performance planning."
method: POST
path: "/api/raid_iops"
tags: ["homelab"]
---

# Estimate RAID array IOPS performance and latency for ZFS and traditional RAID configurations. Calculates maximum read IOPS, write IOPS (accounting for write penalty/amplification per RAID level), blended IOPS for a configurable read/write workload mix, and rough per-disk latency. Supports stripe, mirror, raidz1, raidz2, and raidz3. Use with HDD IOPS (~150), SATA SSD (~50000), or NVMe SSD (~100000) to compare RAID topologies and plan storage performance for databases, VMs, media servers, and general homelab NAS workloads. Chains from zfs_capacity.data_disks for integrated capacity+performance planning.

`POST /api/raid_iops`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/raid_iops`
- Auth: none declared

## Request body

- object
  - `disk_count` number, required: Total number of physical disks in the array
  - `disk_iops` number: IOPS per individual disk. Typical values: HDD ~150, SATA SSD ~50000, NVMe SSD ~100000
  - `raid_type` 'stripe' | 'mirror' | 'raidz1' | 'raidz2' | 'raidz3': RAID level: stripe (no redundancy, write penalty 1), mirror (write penalty 2), raidz1 (write penalty 2), raidz2 (write penalty 3), raidz3 (write penalty 4)
  - `read_pct` number: Percentage of workload that is reads (0-100). Typical: 70 for mixed, 90 for read-heavy, 30 for write-heavy

## Response `200`

Computed result for raid_iops

- object
  - `result` object, required
    - `read_iops` number, required: Maximum read IOPS: disk_count * disk_iops
    - `write_iops` number, required: Maximum write IOPS: disk_count * disk_iops / write_penalty
    - `blended_iops` number, required: Effective IOPS for the given read/write mix: (read_pct * read_iops + write_pct * write_iops) / 100
    - `write_penalty` number, required: Write amplification factor for the chosen RAID level
    - `estimated_latency_ms` number, required: Rough per-disk latency estimate in milliseconds: 1000 / (blended_iops / disk_count)
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
