The question is.. how do you define 'stolen bitcoins' ?
Bitcoins do only exist as UTXO's assigned to public keys on the blockchain.
Now, imagine the following case:
Eve does steal 1 BTC from Alice's address (A). She creates a transaction sending the whole bitcoin to her address (E) (ignoring fees).
She is obviously in posession of the 'stolen bitcoin'.
(A) 1
BTC ---> (E) 1
BTC Now Eve already has 2 BTC on another address (E2). She decides to send her whole 3 BTC to 3 people: Bob (B), Carol (C) and Dave (D).
On a technical level this means that 2 inputs (2+1 btc) create 3 outputs (1+1+1 btc).
(B) 1
BTC(E) 1
BTC ---> (C) 1
BTC(E) 2
BTC ---> (D) 1
BTCWho does now own the 'stolen bitcoin' ? Bob, Carol or Dave ?
-> You simply can't say. Because inputs are 'destroyed' and new outputs are 'created'. You can't derive the 'origin' from an UTXO.
Now imagine Bob, Carol and Dave are all going to spend their BTC into two further outputs (0.5
BTC each). It is completely impossible to tell which 2 of these 6 outputs 'are made of stolen BTC'.
The more transactions there are, the more confusing it will get when trying to identify the 'origin'. And that is basically what a mixer does.
Look at
Chipmixer FAQ for example. Once you have deposited you get a 'chip' which you can merge or split into bigger/smaller chips.
Each chip does represent a private key with a balance of a multiple of 0.001. After you have done as much splitting/merging as you wish, you can withdraw your balance.