Skip to content

How CoinJoin actually works

Bitcoin privacy, explained

Every Bitcoin transaction is public forever. CoinJoin is one way to make the transaction graph harder to follow — clearly explained, down to the byte, with the honest limitations and a source-available reference implementation you can verify.

The combined transaction

Instead of paying alone, many participants combine their payments into a single transaction. A coordinator assembles it but never holds your keys. An observer can't reliably tell which input paid which output.

One CoinJoin, end to endfig. 01 · participants → coordinator → network
Participants · self-custody
You
input + destination
bc1q…a3f
Participant 2
input + destination
bc1q…7e1
Participant 3
input + destination
bc1q…c92
…n
input + destination
bc1q…
Coordinator · reference implementation
Validate · combine · collect signatures
Assembles one multi-input / multi-output transaction. Can build it — cannot move your funds. You sign locally.
no custodyequal-value outputseach input signed by its owner

inputs

0.50 BTC
0.50 BTC
0.50 BTC

equal outputs

0.10 BTC
0.10 BTC
0.10 BTC
Anonymity set = the participants you blend with. Bigger set → harder to link.
Bitcoin network
One transaction is broadcast on-chain. With uniform outputs, an observer cannot reliably map each input to an output.

The four steps

  1. Register — you submit the coins you want to join and a destination address into a pool of a chosen size.
  2. Batch — the coordinator waits until at least five participants have chosen the same output size, then groups them into one candidate transaction. Your round won't broadcast below that floor; a larger set is stronger.
  3. Sign offline — each participant signs only their own inputs, on their own machine. No key ever reaches the coordinator.
  4. Broadcast — the fully-signed transaction goes to the network: one transaction, many indistinguishable equal outputs.

Why equal denominations

If outputs are all different amounts, anyone can match them back to inputs by value. Equal-value outputs are the whole trick: with ten identical 0.05 BTC outputs, an observer faces ten equally-likely explanations for where each coin came from.

Note

A CoinJoin doesn't move your coins anywhere — you keep custody throughout. It only changes how the transaction looks to someone analysing the chain.

Ready to try it?

Use the coordinator →

Continue: what it hides — and what it doesn't →

Prefer the unvarnished version first? Read what CoinJoin can't hide →.