Saturday, October 24, 2026 4,350 lists 78,096 records on file
List your app or device

  1. Home
  2. Formal Verification Tools
  3. Z3

Z3

What it is

Z3 is a theorem prover and satisfiability modulo theories solver used in software verification and analysis. SMT-LIB2 is its default input format, and the project supports the SMT-LIB format. The repository documents bindings or APIs for C, C++, .NET, Java, Go, OCaml, Python, Julia, and JavaScript/TypeScript. Listed input languages also include Rust and Smalltalk. Z3 supports proof artifacts and counterexamples. Developers can build it using CMake, vcpkg, or Bazel, and the repository links to pre-built binaries for stable and nightly releases. A project wiki points to a page for trying Z3 in a browser. It is self-hosted software licensed under MIT, with source code and downloads available at no charge. Python is required to build Z3; additional toolchains are needed for Java, .NET, OCaml, and Julia APIs. The README says MSVC builds enable Control Flow Guard and Address Space Layout Randomization by default.

For and against

For

  • Free and MIT licensed
  • Supports SMT-LIB2 input
  • Provides proof artifacts and counterexamples
  • Documents APIs across multiple languages
  • Offers pre-built stable and nightly binaries

Against

  • Python is required to build Z3
  • Additional toolchains are needed for some APIs
  • Support for external bindings comes from their package creators

The verdict

Z3 provides a free solver for software verification and analysis, with multiple language interfaces and build options. Check the build requirements for the APIs you plan to use.

Who it suits

Z3 suits developers and researchers working on theorem proving, software verification, or analysis. It may fit users comfortable building or integrating self-hosted software and its language APIs.

Plans and prices

Z3 (MIT licensed)

Free

MIT-licensed downloads and source code

Every plan, in full

On the record

Applications
Z3 is used in software verification and analysis applications.microsoft.com · read 2 Oct 2026
Browser use
The project wiki links to a page for trying Z3 in a browser.github.com · read 2 Oct 2026
Build systems
Z3 can be built using CMake, vcpkg, or Bazel.github.com · read 2 Oct 2026
Dependencies
Python is required to build Z3, and additional toolchains are needed to build Java, .NET, OCaml, and Julia APIs.github.com · read 2 Oct 2026
Downloads
The repository links to pre-built binaries for stable and nightly releases.github.com · read 2 Oct 2026
Input
SMTLIB2 is Z3’s default input format.github.com · read 2 Oct 2026
Language interfaces
The repository documents bindings or APIs for C, C++, .NET, Java, Go, OCaml, Python, Julia, and JavaScript/TypeScript.github.com · read 2 Oct 2026
License
The repository states that Z3 is licensed under the MIT license.github.com · read 2 Oct 2026
Purpose
Z3 is a theorem prover and satisfiability modulo theories (SMT) solver.github.com · read 2 Oct 2026
Security
The README says MSVC builds enable Control Flow Guard and Address Space Layout Randomization by default.github.com · read 2 Oct 2026
SMT-LIB
Z3 supports the SMTLIB format.github.com · read 2 Oct 2026
Support
The project wiki says to contact the creator of an external binding package for support issues.github.com · read 2 Oct 2026

The review

Overview

Z3 is a theorem prover and SMT solver for software verification and analysis. It is best suited to developers and verification teams who need to express problems in SMT-LIB2 or connect a solver to software through language interfaces. Its range of integration options is a strength, but building selected APIs requires extra toolchains.

Key features

SMT-LIB2 is Z3’s default input, and SMT-LIB support gives users a format for expressing solver problems. Z3 also supports theorem-proving, counterexamples, and proof artifacts, making it relevant to workflows that need to reason about software behavior and inspect results. It is a specialized verification tool, not a general-purpose app for everyday users.

Documented bindings or APIs cover C, C++, .NET, Java, Go, OCaml, Python, Julia, and JavaScript/TypeScript. The stated input-language range also includes Rust and Smalltalk, but that broader range should not be read as a list of documented APIs. This breadth can help teams fit Z3 into different software stacks.

Users can build Z3 with CMake, vcpkg, or Bazel, or use repository-linked pre-built binaries for stable and nightly releases. A project wiki page also lets users try it in a browser. Python is required to build Z3, while Java, .NET, OCaml, and Julia APIs need additional toolchains. For MSVC builds, Control Flow Guard and Address Space Layout Randomization are enabled by default.

Pricing

Z3 is free, with no free trial because there is no paid plan to try. The Z3 (MIT licensed) plan costs nothing and includes MIT-licensed downloads and source code. There are no stated seat or usage caps to weigh against a paid tier. The MIT license is a practical advantage for teams evaluating or incorporating the software, while self-hosted use means teams should account for their own build and integration work.

Platforms

Z3 supports Android, Linux, macOS, Windows, web, API, and self-hosted use. The browser page offers a way to try the solver without beginning with a local build; teams deploying it in their own environment can choose among the documented build systems or pre-built releases. Building remains a more involved route for users targeting APIs with extra toolchain requirements.

Who it's for

Z3 is a strong fit for developers, researchers, and verification teams working with SMT-LIB2 or integrating theorem-proving into software analysis. Its multiple language interfaces and build paths suit varied development environments. It is less appropriate for readers seeking a polished general-purpose application or turnkey support: for issues with an external binding package, the project wiki directs users to that package’s creator.

Pros and cons

  • Pros: Free, MIT-licensed source and downloads remove a purchase decision for teams evaluating a solver.
  • Pros: SMT-LIB2 input, counterexamples, and proof artifacts support verification workflows that need structured problem expression and inspectable results.
  • Pros: Documented interfaces across nine language families, plus three build systems and pre-built releases, provide several integration routes.
  • Cons: Building requires Python, and selected APIs need additional toolchains, adding setup work for teams that want to compile their own integration.
  • Cons: Support for external binding packages is handled by their creators, so help for those packages is not centralized with the project.

Alternatives

For a broader comparison, see Formal Verification Tools.

  • HOL4 is another free option for Linux, macOS, Windows, and self-hosted use, under the Modified 3-clause BSD license.
  • PVS offers free noncommercial use; commercial users should compare its custom pricing, and Allegro runtime users must accept a click-through license.
  • Rocq is a free interactive theorem prover and dependently typed programming language, with web and extension platforms also supported.
  • Alloy Analyzer is a free open-source option supplied as a self-contained executable.
  • CBMC is a free, 4-clause BSD-licensed option for Linux, Windows, macOS, and self-hosted use.
  • Isabelle is free and open source, with Linux, macOS, Windows, and self-hosted platforms.
  • NuSMV is a free, LGPL v2.1 open-source option for Linux, macOS, and Windows.
  • PRISM is a free, GPL v2 option for Linux, macOS, and Windows.

Verdict

Choose Z3 if you need a free SMT solver for software verification and want flexibility across input formats, languages, and build systems. Its main advantage is that breadth of integration without a license cost; look elsewhere if your priority is a simpler setup or centralized support for third-party bindings.

Alternatives to Z3

Every alternative, ranked