Edit: You'll have to navigate to the Morse Trainer link from the main page.
Also, it's the best because it has knobs for all the variables -- speed, number of characters sent, even options to add QRM (interference) and variable sending speed (imitating very well someone with an unsteady fist).
As an aside, it's pointless to learn code visually. It's only really useable as an auditory messaging system.
only really useable as an auditory messaging system
What? When I was a kid, it was common for camping flashlights to have pressure buttons on the side, which was intended for (and we used for) morse code. Ships used bright, shuttered lights for Morse code, soldiers used it, scouts used it, kids communicated with friends in the neighborhood at night.
A lot of apps out there using the Koch method which is mentioned in the article. IIRC G4FON also follows Koch.
Note that visual learning is not recommended for the simple reason that you want to have Morse ingrained and recognized automatically when listening, not translate it consciously. It's like learning any other system of symbols for active use: you want to know at once what you're hearing or seeing, not leaf through cheatsheets, even if they're in your brain.
Adding few letters a day, using this kind of picture as a mnemonic help [0] and learning in duo with someone else worked for me (but I lost most of it in a year due to lack of practice)