I use 99% IPA and an inexpensive low-power ultrasonic cleaner, works in 10 seconds, super clean. No brushing, no marks, no damage.
I put ~1/8" IPA in a small plastic container just larger than the PCB, to minimize the amount of IPA required - just enough to coat both sides of the PCB without immersing the components. The ultrasonic has a water bath, and the plastic container just floats on top. And I can reuse the IPA a few times before disposal - I just seal the container w/ an air tight top and store it for the next use.