{
  "type": "option",
  "name": "gnark",
  "slug": "gnark",
  "section": {
    "id": "frameworks",
    "number": "02",
    "title": "Choosing a framework",
    "url": "https://zkpick.com/frameworks/"
  },
  "url": "https://zkpick.com/frameworks/gnark/",
  "markdown": "https://zkpick.com/md/frameworks/gnark.md",
  "category": "Go eDSL",
  "summary": "gnark: Go eDSL. Kind: Go eDSL. Arithmetisation / backend: R1CS / PLONK, six curves. Setup: Yes (scheme-dependent). Maintained by: Consensys (Linea). Licence: Apache-2.0. Status: Production-mature. Choose it when: Go-based backends, proof aggregation and recursion layers, and wrapper circuits for STARK systems.",
  "description": "A Go SNARK library offering a high-level circuit API over Groth16 and PLONK, instantiable on six curves, with an extensive standard library and in-circuit recursive verifiers.",
  "notes": [],
  "sections": [],
  "strengths": [
    "Two proving schemes and six curves behind one circuit API — genuinely the most swappable backend situation among circuit libraries",
    "Strong, documented recursion support including in-circuit verifiers",
    "The obvious choice if your existing backend is Go",
    "Permissive licence and a documented audit trail"
  ],
  "tradeoffs": [
    "Go sits outside the mainstream of ZK research code, so new proof systems land there later",
    "Still a constraint-writing library: the underconstrained bug class applies, and static analysis is much thinner than for Circom",
    "Corporate stewardship means roadmap priorities follow the sponsor's own chain"
  ],
  "bestFit": "Go-based backends, proof aggregation and recursion layers, and wrapper circuits for STARK systems.",
  "maintainers": "Consensys (Linea)",
  "maturity": "Production-mature",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://github.com/Consensys/gnark",
  "facts": [
    {
      "table": "Framework selection matrix",
      "url": "https://zkpick.com/frameworks/#frameworks-matrix-gnark",
      "name": "gnark",
      "kind": "Go eDSL",
      "arith": "R1CS / PLONK, six curves",
      "setup": "Yes (scheme-dependent)",
      "by": "Consensys (Linea)",
      "license": "Apache-2.0",
      "status": "Production-mature"
    }
  ],
  "relatedFailureModes": [],
  "sources": [
    {
      "title": "gnark — Go zk-SNARK library",
      "url": "https://github.com/Consensys/gnark",
      "kind": "project"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/frameworks/gnark/",
  "authors": [
    "MarketComp"
  ]
}