I use minearl spirits or kerosene.
I've come to the opinion that it is impossible to get a chain really clean. All cleaning does is remove the superficial dirt. You can spend hours cleaning it with a toothbrush and then wipe it with a white cloth and you will still get black.
Makes me question if cleaning a chain actually helps the chain or if cleaning makes matter worse by allowing the dirt to penetrate further. Maybe just a quick wipe with a dry cloth to get the external crud off is all that is needed.