Announcing LLZK: A unified, open-source intermediate representation (IR) for zero-knowledge languages
We’re excited to announce that LLZK, our open-source intermediate representation (IR) for zero-knowledge circuits, is now officially launched and available to the public.
Developed by Veridise and supported with a grant from the Ethereum Foundation, LLZK aims to unify the fragmented landscape of ZK development by providing a modular, extensible, and verifiable IR layer that bridges the gap between circuit DSLs and proving backends.
Why LLZK?
As zero-knowledge applications proliferate across use cases, from zkVMs and rollups to privacy-preserving identity protocols, developers face a growing challenge: tool fragmentation.
Every DSL (like Circom, Noir, Halo2, Plonky3) comes with its own quirks, and moving between them or auditing their correctness remains painful. LLZK solves this by acting as a common language between circuit frontends and backends.
Think LLVM, but for ZK.
What is LLZK?
LLZK is a modular intermediate representation for zero-knowledge circuits, designed with the following goals in mind:
- Multi-language compatibility: Compile circuits written in various DSLs to LLZK.
- Backend flexibility: Translate to a variety of proving systems (R1CS, AIR, Plonkish, etc.).
- Support for formal verification: Serve as a foundation for tools like Picus to verify security properties.
- Optimization-friendly: Enable passes such as constraint simplification and dead code elimination.
LLZK is built on top of MLIR, giving it a rich set of compiler tools and well-defined semantics out of the box.
LLZK in action: Succinct SP1 and Picus
We’ve already used LLZK in production.
Recently, we integrated LLZK with Succinct’s SP1 zkVM, which is written in Plonky3. We translated a set of SP1 core operations into LLZK and then used our formal verifier Picus to check for constraint soundness.
Results:
- 11 SP1 ops verified with no false positives.
- One under-constrained operation identified — confirmed and fixed by Succinct.
- LLZK served as a clean bridge between Plonky3 and Picus, demonstrating the power of a shared IR for verification and analysis.
Who should use LLZK?
LLZK is a developer-focused tool for:
- ZK application builders who want more backend flexibility.
- Compiler engineers building new ZK languages or DSLs.
- Security researchers and auditors looking to analyze circuits across DSLs in a unified format.
- Proving system developers who want standardized input and richer debugging tools.
Explore the…
[Continue reading on the new Veridise blog]
Full blog post available on our new Veridise blog
We’ve recently moved our main blog to the Veridise website!
You can continue reading the rest of the blog post here:
Author: Shankara Pailoor, Head of ZK Tooling
Want to learn more about Veridise?
Twitter | LinkedIn | Github | Request Audit
