I have read a few times on Reddit that churning one's own moneroj would improve privacy. What does it entail exactly? And how do I do that with the CLI or GUI?
Churning means simply sending the entire balance back to yourself. There's a privacy increase because by doing so, you increase the distance of your funds from some source. Each churn serves to fuzz the trail by some factor.
For example, if you send to me, you know where that money sits on the blockchain because you're the one who created the output.
When I spend it, you will see it appear as input in some TX, but will see some other possible inputs ringed together with it and won't be able to know for sure if it was me or someone else doing the spending.
The probability is 1/N that it was me (where N is the ringsize used). Even if you assume it was me, you can't know if I sent to myself or to someone else. Note how you can't link that output to me anymore, simply thanks to stealth addresses.
Now, when that "someone else" spends, again there's a 1/N probability that it's that output which got spent.
The "someone else" send to "someone else" again and so on.
Finally, the funds arrive to some other person, and he sends to you.
Can you tell that those funds actually came from the TX you sent to me 5 hops ago? Probability would be (1/N)^5 that it came from me. For ringsize 5, that's 0.0000032% chance. Just one of many possibilities, without any way of knowing which one is the real trail.
To do it with the CLI wallet, simply command
To do it with the GUI wallet, click on the All button to select entire balance, copy your address to the Address field field and click the Send button.