Rapid
What it is
Rapid is a free, self-hosted Go library for property-based testing. It checks user-defined properties against automatically generated test cases, using type-safe generic generators that favor small values and edge cases. When a failure occurs, Rapid minimizes the failing case before presenting it, and it can persist minimized failures for automatic reruns. The library supports state machine testing and includes MakeFuzz, which lets a Rapid test serve as a target for Go’s standard fuzzing tool. Tests run with the standard go test command. Configuration is available through -rapid flags or corresponding RAPID_ environment variables. Rapid has no dependencies beyond the Go standard library and is licensed under the Mozilla Public License Version 2.0. The project states that tests should continue working across future releases within the same major version, subject to listed API-change exceptions. Rapid describes itself as suited to structured data and state-machine tests, but it does not provide coverage-guided feedback or mutations.
For and against
For
- Free open-source Go library
- Automatic shrinking of failing cases
- Persists and reruns minimized failures
- Supports state machine testing
- No dependencies outside Go standard library
Against
- Supports Go only
- Lacks coverage-guided feedback
- Lacks mutation-based fuzzing
- Requires self-hosted setup
The verdict
Rapid provides focused property-based testing within Go’s standard testing workflow. Its generators, failure minimization, persistence, and state-machine support are useful, while its fuzzing approach omits coverage guidance and mutations.
Who it suits
Rapid suits Go developers who want generated property tests, minimized failures, reproducible reruns, or state-machine coverage. It is particularly relevant when structured data matters more than coverage-guided fuzzing.
Plans and prices
Rapid
Open-source Go library · No dependencies outside the Go standard library
Read 3 Oct 2026 · github.com
On the record
- Automatic minimization
- When a failure is found, Rapid automatically minimizes the failing test case before presenting it.github.com · read 3 Oct 2026
- Comparison limit
- Compared with Go's testing.F.Fuzz, Rapid describes itself as better suited to structured data and state machine tests, while lacking coverage-guided feedback and mutations.github.com · read 3 Oct 2026
- Configuration
- Rapid's options can be set with flags prefixed -rapid. or corresponding RAPID_ environment variables.github.com · read 3 Oct 2026
- Data generation
- Its type-safe generators use generics and bias data generation toward small values and edge cases.github.com · read 3 Oct 2026
- Dependencies
- Rapid has no dependencies outside the Go standard library.github.com · read 3 Oct 2026
- Failure persistence
- Rapid supports persisting minimized failing test cases and automatically rerunning them.github.com · read 3 Oct 2026
- Fuzzing integration
- The MakeFuzz function lets a Rapid test be used as a fuzz target for Go's standard fuzzer.github.com · read 3 Oct 2026
- License
- Rapid is licensed under the Mozilla Public License Version 2.0.github.com · read 3 Oct 2026
- Stability
- The project says tests should continue to work across future releases with the same major version, subject to stated API-change exceptions.github.com · read 3 Oct 2026
- Stateful testing
- Rapid supports state machine testing.github.com · read 3 Oct 2026
- Usage
- Rapid tests run with the standard go test command.github.com · read 3 Oct 2026
- What it does
- Rapid is a Go library for property-based testing that checks user-defined properties against automatically generated test cases.github.com · read 3 Oct 2026