CBMC
CBMC is a free bounded model checker for C and C++ programs.
What CBMC is
CBMC is a free bounded model checker for C and C++ programs. It explores possible execution paths and checks assertions, including array bounds, pointer safety, exceptions, user-specified assertions, and some undefined behavior such as signed integer overflow. Its method unwinds loops and passes the resulting equation to a decision procedure, so analysis may require inputs to be limited to a bounded size. The project lists support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC using Scoot; listed input languages also include Java bytecode. CBMC supports contracts and can produce counterexamples. Its incremental SMT2 backend can use an SMT-LIB 2.6-compliant solver, with Z3 and CVC5 given as examples. Distribution options include macOS Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker images. The tool is licensed under the 4-clause BSD license and can be used in routine development and continuous integration. The project recommends released versions for production, not develop versions.
Good
- Checks array bounds, pointer safety, and exceptions.
- Supports many C standards and extensions.
- Can produce counterexamples.
- Free under the 4-clause BSD license.
Watch out
- Analysis may require restricting inputs to a bounded size.
- Develop versions are not recommended for production use.
Who it suits
CBMC suits developers working with C or C++ who want to check assertions and safety properties during development or continuous integration. It may also suit teams that can bound inputs for analysis and use a supported solver.
Verdict
CBMC offers a free way to examine bounded program behavior and check a range of assertions. Its bounded-input requirement is important when deciding whether it fits a verification task.
Plans and prices
From CBMC's own pricing page, checked 4 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| CBMC | Free | 4-clause BSD licensed open-source software |
The facts
Each one read from CBMC's own pages, with the date it was checked.
What it does
- Bounded analysis
- CBMC may require restricting inputs to a bounded size, and its verification unwinds loops before passing the resulting equation to a decision procedure.checked 4 Oct 2026
- Build integration
- goto-cc can replace gcc or cl.exe in Makefiles to collect project models for verification.checked 4 Oct 2026
- Continuous integration
- The user guide describes using CBMC as part of routine software development and continuous integration.checked 4 Oct 2026
- Distribution
- The release page provides macOS Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker container images.checked 4 Oct 2026
- Language support
- The repository states support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC using Scoot.checked 4 Oct 2026
- License
- The repository identifies CBMC as licensed under the 4-clause BSD license.checked 4 Oct 2026
- Purpose
- CBMC is a bounded model checker for C and C++ programs that explores possible execution paths and checks assertions.checked 4 Oct 2026
- Related tools
- The user guide names CBMC Viewer and CBMC Starter Kit as third-party tools for summarizing findings and adding verification to a project.checked 4 Oct 2026
- Release guidance
- The repository says released versions are tested and intended for production use, while develop versions are not recommended for production use.checked 4 Oct 2026
- Safety checks
- It can check array bounds, pointer safety, exceptions, user-specified assertions, and some undefined behavior such as signed integer overflow.checked 4 Oct 2026
- Solver support
- CBMC supports an incremental SMT2 backend that can use an SMT-LIB 2.6 compliant solver, with examples for Z3 and CVC5.checked 4 Oct 2026
- Support
- The repository asks users encountering problems to file a bug report as a GitHub issue.checked 4 Oct 2026
Where it runs
- Platforms
- The installation guide points to installation instructions for macOS, Ubuntu, Windows, and Docker.checked 4 Oct 2026



