Solana remembers
every wallet you
ever touched.
A Solana mixer
is where it stops.
SolMix is a SOL mixer built as a zero-knowledge privacy pool. A fixed amount of SOL goes in. The same amount comes out to a wallet with no history. Nothing on chain joins the two.
No account · no email · no KYC · no wallet connection to withdraw
~0.001 SOL per note, flat — almost all of it rent paid to the chain, not to us.
- network
- —
- program
- —
- merkle depth
- —
- deposits in pools
- —
- relayer
- —
- withdraw delay
- —
Your Solana wallet is a public document
Pseudonymous is not private. It means your name is missing from the ledger until somebody supplies it once — and then it is attached to everything you have ever done.
- ONE LINKA withdrawal from a KYC exchange ties an address to a verified identity in that exchange's database. Paying a merchant ties it to an invoice. Publishing a donation address ties it to you in public, permanently.
- THEN IT SPREADSClustering heuristics group addresses that move funds together. Name one address in a cluster and the label propagates. Analytics firms do this at scale and sell the result.
- WHAT IT COSTSPay a colleague and they can see your balance. Take a salary on chain and everyone paid by that wallet can compute it. Hold something worth taking and the fact is public, alongside the hours you are active.
- WHAT A MIXER CUTSExactly one connection: deposit wallet ↔ withdrawal wallet. Both transactions stay public. What disappears is any on-chain way to say they belong to the same person.
How the Solana mixer works
The design is old, public and deliberately boring. Anything novel in this position would be a reason to walk away, not a feature. Four moving parts, and none of them requires trusting the person running it.
The commitment
Your browser draws two random field elements — a nullifier and a
secret — and hashes them into
Poseidon(nullifier, secret). The chain receives a fixed amount of SOL and
that one hash. It learns nothing else, and the two numbers never leave your machine.
The tree
Commitments are appended to a Merkle tree twenty levels deep — room for just over a million deposits. The program stores only the root and one node per level; an indexer replays deposit events so your browser can rebuild a path.
The proof
Withdrawing is a Groth16 proof of one sentence: I know the nullifier and secret
behind some leaf of this tree. Everything hinges on some. Three
values go public — root, nullifierHash,
extDataHash — and none names your leaf.
The nullifier
The chain runs the pairing check (~110,000 compute units through Solana's BN254 syscall) and creates an account keyed by the nullifier hash. Spend the same note twice and the account already exists, so it fails. It records that a note was spent, never which one.
Two more parts sit either side of the pool. Before it: deposits land in a holding wallet run by this service and wait there, because a pool deposit is final — the program stores no sender and has no refund instruction, and any instruction able to return your money would be an instruction able to move somebody else's. After it: a relayer broadcasts your withdrawal so a brand new wallet never has to be funded first. The recipient and the exact fee are bound into the proof, so a relayer can refuse to send but cannot redirect or overcharge. The full mechanism.
Tumbler, mixer, privacy pool get used as synonyms and they are not. A Solana tumbler takes your SOL and sends different coins back — it holds your funds, and it knows exactly which output matches which input, so your privacy is a promise rather than a property. A SOL mixer is the same arrangement with better manners: more hops, staggered timing, split payouts, and still somebody else's wallet in the middle. A privacy pool is non-custodial — the program's only way to release funds is to whoever presents a valid proof, so the operator cannot pay themselves your deposit because no instruction exists that would do it. SolMix is the third kind. Which is which.
The pools, live and unflattered
Every pool has two anonymity numbers: how many deposits it holds, and how many of those the operator does not already hold the notes for. The second is smaller and much less flattering. It is the one that describes your actual exposure, so it is printed here.
| Pool | Deposits | Not the operator's | Pool address |
|---|---|---|---|
| reading the chain… | |||
Read live from this instance. A thin pool is a thin pool and no proof system tops it up — take the deepest one your budget allows, and while a pool is shallow treat the smaller number as the true one.
What SOL mixing costs
About 0.001 SOL a note. Flat, never a percentage. Measured rather than
estimated — scripts/measure-costs.js
reads the lamport deltas off a real deposit and a real withdrawal.
| Item | Roughly | Paid to |
|---|---|---|
| nullifier account rent | ~0.00097 SOL | the chain, permanently |
| transaction fees | ~0.00001 SOL | validators |
| relayer margin | shown before you confirm | the relayer |
| percentage of your deposit | none | — |
| waiting long enough | free | the step people skip |
97% of it is the nullifier record, and it is nobody's margin: the entry marking a note spent has to survive as long as the pool does, or the note could be spent twice. Because the charge is flat, the same ~0.001 SOL is 1% of a 0.1 SOL mix and 0.01% of a 10 SOL one — which makes choosing a pool a privacy decision rather than a budget one.
Four things we will not tell you
Every one of these appears on competing mixers. Each is struck out here because it is either false or unfalsifiable, and a privacy tool that lies in its marketing has already told you how it handles the parts you cannot check.
Your anonymity is arithmetic on the crowd around you. One of 400 is real cover. One of 2 is a name tag. The number is on the pool table above, not in a slogan.
Both of your transactions are on a public ledger and will stay there forever. The claim is that they cannot be joined — not that they vanish.
The site runs on a server, and servers see request IPs. Any mixer swearing otherwise is asking you to believe something you cannot check. Use Tor or a VPN; that is a better answer than a promise.
There is no bank here and nothing to reset. Lose your note and the SOL stays in the pool permanently — that is the direct price of nobody having custody of it.
Proof, trust, and the parts that are still weak
Using any mixer means accepting claims you cannot see. These are read live from this instance, including the one that reads badly.
Why a ceremony at all. A proof system needs public parameters, and generating them requires secret randomness — toxic waste that has to be destroyed, because anyone who kept a copy can manufacture a valid proof for a deposit that was never made. The pool would pay out, the proof would verify, and no contract audit would ever surface it. So several people take turns instead, each folding in fresh randomness: forging afterwards would need every secret in the chain, and a single honest contributor is enough. The last step mixes in the hash of a Bitcoin block that had not yet been mined, so going last is no advantage. Every fingerprint, and where it was published, is listed on the Proof & trust tab. A contribution nobody published is the operator's word — and the operator's word is the thing a mixer exists to replace, so those are marked rather than counted.
Solana mixer FAQ
The questions people actually ask, including the ones with unwelcome answers.
What does SolMix actually do?
What do I actually have to do?
What does a mix cost?
How long should I wait before withdrawing?
Can the operator work out which withdrawal is mine?
What if I lose the note?
More: the step-by-step walkthrough, the long answers, or how to check you are on the real domain.
Mix SOL without asking anyone's permission
No account, no email, no documents, and no wallet connection to withdraw. Pick a pool, save the note your browser generates, and take your time before you withdraw.