CalcEngine All Calculators

Disk IOPS Calculator

General

Calculate disk IOPS from seek time, RPM, block size, and transfer rate. Works for HDDs, SSDs, and NVMe drives — enter your drive specs and get an instant result.

Last updated: April 2026

This calculator is designed for real-world usage based on typical engineering scenarios and publicly available documentation.

A disk IOPS calculator helps you estimate how many input/output operations per second your storage can sustain before becoming a bottleneck. IOPS is the single most important metric for random-access workloads — databases, virtual machines, and transaction logs all depend on it. Knowing your drive's IOPS ceiling lets you right-size storage before deploying to production. Storage engineers, DBAs, and DevOps teams use this calculation to compare drive tiers, validate cloud storage choices, and size RAID arrays. Hard drives are limited by mechanical movement — seek time and rotational latency dominate IO time — while SSDs eliminate rotation entirely, pushing IOPS into the tens of thousands. NVMe drives remove the SATA bottleneck too, with IOPS exceeding one million on high-end models. The formula above calculates maximum theoretical IOPS for random 4K reads. Real-world IOPS will vary with queue depth, filesystem overhead, and mixed read/write ratios, but this figure gives you a useful upper bound for capacity planning and drive comparisons. To model the cost of storing data on cloud storage tiers alongside this performance estimate, use the Storage Cost Calculator.

How to Calculate Disk IOPS

Disk IOPS — how it works diagram

1. Enter seek time — the time in milliseconds for the disk head to move to the correct track. Typical HDDs: 8–12 ms. SSDs: 0.05–0.1 ms. 2. Enter disk RPM — used to derive rotational latency. Common values: 5400, 7200, 10000, 15000. Enter 0 for SSDs (no rotation). 3. Enter block size in KB — the granularity of each IO operation. Use 4 KB for database workloads, 64–512 KB for large sequential reads. 4. Enter transfer rate in MB/s — your drive's sequential transfer speed, found on the spec sheet or measured with a benchmark tool. 5. The calculator derives: Rotational Latency = (60,000 / RPM) / 2; Transfer Time = (Block KB / 1024) / Rate × 1000; IO Time = Seek + Rot. Latency + Transfer Time; IOPS = 1000 / IO Time.

Formula

IOPS = 1000 / IO Time

IO Time (ms)            = Seek Time + Rotational Latency + Transfer Time
Rotational Latency (ms) = (60,000 / RPM) / 2
Transfer Time (ms)      = (Block Size KB / 1024) / Transfer Rate MB/s × 1000

Seek Time       — time to position the read/write head over the correct track (ms)
Rotational Latency — average time to wait for the sector to rotate under the head (ms)
Transfer Time   — time to read the data block once positioned (ms)
IO Time         — total elapsed time per IO operation (ms)
IOPS            — maximum random IO operations per second

Example Disk IOPS Calculations

Example 1 — 7200 RPM HDD (typical desktop / NAS drive)

Seek Time:         8.00 ms
Rot. Latency:      60,000 / 7200 / 2  =  4.17 ms
Transfer Time:     (4 KB / 1024) / 100 MB/s × 1000  =  0.039 ms
                                                         ──────────────
IO Time:           8.00 + 4.17 + 0.039  =  12.21 ms
IOPS:              1000 / 12.21  ≈  82 IOPS

Example 2 — Consumer SATA SSD (e.g. Samsung 870 EVO)

Seek Time:         0.10 ms
Rot. Latency:      0 ms  (no rotating platter)
Transfer Time:     (4 KB / 1024) / 550 MB/s × 1000  =  0.007 ms
                                                         ──────────────
IO Time:           0.10 + 0 + 0.007  =  0.107 ms
IOPS:              1000 / 0.107  ≈  9,346 IOPS

Example 3 — 15,000 RPM Enterprise SAS Drive

Seek Time:         3.50 ms
Rot. Latency:      60,000 / 15,000 / 2  =  2.00 ms
Transfer Time:     (4 KB / 1024) / 200 MB/s × 1000  =  0.020 ms
                                                         ──────────────
IO Time:           3.50 + 2.00 + 0.020  =  5.52 ms
IOPS:              1000 / 5.52  ≈  181 IOPS

Tips to Maximise Disk IOPS

Notes

Frequently Asked Questions

What is IOPS and why does it matter? +
IOPS (Input/Output Operations Per Second) measures how many individual read or write operations a storage device completes each second. It matters because latency-sensitive workloads — databases, virtual machine disks, transaction logs — issue thousands of small random IOs per second. If IOPS is too low, queries queue up and application latency spikes regardless of CPU or memory headroom.
How many IOPS does a 7200 RPM HDD deliver? +
A typical 7200 RPM HDD delivers 80–120 IOPS for random 4K reads, constrained by ~8 ms seek time and ~4.2 ms rotational latency. This is the dominant bottleneck for database workloads running on spinning disks. Sequential throughput is much higher — 100–200 MB/s — but sequential IOPS still caps around 80 at 4 KB block size due to the same head-movement overhead.
How many IOPS does an NVMe SSD achieve? +
Consumer NVMe SSDs (PCIe 4.0) reach 500,000–1,000,000 random 4K read IOPS. Enterprise NVMe drives (Optane, PCIe 5.0) exceed 1.5M IOPS. The formula here gives a theoretical ceiling; real-world IOPS depends on queue depth, write mix, and firmware behaviour. For detailed storage sizing, pair this with the Storage Cost Calculator to budget cloud alternatives.
What is the difference between sequential and random IOPS? +
Random IOPS measures operations on scattered disk locations — this is the worst case for HDDs because the head must physically move between tracks. Sequential IOPS measures operations on contiguous data, eliminating seek time. SSDs have negligible difference between sequential and random at small block sizes. The formula on this page models random IOPS, which is the relevant metric for most application workloads.
How do I measure actual IOPS on Linux? +
Use fio — the standard storage benchmark: fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --iodepth=32 --runtime=30 --filename=/dev/sdb. For a quick live view of current IOPS, run iostat -x 1 and read the r/s and w/s columns. Always benchmark at the block size your application actually uses for an accurate comparison.