QuickDiskBench is a Windows SSD / HDD / NVMe benchmark tool. It measures sequential and random transfer performance and IOPS using Direct I/O with the Windows OS cache bypassed.
If you do not need the source code or Python environment, download the distribution ZIP from GitHub Releases.
The ZIP contains all distribution files in one flat folder.
QuickDiskBench.exe- GUI versionQuickDiskBench_cli.exe- command-line versionWebView2Loader.dll- WebView2 loaderindex.html- GUI contentbenchmark-all-drives.ps1- script for benchmarking all fixed volumesREADME.txt/README-en.txt- distribution documentationLICENSE.txt/LICENSE-ja.txt- MIT License files
SHA-256 of the v2.1.1 release binaries:
119FD0368B0BE58160DD314CC52DDA437E84D6BA2FF3EFA3B63A6C8B9FE4A828 QuickDiskBench.exe
4528BEFAE3FB83E81417DDAD62C9360EBE019C402B5E6B37FC03B0341E183D81 QuickDiskBench_cli.exe
A9A09232C25805323D4CFB3FC8F545A190A9C8A99C93262EA99D0B88DF99EC90 WebView2Loader.dll
Run QuickDiskBench.exe for the GUI. The language switch, CSV export, and Help buttons are stacked on the right side of the header in both Japanese and English. The Help dialog ends with the author image. If WebView2 Runtime is unavailable, install Microsoft Edge WebView2 Runtime (Evergreen). It is normally included with Windows 11, but may require installation on older Windows 10 systems, LTSC, Server, or managed devices.
cd I:\path\to\QuickDiskBench-binary
.\QuickDiskBench_cli.exe --help
.\QuickDiskBench_cli.exe --drive D:\ --size 512 --passes 3
.\QuickDiskBench_cli.exe --drive D:\ --raw --csv result.csv
.\QuickDiskBench_cli.exe --drive D:\ --size 4096 --timeout 120Main options:
--drive PATH- target location, for exampleC:\--size MiB- temporary test-file size; minimum 64 MiB, default 256 MiB--passes N- number of repetitions for each test (1-9)--timeout SEC- per-test timeout; default 60 seconds, range 1-3600--raw- add Write-Through to reduce the effect of device-side write caching--csv PATH- save the result summary as CSV
The default timeout is 60 seconds per test. For 4 GiB or larger tests, or when a slow or busy drive reports Win32 error 1460 (timeout), retry with a larger value such as --timeout 120 or --timeout 180.
The GUI provides the same timeout choices in its Timeout control: 60, 120, 180, 300, or 600 seconds. When no I/O completes, it displays Waiting for I/O; progress is based on completed I/O operations rather than elapsed time, and the chart shows the waiting period as 0 MB/s. After the run, the drive information panel shows the total elapsed measurement time.
Open PowerShell in the distribution folder and run:
cd I:\path\to\QuickDiskBench-binary
.\benchmark-all-drives.ps1Specify size, pass count, and timeout as needed:
.\benchmark-all-drives.ps1 -SizeMiB 256 -Passes 2
.\benchmark-all-drives.ps1 -SizeMiB 4096 -TimeoutSec 120If execution policy blocks the script:
powershell -ExecutionPolicy Bypass -File .\benchmark-all-drives.ps1The script enumerates fixed volumes and writes a combined summary to results\summary-YYYYMMDD-HHMMSS.csv. Close important applications and ensure sufficient free space before running write tests.
- With cache:
FILE_FLAG_NO_BUFFERINGbypasses the Windows OS cache while allowing device hardware cache. - Without cache:
FILE_FLAG_NO_BUFFERINGis combined withFILE_FLAG_WRITE_THROUGHto reduce the effect of device hardware cache.
Results vary with drive temperature, free space, power settings, connection method, background activity, and firmware.
python -m pip install -r requirements.txt
python main.pyThe binary release is recommended for normal use. Building the native version requires LLVM-MinGW for Windows and the WebView2 SDK.
The native build uses the MinGW-w64 C++ toolchain. The current local build was validated with WinLibs (MCF threads, UCRT runtime), package BrechtSanders.WinLibs.MCF.UCRT, version 16.1.0-14.0.0-r1:
winget install --id BrechtSanders.WinLibs.MCF.UCRT --exact --source wingetbuild_native.py automatically searches the standard WinGet package location and also looks for windres.exe next to the detected compiler, so adding MinGW to PATH is not required for the project build. Add the package's mingw64\bin directory to the user PATH if you also want to invoke g++ and windres directly. With the standard WinGet installation, it is usually:
%LOCALAPPDATA%\Microsoft\WinGet\Packages\BrechtSanders.WinLibs.MCF.UCRT_Microsoft.Winget.Source_8wekyb3d8bbwe\mingw64\bin
Verify the compiler and resource compiler before building:
g++ --version
windres --version
python build_native.pyAfter changing PATH, close and reopen the terminal or IDE. An already-open session keeps its old PATH; the project build itself does not depend on that restart because build_native.py checks the WinGet location directly. It checks g++ first, then clang++.
The WebView2 SDK headers are expected at C:\tools\webview2\build\native\include by default. Set WEBVIEW2_INCLUDE if the SDK is installed elsewhere.
This project is provided under the MIT License. See dist/documents/LICENSE.txt for the English original and dist/documents/LICENSE-ja.txt for the Japanese reference translation.
This software is provided as-is. The author assumes no responsibility for write tests, measurement results, data loss, system failures, or hardware damage. Always back up important data before use.
While standard benchmarks excel at measuring peak burst performance, real-world workloads—such as loading large local LLM models or intensive data processing—heavily rely on sustained speed and consistency.
QuickDiskBench was developed to quickly diagnose drive performance under practical conditions, born from real troubleshooting with local AI environments.
- Average & Standard Deviation: Evaluates practical throughput and stability by calculating the average speed and variance across multiple rapid runs.
- Direct I/O (Cache-Bypass Mode): Bypasses OS/controller cache buffering to help observe the drive's baseline performance under continuous load.
- Time-Efficient Diagnostics: Quickly provides actionable diagnostic data without prolonged wait times.
