Zcash in the browser: Bringing shielded ZEC to MetaMask

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.

The first in-browser Zcash shielded transaction

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.

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 ⤵️

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

Zcash Shielded Wallet
Customize your web3 experience with Zcash Shielded Wallet.

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.

Website | Youtube | Twitter | Linkedin | GitHub