A zk-SNARK — Zero-Knowledge Succinct Non-interactive ARgument of Knowledge — lets someone prove they know a secret satisfying some statement, without revealing the secret, and without the person checking the proof having to redo the work. The idea traces back to Goldwasser, Micali, and Rackoff’s 1985 definition of a zero-knowledge proof; the term “SNARK” itself was coined by Bitansky, Canetti, Chiesa, and Tromer in 2011–2012 — see History for the full line.

Here’s a fact worth sitting with: a Groth16 proof — one of the most widely deployed zk-SNARK constructions — is exactly 3 group elements, roughly 128 bytes, and checking it costs one equation with 3 pairings. That doesn’t change whether the statement being proven involved 10 operations or 10 million. That’s the “Succinct” in SNARK, and it’s the single most surprising thing about this whole area — see Applications for where Groth16 and its cousin PLONK actually get used.

This site does not attempt to implement a full zk-SNARK in your browser — see what a zk-SNARK is for exactly why that’s out of scope, and what a working interactive demo can honestly show instead. What it can show, and does below: a real proof of knowledge of a secret, generated and checked entirely in your browser, with nothing sent anywhere.

Ready — secp256k1, the same curve wired up on pedersen.foundation.

More on Interactive, including proving with a wrong secret and verifying a tampered proof to watch both get rejected.

What this site covers