CBMC
CBMC is a bounded model checker for C and C++ programs, available for Linux, macOS, and Windows.
What CBMC is
CBMC is a bounded model checker for C and C++ programs, available for Linux, macOS, and Windows. It checks memory safety, including array bounds and pointer use, along with several forms of undefined behavior and user-written assertions. CBMC verifies by unwinding program loops and passing the resulting equation to a decision procedure. It supports C89, C99, most of C11 and C17, and extensions from GCC, Clang, and Visual Studio. Its supported features include dynamic memory, multidimensional and dynamically sized arrays, nondeterminism, assumptions, assertions, and selected C++ features such as classes, templates, and STL containers. It can check I/O equivalence between C or C++ and languages such as Verilog, and generate tests for branch, decision, path, and MC/DC coverage. A MiniSat-based bit-vector solver is included; Boolector, CVC5, and Z3 are supported but must be installed separately. The software is free under a BSD 4-clause license. Windows and macOS versions are command-line tools without a graphical interface.
Good
- Checks memory safety and undefined behavior.
- Supports several C standards and compiler extensions.
- Can generate tests for multiple coverage criteria.
- Free under a BSD 4-clause license.
Watch out
- Windows and macOS releases have no GUI.
- External solvers must be installed separately.
- Windows version runs from Visual Studio Command Prompt.
Who it suits
CBMC suits developers and verification practitioners working with C or C++ who need checks for memory safety, undefined behavior, or assertions. It is also relevant for users generating coverage-oriented test cases.
Verdict
CBMC offers program checking and test generation through a command-line workflow. Users on Windows or macOS should be comfortable without a graphical interface, and external solver use requires separate installation.
Plans and prices
From CBMC's own pricing page, checked 2 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| CBMC | Free | BSD 4-clause license · command-line tool |
The facts
Each one read from CBMC's own pages, with the date it was checked.
What it does
- Analysis method
- Verification unwinds program loops and passes the resulting equation to a decision procedure.checked 2 Oct 2026
- C features
- Supported C features include multidimensional and dynamically sized arrays, pointer checks, dynamic memory, nondeterminism, assumptions and assertions.checked 1 Oct 2026
- Cross-language checking
- CBMC can check C and C++ for I/O equivalence with languages such as Verilog.checked 1 Oct 2026
- Interface
- The maker describes the Windows and macOS releases as command-line tools with no GUI.checked 2 Oct 2026
- Language features
- The supported features page lists C arrays, pointers, dynamic memory, assertions, and C++ classes, templates, and selected STL containers.checked 2 Oct 2026
- Language support
- CBMC supports C89, C99, most C11/C17 and compiler extensions from GCC, Clang and Visual Studio.checked 1 Oct 2026
- License
- The maker identifies the license as BSD 4-clause; its terms permit redistribution and use in source or binary form subject to conditions.checked 2 Oct 2026
- License terms
- The license provides the software “AS IS” and disclaims warranties and liability.checked 2 Oct 2026
- Memory safety
- CBMC verifies memory safety, including array bounds and safe pointer use.checked 1 Oct 2026
- Purpose
- CBMC is a bounded model checker for C and C++ programs.checked 2 Oct 2026
- Solvers
- CBMC includes a MiniSat-based bit-vector solver and supports external Boolector, CVC5 and Z3 solvers.checked 1 Oct 2026
- Solver support
- CBMC includes a MiniSat-based bit-vector solver and supports external SMT solvers including Boolector, CVC5, and Z3, which must be installed separately.checked 2 Oct 2026
- Support
- The CBMC page directs questions to Daniel Kroening, and the CPROVER manual links to Google Groups support and announcements.checked 2 Oct 2026
- Supported languages
- It supports C89, C99, most of C11/C17, and many compiler extensions from GCC, Clang, and Visual Studio.checked 2 Oct 2026
- Test generation
- CBMC can generate test cases for coverage criteria including branch, decision, path, and MC/DC.checked 2 Oct 2026
- Undefined behavior
- CBMC checks various forms of undefined behavior and user-specified assertions.checked 1 Oct 2026
- Verification
- It checks memory safety, several kinds of undefined behavior, user assertions, and C/C++ I/O equivalence with other languages such as Verilog.checked 2 Oct 2026
- Verification method
- CBMC unwinds program loops and passes the resulting equation to a decision procedure.checked 1 Oct 2026
Where it runs
- Linux packaging
- CBMC is packaged for Debian and Ubuntu and can also be installed with Fedora's dnf package manager.checked 1 Oct 2026
- macOS limitation
- The macOS distribution is command-line only and has no GUI.checked 1 Oct 2026
- Platforms
- The maker lists Linux, Windows, and macOS availability and provides Linux packages for Debian, Ubuntu, and Fedora.checked 2 Oct 2026
- Windows limitation
- The Windows download is an x64 command-line binary with no GUI and is run from the Visual Studio Command Prompt.checked 1 Oct 2026
The full review of CBMC
CBMC is a bounded model checker for C and C++ that checks program properties and can generate tests. It is best suited to developers who need targeted verification and are comfortable working from a command line. Its free, broad C/C++ support is appealing, but loop unwinding and the command-line-only workflow make it a specialist choice.
Overview
CBMC unwinds program loops and sends the resulting equation to a decision procedure. It checks memory safety, including array bounds and safe pointer use, along with several forms of undefined behavior and user-written assertions. This is useful when a team wants to verify specific properties over bounded behavior; it should not be mistaken for a guarantee across unbounded execution.
It can also check I/O equivalence between C or C++ and languages such as Verilog, which gives it a role in software-hardware interface work. That focus is narrower than a general code-review environment, and Windows and macOS users must work without a graphical interface.
Key features
- C and C++ coverage: CBMC supports C89, C99, most of C11 and C17, and many compiler extensions from GCC, Clang and Visual Studio. Supported features include multidimensional and dynamically sized arrays, pointers, dynamic memory, nondeterminism, assumptions and assertions. C++ support includes classes, templates and selected STL containers. This range makes it relevant to varied codebases, though support for only most of newer C standards and selected containers is a qualification worth checking against a project’s needs.
- Property checking: Memory checks, undefined-behavior checks and user assertions let developers focus analysis on concrete defect classes and requirements. The bounded loop-unwinding method is a meaningful constraint: its results depend on the analyzed bound rather than covering arbitrary execution.
- Test generation: CBMC can generate test cases for branch, decision, path and MC/DC coverage. That makes it useful when coverage-oriented tests are part of the goal as well as verification.
- Solver choices: A MiniSat-based bit-vector solver is included, so a separate solver is not required for that route. Boolector, CVC5 and Z3 are supported as external SMT solvers, but users must install them separately.
- Command-line operation: Windows provides an x64 command-line binary run from the Visual Studio Command Prompt; macOS is also command-line only. This suits scripted or terminal-based work, but readers seeking a graphical workflow should look elsewhere.
Pricing
CBMC is free: the CBMC plan costs nothing and is released under a BSD 4-clause license. There is no paid tier or free-trial decision to weigh. The license provides the software “AS IS” and disclaims warranties and liability, so organizations should account for those terms when adopting it.
Platforms
CBMC supports Linux, macOS and Windows. On Linux it is packaged for Debian and Ubuntu and can also be installed with Fedora’s dnf package manager. Windows and macOS distributions have no GUI, and the Windows binary is specifically x64 and launched from the Visual Studio Command Prompt. The tool’s platform reach is broad, but its interface expectations are not.
Who it's for
CBMC fits C and C++ developers who need to check memory safety, selected undefined behavior or assertions, or generate tests against coverage criteria. It is particularly relevant when I/O equivalence with a language such as Verilog matters. It is a poorer fit for users who require a graphical interface, need a different analysis model than bounded loop unwinding, or do not want to install an external solver when one of those solvers is needed.
For questions, the project directs users to Daniel Kroening and provides a CProver Support Google Group. That offers a project-specific route for support, though the software’s license disclaims warranties.
Pros and cons
Pros
- Free under a BSD 4-clause license: there is no plan fee to add this specialist checker to a workflow.
- Concrete checks and test generation: memory safety, undefined behavior, assertions and multiple coverage-oriented test criteria address practical verification tasks.
- Substantial C/C++ feature coverage: support for arrays, pointers, dynamic memory and selected C++ constructs broadens its relevance beyond minimal examples.
- Built-in solver plus external options: the MiniSat-based solver provides an included route, while supported external solvers add alternatives for teams prepared to install them.
Cons
- Bounded analysis: loop unwinding constrains what the verification result covers, so it is not a universal proof over unbounded execution.
- No graphical interface on Windows or macOS: users must be comfortable with command-line operation, and Windows use adds the Visual Studio Command Prompt requirement.
- External solver setup: Boolector, CVC5 and Z3 require separate installation.
- License disclaimer: the BSD 4-clause license supplies the software as is and disclaims warranties and liability.
Alternatives
For a broader comparison, see C and C++ Static Analysis Tools.
- MATLAB Grader is the better fit for MATLAB work or a web-capable platform mix; its free use requires a current MATLAB license under maintenance, and LMS integration requires a qualifying academic license.
- Infer is another free static-analysis option for supported programming languages, distributed as a binary, source build or Docker image.
- Qodana suits teams seeking a freemium offering with a free trial and web or API platforms; its Community plan is billed free per active contributor per month.
- Semgrep Code is worth considering for a free edition that combines code and supply-chain coverage, with caps of 10 repositories, 10 contributors and 60 AI credits.
- Clang Static Analyzer is a free, open-source alternative for C, C++ and Objective-C across Linux, macOS and Windows.
- Flawfinder is a free GPL-2.0+ option for readers considering another open-source tool.
- Parasoft SOAtest is a paid alternative with a free plan and trial; its SOAtest plan uses custom pricing based on business needs.
- Squish is a paid alternative with a free trial and no free plan.
Verdict
Choose CBMC if you need free, property-focused checking or coverage-driven test generation for C and C++ and are prepared to work at the command line. Its included solver and substantial language coverage make it a capable specialist option. Look elsewhere if you need a GUI or require assurance beyond the bounds of loop-unwound analysis.
Getting started
- Visit https://www.cprover.org/cbmc/ to choose a platform download or installation route.
- On Debian or Ubuntu, use the available package; on Fedora, install with dnf.
- On Windows, use the x64 command-line binary from the Visual Studio Command Prompt.
- On macOS, use the command-line distribution; it has no GUI.
- Install Boolector, CVC5, or Z3 separately if you want to use one of those external solvers.
Limits worth knowing
The free CBMC plan is a command-line tool under a BSD 4-clause license. Windows and macOS distributions have no GUI, and external Boolector, CVC5, and Z3 solvers must be installed separately.
Questions
How much does CBMC cost?
CBMC is free under a BSD 4-clause license.
Which platforms does CBMC support?
CBMC is available for Linux, macOS, and Windows. Linux packages are available for Debian and Ubuntu, with Fedora installation through dnf.
Does CBMC have a graphical interface?
The Windows and macOS releases are command-line tools with no GUI. The Windows binary runs from the Visual Studio Command Prompt.
Which C and C++ language versions does CBMC support?
It supports C89, C99, most of C11 and C17, and many extensions from GCC, Clang, and Visual Studio. Listed C++ features include classes, templates, and selected STL containers.
Which solvers can CBMC use?
CBMC includes a MiniSat-based bit-vector solver. It also supports Boolector, CVC5, and Z3, which must be installed separately.
What does CBMC check?
It checks memory safety, several forms of undefined behavior, and user-specified assertions. It can also check C and C++ I/O equivalence with languages such as Verilog.
Alternatives to CBMC
- 1

Semgrep Code
Free planOpen sourceWebAPIExtensionLinux8.3From $15 a month - 2

Qodana
Free planWebAPIExtensionLinux7.9From $5 a month - 3

GitHub CodeQL
Free planWebExtensionLinuxmacOS7.5From $30 a month - 4

Understand
APIExtensionLinuxmacOS7.2From $100 a month - 5
Infer
Free planWebLinuxmacOSSelf-hosted6.7Free plan - 6

CppDepend
LinuxmacOSWindows6.3$599 one-time
