Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/noir-lang/noir/llms.txt

Use this file to discover all available pages before exploring further.

Noir is an open-source domain-specific language designed for building privacy-preserving zero-knowledge programs. With a syntax inspired by Rust, Noir lets you write ZK circuits without needing to understand the underlying math or cryptography.

Quick Start

Install Nargo and run your first zero-knowledge program in minutes

Installation

Install Nargo via noirup and set up your development environment

Language Guide

Learn Noir’s type system, functions, traits, generics, and more

Standard Library

Explore built-in cryptographic primitives, containers, and utilities

Nargo CLI

Reference for all Nargo commands: compile, execute, prove, test, and more

Concepts

Understand zero-knowledge proofs, ACIR, and how Noir fits the ZK landscape

What is Noir?

Noir programs describe computations with private and public inputs. You write a program that asserts certain relationships hold — for example, that you know a secret value satisfying a constraint — and Noir compiles it to a circuit representation. A proving backend then generates a cryptographic proof that can be verified by anyone without revealing your private inputs.
fn main(x: Field, y: pub Field) {
    assert(x != y);
}
In this example, x is private (known only to the prover) and y is public. The proof convinces a verifier that the prover knows an x different from y, without revealing x.

Why Noir?

Backend agnostic

Compiles to ACIR — a portable circuit format compatible with Barretenberg, Marlin, and other PLONK-based backends

Familiar syntax

Rust-inspired syntax with types, traits, generics, and modules — no cryptography expertise required

Full toolchain

Nargo provides project scaffolding, compilation, execution, testing, formatting, and debugging in one CLI

Recursive proofs

Verify proofs inside proofs — build scalable ZK systems with proof aggregation

Getting started

1

Install Nargo

Use noirup to install the Nargo CLI:
curl -L https://raw.githubusercontent.com/noir-lang/noirup/refs/heads/main/install | bash
noirup
2

Create a project

Scaffold a new Noir program:
nargo new hello_world
cd hello_world
3

Execute your program

Fill in Prover.toml with inputs and run:
nargo execute
4

Generate a proof

Install Barretenberg and generate your first ZK proof.
Noir is in active development (currently v1.0.0-beta). It has not been audited and is not recommended for production use yet.

Build docs developers (and LLMs) love