A curated list of resources for learning and programming in Noir.
- Useful Resources
- Projects
- Benchmarks
- Learning
- Boilerplates
- Libraries
- Developer Tools
- Contribute
- License
- Mist Cash - private token transfers on StarkNet
- Private Tokenised Bonds - private institutional bond issuance and settlement
- ZK-Flexor - private proofs of EVM asset balances
- ZK Proof of Liabilities - prove to each user of a CEX that their balance is included in the total liabilities without revealing any data from the other users
- ZK-AntiCheat - privacy-preserving anticheat engine
- anoncast - posting anonymously to Farcaster and X
- StealthNote - anonymous message board for people to post from organizations and companies
- OpenStoa - ZK-gated community where humans and AI agents coexist; topics gated by Coinbase KYC, Country, Google Workspace, or Microsoft 365 proofs
- Payy - private stablecoin wallet
- zkLogin - EVM wallet based on cryptographic proofs of Google account authentication
- zkSafe - private Safe multi-sig signing
- Anon-Aadhaar - proving information on Aadhaars (Indian residence ID)
- Rarimo zk Passport - proving information in national passports
- Shielded x402 - TypeScript SDK for privacy-preserving x402 payments
- ZKPassport - proving information in national passports
- ZK Email - proving email contents
- ZKProofport - SDK + mobile app + agent MCP server for generating ZK proofs of identity (Google OIDC, Google Workspace, Microsoft 365, Coinbase KYC, Coinbase Country) without revealing personal information
- GitClaim - private airdrop claims via proof of GitHub contributions
- Mezcal - on-chain limit order book dark pool
- Nouns Anonymous Voting - private voting research project for NounsDAO
- Rate Limiting Nullifiers - spam regulation and rate-limiting for anonymous environments
- Terry Escape - Multiplayer faction warfare
- z-imburse - private expense reimbursements
- ZK Blackjack - on-chain blackjack with collaborative randomness seeding and Fisher-Yates shuffling
- Ethproofs' SHA256 and ECDSA Benchmarks - benchmarks of SHA256 hashes and ECDSA signature verifications in Noir with Barretenberg and other ZK stacks
- MoPro's Benchmarks - benchmarks of Noir programs on mobile and browser
- Semaphore Benchmarks - benchmarks of Semaphore implementations in Noir and Circom
- RSA Benchmarks - benchmarks of the Noir RSA signature verification library
- ECDSA secp256r1 Benchmarks - benchmarks of ECDSA signature verifications across different ZK tech stacks
- Noir Development Bench - development benchmarks of compilation and execution on latest Noir GitHub commits
- Noir Benchmark CLI - CLI tool for benchmarking NoirJS + Barretenberg proof generation with visual pipeline profiling and performance insights
- Noirlings - A hands-on, interactive way to learn Noir programming language through practical exercises.
- Noirlings.app - Learn Noirlings on your browser, no setup needed.
- Glass Bridge With Noir – A browser-based game that demonstrates Zero-Knowledge Proofs using Noir. Learn by proving a secret path without revealing it.
- Noir Programming And ZK Circuits by Cyfrin
- Step into the world of Noir, a domain-specific programming language for writing circuits, and learn to build zero-knowledge (ZK) apps. The Noir Programming and ZK Circuits course will teach you how to write circuits, how to build a full ZK protocol from scratch (using Noir, Barretenberg, and Solidity), and how to build the backend of a full-stack, privacy-preserving ZK application.
- ZKCamp's Open Source Noir course
- 6 lectures to give participants the knowledge and skills necessary to build decentralized applications based on ZKPs using Noir
- Lessons include ZKP Fundamentals; An Introduction to Aztec Ecosystem; Noir Basics; Building a Noir Application; and Advanced Noir
- [Video Series] BattleZips-Noir (Source Code)
- Walkthrough of building an on-chain Battleships game using zero-knowledge
- Follow along and build your own game using Noir
- Noir Examples - reference examples of zero-knowledge applications in Noir
- Circuit Examples - demonstration implementation of dot products & Merkle proofs in Noir, Circom and RISC0
- [Workshop] Build Your First ZK App with Noir
- [Workshop] ProtocolBerg v2: Learn Noir in an Afternoon
- [Workshop] Noir Xmas Camp: Building Applications with Noir - E2E app building with NoirJS and the Noir Debugger
- [Workshop] NoirHack: Advanced Noir - using unconstrained functions for performance
- [Workshop] NoirCon 2: Vibe Coding Noir - AI-assisted Noir coding with Cursor and Claude
- [Talk] d/Infra Summit: coNoir
- [Talk] NoirCon 2: Semaphore
- [Workshop] NoirHack: MoPro
- [Workshop] NoirHack: ZK Email
- [Workshop] NoirHack: ZK Kit
- [Workshop] NoirHack: ZKPassport
- [Workshop] NoirHack: Stealthnote and GitClaim
- [Workshop] Circuit Safety and an Introduction to Noir - common ZK vulnerabilities and an introduction to Noir
- [Workshop] Noir Xmas Camp: Circuit Security & Production Readiness with Noir
- [Workshop] NoirCon 2: Lampe - formal verification of Noir programs in Lean
- Understanding the Technical Aspects of Aztec and Noir
- Noir 101 for Solidity devs in (English) and (Spanish)
- Privacy-preserving KYC with Noir
- An incomplete guide to zk-KYC apps
- Build a Decentralized Voting Application w/ Noir
- Write an app-specific plasma that preserves privacy - complete tutorial for an application that relies on Ethereum and Noir for integrity while preserving privacy (except for one centralized component).
- hardhat-noir-starter - project template with seamless Hardhat integration
- noir-library-starter - library template
- noir-react-native-starter - mobile development template using React Native
- nargo binary examples - barebones use of nargo binary (and a proving backend) from: simple prove/verify, codegen, to recursion
- noir-recursive - recursion circuit template with UltraHonk in javascript
For library tooling (e.g. input generators, TypeScript implementations), refer to the library-related tooling section.
- Standard Library - standard library that ships with all Noir releases
- ZK Kit Noir - collection of algorithm and utility libraries from Privacy & Scaling Explorations
- BigNum - a library for arithmetic computations of large unsigned integers of any length
- Fraction - a library for accessing fractional number data types in Noir, allowing results that aren't whole numbers
- ZKFloat - a floating point library for Noir
- IEEE754 - an IEEE 754-compliant floating-point arithmetic library supporting single and double precision
- Complex Numbers - This library offers a comprehensive suite of operations for complex numbers
- Fixed Point Library - The FixedPoint library offers precise fixed-point arithmetic operations tailored for Noir
- Fixed Point Library for scale 2^-16 - an optimized fixed point arithmetic library designed for scale 2^-16.
- wad.nr Fixed Point Library - An 18-decimals fixed-point arithmetic library for Noir that enables safe token calculations in DeFi contracts.
- Noir Dates - A Noir library to parse and abstract away Dates
- DateTimeNr - A Noir library to parse and abstract away DateTime objects
- nodash - utility library for working with various data types, inspired by Lodash
- Matrix Operations - a library for matrix operations provides functionality for performing various matrix operations
- Statistical Library - Noir Statistical Library is a comprehensive library for statistical computations in the Noir language
- Quantized arithmetic - a library for quantized value operations of zero-point quantization
- U(int)2B(ytes) - a library for converting
u8->u120s to[u8]array
- Base64 - a library for base64 encoding
- Noir Base64 Library - extension of
noir_base64with support for Vectors and Base64 URL encoding and decoding - JSON parser - JSON string parsing, adheres to IETF RFC 8259
- String Utils - wrapper for String in Noir adding methods for common string operations
- String Search - proof of substring existence within a larger string
- zkRegEx - proof of Regular Expression (RegEx) verification
- Sort - efficient sorting of fixed-sized arrays
- Sparse Array - efficient immutable and mutable sparse arrays
- Lib_LinkList - A memory-efficient doubly-linked list implementation for Noir that supports constant time operations at both ends
- BigCurve - operations over elliptic curves instantiated with an arbitrary prime field
- Pairing over BLS12-381 - Pairing over BLS12-381
- Keccak256 - Keccak256 hashes
- MiMC - MiMC hashes
- Poseidon - Poseidon and Poseidon2 hashes
- RIPEMD160 - RIPEMD160 hashes
- SHA256 - SHA256 hashes
- SHA512 - SHA512 and SHA384 hashes
- AES - a (naive) implementation of AES encryption and decryption
- ChaCha20 Implementation - a Noir implementation of ChaCha20 as defined by RFC7539
- ElGamal Encryption - Exponential ElGamal Encryption on the Baby Jubjub curve
- Hydra for BN254 - symmetric encryption and decryption
- ECIES - simple implementation of ECIES on the Baby Jubjub curve
- ECDH - simple implementation of ECDH on the Baby Jubjub curve
- BLS12_381 Elliptic Curve Pairing and Signature Verification Library
- EdDSA - EdDSA signature verification
- ECDSA - ECDSA (NIST and Brainpool curves) signature verification
- JWT - Verification of JSON Web Tokens (JWTs) and prove claims
- PLUME - ECDSA-based nullifiers
- RSA - RSA signature verification
- Schnorr - Schnorr signature verification
- WebAuthn/Passkeys - Verification of WebAuthn/Passkeys signatures; verifies signatures produced by
credentials.get
- ZK-Kit: Merkle Trees - verification of (non-)membership proofs and add/update/delete leaves
- Indexed Merkle Tree - Generate and verify proofs of inclusion, exclusion, or insert transition, includes complementary NPM package
- Merkle Tree - Merkle Tree implementations forked from Aztec Packages
- Noir HMAC - hash-based message authentication code
- Cryptographically Secure Pseudo-Random Number Generator - pseudo-random number generation
- Aztec Storage proofs - proving Aztec note inclusion in plain Noir, with verification in JavaScript or Solidity
- ECrecover - ECDSA signature verification and return of source Ethereum address
- Ethereum MPT Proof - proving Ethereum Merkle Patricia Trie with recursive proof aggregations
- Ethereum Storage Proof - proving and verifying historical Ethereum / EVM accounts, storage, logs, receipts & transactions; forked from vlayer-monorepo, updated for compatibility with recent Noir releases, including modernizing outdated patterns
- op_rand - VRF on Bitcoin. Proves the correctness of all the actions using Noir circuits with Barretenberg backend
- bitcoin-prover - proving the validity of the Bitcoin block header chain and the possibility of using the corresponding output as the input of a transaction.
- Noir Social Verify - zkEmail based proof of GitHub, Google, LinkedIn and X accounts and account details
- Noir Semaphore - Semaphore Protocol adapted to use Noir.
- Convolution - Convolutional Neural Network (CNN) library, including Convolutional layers, Pooling layers, and Linear (fully connected) layers
- ML - neural networks
- SKProof - Scikit-learn compatible Python library for generating ZK proofs of execution
- zkML-Noir - Python ML model Noir transcoding, including various algorithms such as Decision tree, K-Means, XGBoost, FNN, CNN
- Privacy Apps with Noir by ETHSKILLS
- Writing Idiomatic Noir by the Noir team
- ACIR Optimization Loop by the Noir team
- Noir Playground - A browser-based Noir zero-knowledge proof development environment. (Source Code)
- VS Code Extension - Syntax highlight, error highlight, codelens, etc. (Source Code)
- Neovim Plugin - Syntax highlight, error highlight, etc.
- Emacs Plugin - Syntax highlight (Source Code)
- Zed Plugin - Syntax highlight, LSP support
- tree_sitter_noir - Tree-sitter grammar for Noir
- Emacs Tree-sitter Plugin - Syntax highlight (Source Code)
- JetBrains Noir Language Support - Syntax highlight and extended context features (Source Code)
- aztec-lint by Nethermind - static analyzer for Aztec.nr contracts, also works with vanilla Noir programs
- CodeTracer - A visual time-travelling debugger for Linux and MacOS with support for Noir
- Noir + Barretenberg Profiler - Opcode, execution and proving costs flamegraphing tool
- noir-web – benchmark proving and verification of Noir programs on the browser
- NoirJS - compile and execute Noir programs in JavaScript / TypeScript
- Noir Codegen for TypeScript - generate TypeScript bindings for computing Noir program outputs in TS
- MoPro by PSE - prove and verify Noir programs on mobile (Android and iOS)
- Noir.rs by ZKPassport - prove and verify Noir programs with Rust
- Swoir by ZKPassport - prove and verify Noir programs with Swift on iOS and MacOS
- Noir Android by ZKPassport - prove and verify Noir programs with Kotlin on Android
- hardhat-noir - Hardhat plugin (Source Code)
- foundry-noir-helper - helper library for working with Noir circuits within Foundry.
- coSNARKs - generate witness and prove Noir programs in a Multi-Party Computation network
- Kalypso - generate witness and prove Noir programs in Trusted Execution Environments
- Merkle Tree Generator - generate Noir-library-friendly Pedersen based Merkle trees
- Safecat - generate Noir-library-friendly EdDSA Baby Jubjub Elliptic Curve signatures
- Poseidon2 in TypeScript - a Poseidon2 library in pure TypeScript with support for the implementation used by Noir (over BN254)
- Lampe by Reilabs - formal verification of Noir programs with Lean
- zk-mutant - mutation testing for Noir programs
- noir-metrics - source code metrics for Noir programs with machine-friendly JSON outputs
- Barretenberg (UltraHonk / MegaHonk) by Aztec Labs
- coSNARKs by Taceo Labs
- ProveKit (Spartan + WHIR) by World
- Sonobe (Nova, HyperNova) by 0xPARC and PSE
- Sunspot (Gnark Groth16) by Reilabs
- Plonky2 by Blocksense
- Edge (Supernova) by Pluto
- Gnark by Lambdaclass
- Groth16 by Tom
- Halo2 by Ethan
- Marlin by Noir team
- Plonky2 by Eryx
- Plonky3 by Josef
Propose link additions by editing the README.md. We welcome and appreciate your contributions — thank you for helping improve this list!
