# Noir vs Other zk Languages

**URL:** <https://forum.aztec.network/t/noir-vs-other-zk-languages/6264>\
**Category:** Noir\
**Created:** [October 21, 2024, 8:41am UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264 "2024-10-21T08:41:28Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![udonnelly](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/udonnelly/32/1889_2.png) [@udonnelly](https://forum.aztec.network/u/udonnelly)\
**Post date:** [October 21, 2024, 8:41am UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/1 "2024-10-21T08:41:28Z")

</div>

What are the key benefits of learning Noir as opposed to other zk languages ​​like Cairo for someone new to zk-SNARKs?

---

<div class="post-metadata">

**Author:** ![joshc](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/joshc/32/20_2.png) [@joshc](https://forum.aztec.network/u/joshc)\
**Post date:** [October 21, 2024, 9:29am UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/2 "2024-10-21T09:29:03Z")

</div>

The main benefit is that you get privacy with Noir. You can’t do private, client-side proof generation with Cairo, that’s not what it’s designed for. But creating client side proofs with private information is what Noir has been designed to do.

I am not sure how Noir and Cairo compare when just using the succinctness properties of snarks.

---

<div class="post-metadata">

**Author:** ![arwamainstone44](https://avatars.discourse-cdn.com/v4/letter/a/ce7236/32.png) [@arwamainstone44](https://forum.aztec.network/u/arwamainstone44)\
**Post date:** [November 18, 2024, 12:56pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/3 "2024-11-18T12:56:29Z")

</div>

Are there any recommendations for building test scenarios for complex circuits in Noir?

---

<div class="post-metadata">

**Author:** ![yashicamclaren1](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/yashicamclaren1/32/2144_2.png) [@yashicamclaren1](https://forum.aztec.network/u/yashicamclaren1)\
**Post date:** [December 5, 2024, 3:13pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/4 "2024-12-05T15:13:17Z")

</div>

To build test scenarios for complex circuits in Noir, start by understanding the circuit logic, breaking it into components, and defining inputs and outputs. List test cases, including normal, edge, invalid, and complex scenarios that simulate real-world usage. Use Noir’s built-in testing framework by writing tests in the `tests` directory and verifying results with `assert_eq!` or `assert!`. Generate inputs automatically to cover all possible cases, and test intermediate steps by adding temporary debug outputs. For reliability, use scenarios that mimic real-world conditions and measure performance with large datasets. Document test cases to simplify maintenance and analysis.  
I just decided to ask AI. 😛

---

<div class="post-metadata">

**Author:** ![wizard](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/wizard/32/2318_2.png) [@wizard](https://forum.aztec.network/u/wizard)\
**Post date:** [February 17, 2025, 2:05pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/5 "2025-02-17T14:05:18Z")

</div>

Noir offers a high-level language specifically designed for writing zk-SNARKs, with a focus on simplicity and security. For newcomers, it provides a straightforward way to interact with zk-SNARKs without deep cryptographic knowledge, compared to more complex languages like Cairo. Noir emphasizes developer-friendly features, making it an accessible starting point for learning zk-SNARKs while still supporting advanced privacy use cases.

---

<div class="post-metadata">

**Author:** ![teslawarcup190](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/teslawarcup190/32/2201_2.png) [@teslawarcup190](https://forum.aztec.network/u/teslawarcup190)\
**Post date:** [February 19, 2025, 1:12pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/6 "2025-02-19T13:12:48Z")

</div>

This is helpful, thanks! I’m curious, how does Noir handle proving key generation and verification? Is it all integrated, or do you use separate tools?

---

<div class="post-metadata">

**Author:** ![joshc](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/joshc/32/20_2.png) [@joshc](https://forum.aztec.network/u/joshc)\
**Post date:** [February 20, 2025, 3:58pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/7 "2025-02-20T15:58:55Z")

</div>

Noir leaves it up to the proving system to do this. Aztec is working on [barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg), which can do this.

---

<div class="post-metadata">

**Author:** ![andeebtceth](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/andeebtceth/32/2831_2.png) [@andeebtceth](https://forum.aztec.network/u/andeebtceth)\
**Post date:** [February 21, 2025, 10:06pm UTC](https://forum.aztec.network/t/noir-vs-other-zk-languages/6264/8 "2025-02-21T22:06:58Z")

</div>

![image](https://europe1.discourse-cdn.com/flex013/uploads/aztec/original/2X/2/208f0333e46b7524d14771c94c5057317d30edcf.jpeg)

Cairo itself doesn’t handle private inputs or outputs, it primarily execution efficiency and verification on-chain. To actually implement privacy features, you need an additional layer that can manage confidential data through zk-SNARKs. That’s where Noir is designed for, specifically to create and verify zk proofs around private inputs. When you use Noir alongside a smart contract, you can generate proofs off-chain and only reveal the required information on-chain. Example image from [@franklyteddy](https://x.com/franklyteddy)
