← All posts

Zcash shielded vs transparent addresses, explained

2 min readSwapToZec

Zcash has two kinds of addresses. If you're new to ZEC, this trips people up: the same wallet balance can be split across "transparent" and "shielded" pools, and choosing where to receive matters more than the choice of address format usually does in other coins.

The two families

  • Transparent addresses start with t1… or t3…. They behave exactly like Bitcoin addresses. On-chain, the sender, receiver, and amount are all public.
  • Shielded addresses — modern Zcash uses unified addresses starting with u1…. A unified address is a container that can accept either shielded (Sapling / Orchard) or transparent payments, and it hides the sender, receiver, and amount when a shielded transfer is used.

If you have a wallet that shows a zs1… (Sapling) address, that's an older-format shielded address. Modern wallets use u1… because it wraps both.

What the pools mean

Zcash keeps two ledgers running in parallel: a transparent ledger and a shielded pool. Coins move between them via specific transaction types. The key operations:

  • t→t: fully public. Same as a Bitcoin send.
  • t→z: coins move from a transparent address into the shielded pool. The source is public; the destination is hidden.
  • z→z: fully private. Both ends encrypted.
  • z→t: shielded funds are withdrawn to a transparent address. The destination address and the amount coming out are visible.

The shielded pool matters because it's how privacy compounds. The more transactions inside it, the harder it is for an outside observer to reason about any individual balance.

When to use each

  • Personal receiving: use a u1…. It default-lands funds in the shielded pool. Almost every modern wallet supports it — Zashi, Ywallet, Nighthawk.
  • Exchange withdrawals: most exchanges only send to t1…. That's fine — you can receive to a t1… and then shield the funds yourself with a t→z transfer.
  • Public tip jar or donation address: u1…, always. There's no reason to publish a transparent address as a receive point.
  • Sending to a service that doesn't understand u1…: use t1… on the sending side. Some legacy tooling still requires it.

What "shielded" doesn't do

  • It doesn't hide that a transaction happened. Every Zcash transaction, shielded or not, appears on the chain.
  • It doesn't hide the transaction's fee — the fee is public because miners need to see it.
  • It doesn't obscure the shielded pool's total value. You can look up how much ZEC is currently shielded; you just can't attribute any specific amount to any specific address.

Practical implications for SwapToZec

When you swap into ZEC on SwapToZec, we ask for a destination address. If you give us a u1… and the underlying provider supports it, your payout goes straight into the shielded pool. If you give us a t1…, it lands transparent, and you can do the t→z yourself later.

Both work. Both are legit. The u1… route just saves you one step.

Further reading