Browser ZK Proofs with Noir & Garaga
I will build browser ZK proofs with Noir, verified on Starknet using Garaga

About this gig
Zero-knowledge proofs let a user prove something is true without revealing why it's true. With Noir, that proof can now be generated in the user's own browser, and with Garaga it can be verified cheaply on Starknet.
I build ZK features end to end. First we write down, in plain language, what gets proven and what stays private. Then I write the Noir circuit, generate proofs in the browser with NoirJS and Barretenberg, and deploy a Garaga-generated Cairo verifier that your contract calls before it acts.
Use cases I can build:
- Private clock-ins inside a geofence, with no GPS sent
- Anonymous membership and private voting with nullifiers
- Pass or fail certificates that hide the exam score
- Sealed-bid tenders and proof of reserves
- Age, region or income checks without documents
- Hidden-information games on Starknet
What you get:
- The Noir circuit with constraint and forgery tests
- In-browser proving, benchmarked on mobile
- A Garaga verifier deployed on Starknet and wired to your contract
I build on Starknet: Cairo contracts like Bilateral Escrow and LandReg3, and Tongo shielded balances in WeSelling.
Tell me what users need to prove and what must stay private.
Use cases
Private clock-in
Staff prove their phone is inside the work geofence without sending GPS coordinates to anyone.
Anonymous membership
Prove you're on an allow-list, a staff roster or a holder list without revealing which entry is yours.
Private voting
One vote per member, counted on Starknet, with a nullifier stopping double votes and no link from vote to voter.
Pass, without the score
A candidate proves they passed a CBT exam or met a grade threshold without disclosing the mark.
Sealed-bid tenders
Bidders commit to sealed bids and prove each one is valid, so procurement stays fair until bids are opened.
Proof of reserves
A business proves its balance covers what it owes without publishing the balance itself.
Age and eligibility
Prove you're over 18, in a region or under an income cap without handing over the document.
Hidden-information games
Battleship, card games and fog of war on Starknet, where moves are proven legal while the state stays secret.
What changes
Today
- Your feature needs privacy, and nobody on the team has shipped a ZK circuit
- Server-side proving means users still hand you their secrets
- Verifying proofs on-chain sounds expensive and hard to wire up
- A constraint bug in a circuit can let anyone forge a valid proof
After
- A Noir circuit written from a plain-language statement of what's proven and what stays private
- Proofs generated in the browser with NoirJS and Barretenberg, benchmarked on ordinary phones
- A Cairo verifier generated with Garaga, deployed on Starknet and wired to your contract
- Tests that try to forge proofs with bad inputs, and documentation an auditor can follow
How it works
- 01State what to prove
- 02Write the Noir circuit
- 03Prove in the browser
- 04Verify on Starknet with Garaga
- 05Contract acts on the proof
Compare packages
| Package | Starter$750 | Business$1,900 | Scale$4,600 |
|---|---|---|---|
| What it is | One Noir circuit with tests and a Garaga verifier deployed on Starknet testnet | Circuit plus in-browser proving, verifier wired to your contract and a dApp screen | Up to 3 circuits, nullifiers, relayer, mobile benchmarks, review and mainnet |
| Noir circuits | 1 | 1 | Up to 3 |
| Constraint and forgery tests | ✓ | ✓ | ✓ |
| Garaga verifier on Starknet | Testnet | Testnet + mainnet | Testnet + mainnet |
| In-browser proving (NoirJS + bb.js) | – | ✓ | ✓ |
| Verifier wired to your contract | – | ✓ | ✓ |
| dApp screen to prove and submit | – | ✓ | ✓ |
| Nullifiers (one action per person) | – | – | ✓ |
| Relayer for gasless submission | – | – | ✓ |
| Proving benchmarks on mobile | – | ✓ | ✓ |
| Internal security review | – | – | ✓ |
| Delivery | 9 days | 18 days | 32 days |
| Revisions | 2 | 3 | 4 |
Add-ons
- Faster delivery+30% of the package
- Internal security review with written findings+$250
- Written documentation for your team+$50
- 90 days of support and small changes+$240
Built before
Who it's for
- Starknet projects
- Privacy-first apps
- DAOs and communities
- Games
- Fintechs and HR platforms
What I'll need from you
- What users need to prove, and what must stay private
- The action the proof should unlock
- Your Starknet contracts or app, if they exist
- The devices your users have
Questions, answered
Why prove in the browser?
Because the private input never leaves the user's device. If a server generates the proof, the user has to hand that server their secret, which defeats the point.
How long does proving take on a phone?
It depends on the circuit. Small circuits such as membership or range checks prove in seconds on a recent phone. I benchmark yours early and simplify the circuit if it's too heavy.
Why Garaga and Starknet?
Garaga generates efficient Cairo verifiers for Noir's UltraKeccakHonk proofs and for Groth16, so a Starknet contract can check a proof as one step of a normal transaction at low cost.
Can the same circuit verify on Ethereum?
Yes. Noir can also produce a Solidity verifier, so one circuit can serve both chains.
Who owns the code and accounts when we finish?
You do. Code goes to your repository, and services run on accounts in your name, so you are never locked to me. I hand over logins, keys and a short guide.
What if my project doesn't fit a package?
Send a message describing what you need. I reply with a custom offer priced to the actual scope, often after a short call.
The thinking behind it
Tools and tags
- Noir
- NoirJS
- Barretenberg (bb.js)
- Garaga
- Cairo
- starknet.js
- Next.js
- #noir
- #garaga
- #zkproof
- #starknet
- #zeroknowledge



