Zcash in the browser: Bringing shielded ZEC to MetaMask

After months of research, prototyping, and iteration, we’re proud to release the Zcash Snap: a fully functional MetaMask Snap that lets users send, receive, and manage shielded ZEC directly from the browser.
The challenge
Most cryptocurrencies work fine in a browser. Zcash isn’t most cryptocurrencies.
Its shielded pool relies on zero-knowledge proofs, complex cryptographic systems that use custom circuits, massive proving keys, and memory-heavy computations. That’s never been a good fit for browser environments.
To make things trickier, wallet frameworks like MetaMask were never built to support shielded assets out of the box. There was no drop-in solution. If we wanted Zcash to work in a browser, we’d need a whole new approach. One that preserved its privacy guarantees without requiring users to install a custom node or give up control.
First, we asked, “Is this even possible?”
In Summer 2024, before writing a single line of code, we partnered with Zcash Community Grants on a feasibility study. The question was simple: Can shielded ZEC run in the browser?
We dug into the technical constraints—circuit size, memory limits, and proving time—and tested whether a subset of the proving system could realistically run client-side without compromising performance or correctness.
The answer? Yes. With the right optimizations, browser support wasn’t just possible, it was within reach.
That led to two grants:
- One from Zcash Community Grants to build a browser-native Zcash library.
- One jointly funded by the MetaMask Grants DAO and Zcash Community Grants to create a Snap using that library.
Not long ago, the ChainSafe R&D team completed a feasibility study on developing a Zcash web wallet.
— ChainSafe (@ChainSafeth) August 7, 2024
Now, we’re thrilled to announce two grants: one from @ZcashFoundation to develop WebZjs, a browser client library, and another from @MetaMask to build a @zcash snap using it. https://t.co/Qdvtoc40fq
The first in-browser Zcash shielded transaction
Our team has just completed the world’s FIRST @zcash shielded transaction directly from a browser! 🎉🔐
— ChainSafe (@ChainSafeth) September 26, 2024
This is a huge leap toward making private, secure ZEC transactions more accessible than ever. 🤝 https://t.co/biXXc0RcfD
As a proof of concept, we used an early prototype of the library (what would become WebZjs) to send the first-ever shielded transaction entirely in the browser.
Shielded ZEC, live in a browser tab. No custodians. No custom software. Just code and cryptography.
That first transaction proved it could be done. The next step was making it repeatable.
WebZjs: A Zcash library for browsers
We built WebZjs to provide all the core functionality developers need:
- Generate and verify zk-SNARKs
- Build and sign shielded transactions
- Interface with Sapling
- Manage wallet state and addresses
All in the browser. No compromises on privacy.
With WebZjs, developers can integrate shielded ZEC directly into web apps and wallet interfaces, making private transactions more accessible without lowering the security bar.
Webᙇjs is now ready to support wallet development!
— ChainSafe (@ChainSafeth) October 18, 2024
This marks the beginning of Webᙇjs as a tool that the community can use and contribute to! https://t.co/u4W6y37azV
Wrapping it in a Snap
Next, we used WebZjs to build the MetaMask Zcash Snap.
Snaps let developers extend MetaMask with custom logic, safely sandboxed from the core wallet. That made it the perfect platform for Zcash: custom cryptography, privacy-preserving logic, and a familiar user experience.
The Zcash Snap supports:
- Fully shielded send/receive
- Sapling key management
- Native ZEC support in MetaMask
- A no-install, fully private workflow
And all of it works in a regular browser, with the same privacy guarantees Zcash is known for.
Ivan Rubido was able to demo the snap at ZconVI ⤵️
And wrapping up Day 1 of #ZconVI, Ivan Rubido from @ChainSafeth provided a demo of an in-browser #Zcash wallet with Metamask Snaps. https://t.co/gpUr709SHS
— Zcash Foundation 🛡️ (@ZcashFoundation) March 4, 2025
Iteration, testing, and community feedback
Throughout development, we worked closely with Zcash Community Grants and the broader Zcash community to test the Snap in real-world conditions. Users ran shielded transactions, verified outputs, and confirmed that privacy was preserved, just with better UX.
After several rounds of feedback, bug fixes, and a full audit by Hacken, we finalized the Snap and made it public.
It’s now live and ready for anyone to use.
Try the Snap → here

The community made this possible!
This work wouldn’t have been possible without the support and guidance of Zcash Community Grants and MetaMask Grants DAO.
Their vision for privacy-preserving infrastructure and willingness to push technical boundaries were critical at every step.
At ChainSafe, we believe privacy is a public good. Building tools like the Zcash Snap is part of our broader commitment to accessible, user-owned, and decentralized technology.
We’re proud to have brought shielded ZEC to the browser, and we can’t wait to see what builders do with it next.
About ChainSafe
ChainSafe is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.
Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.
As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.