How to clean UTXO with Lightning.
Open a private channel, for example, for 1 Bitcoin to a node that has a lot of liquidity.
Send it through this channel to Boltz and perform a swap in liquid because it is much cheaper. For security and to avoid time and liquidity analysis, do not do everything at the same time and break it down. Use AMP and MMP if available.
Boltz will not know where that money comes from, and if you make several transactions, they will not know that they are from the same user, as long as you use Tor. Boltz will only know that so much money arrived and that it was sent to a certain Liquid address, nothing else.
The private node you are connected to also does not know where that money is going. It may be to Boltz, it may not.
Once you have everything in Liquid and want to return to Bitcoin, use sideswap so that the provider is different and cannot associate the last swap in the chain.
You start with a UTXO that has a history associated with you and end up with a UTXO that has nothing to do with you.
You can reuse the channel as many times as you want.
And the cost of this is ridiculously low.
Good luck tracking this. It may seem more difficult than Monero, but this leaves no complete log of the entire process on a blockchain, only partial logs on the servers that perform swaps with missing information, information that is not even available to them on another server.
I have yet to see Chainalysis show any de-anonymization attacks on Lightning.