{
  "type": "option",
  "name": "Noir",
  "slug": "noir",
  "section": {
    "id": "frameworks",
    "number": "02",
    "title": "Choosing a framework",
    "url": "https://zkpick.com/frameworks/"
  },
  "url": "https://zkpick.com/frameworks/noir/",
  "markdown": "https://zkpick.com/md/frameworks/noir.md",
  "category": "Circuit DSL (backend-agnostic)",
  "summary": "Noir: Circuit DSL (backend-agnostic). Kind: Circuit DSL. Arithmetisation / backend: ACIR → Barretenberg (UltraHonk). Setup: Yes (universal). Maintained by: Aztec. Licence: Apache-2.0 / MIT. Status: Late beta, pre-1.0 (1.0.0-beta series through 2026). Choose it when: New application circuits where developer velocity and client-side proving matter, and teams uncomfortable with manual constraint discipline.",
  "description": "A Rust-like DSL that compiles to ACIR, an intermediate representation intended to be consumed by several proving backends. The compiler emits constraints for you, removing the manual assign-versus-constrain bug class. Browser and WASM proving are first-class targets.",
  "notes": [],
  "sections": [],
  "strengths": [
    "Substantially better ergonomics than lower-level DSLs, and the compiler emits constraints rather than the developer",
    "Backend-agnostic by design, keeping a future migration architecturally open",
    "Client-side and browser proving are supported paths, not afterthoughts"
  ],
  "tradeoffs": [
    "Still formally pre-1.0 after several years of beta, with routine breaking changes between betas — a real cost for long-lived audited code",
    "In practice one backend — Barretenberg — is the maintained one, so diligence it as carefully as the language itself; treat backend-agnosticism as architectural rather than operational unless you validate an alternative yourself",
    "Smaller auditor pool and thinner static-analysis tooling than Circom"
  ],
  "bestFit": "New application circuits where developer velocity and client-side proving matter, and teams uncomfortable with manual constraint discipline.",
  "maintainers": "Aztec",
  "maturity": "Late beta; used in production by some teams",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://github.com/noir-lang/noir",
  "facts": [
    {
      "table": "Framework selection matrix",
      "url": "https://zkpick.com/frameworks/#frameworks-matrix-noir",
      "name": "Noir",
      "kind": "Circuit DSL",
      "arith": "ACIR → Barretenberg (UltraHonk)",
      "setup": "Yes (universal)",
      "by": "Aztec",
      "license": "Apache-2.0 / MIT",
      "status": "Late beta, pre-1.0 (1.0.0-beta series through 2026)"
    }
  ],
  "relatedFailureModes": [],
  "sources": [
    {
      "title": "Noir — backend-agnostic circuit DSL",
      "url": "https://github.com/noir-lang/noir",
      "kind": "project"
    },
    {
      "title": "Barretenberg — the maintained Noir proving backend",
      "url": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg",
      "kind": "project"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/frameworks/noir/",
  "authors": [
    "MarketComp"
  ]
}