Surprisingly I don't see this question on ServerFault already. I'm wondering about the pros and cons of hardware token vs software token for two-factor authentication - only in the context of security, not convenience. I am referring only to the time-based one-time password generators.
Is there a clear winner in terms of security? Does it vary according to the platform the software token (app) is installed on?
Advantages of Hardware Tokens;
Advantages of Software Tokens;
Besides hardware and software tokens there are also reprogrammable hardware tokens that offer some of the advantages from both camps (for an example see safeid diamond programmable token). This type of token works by receiving seed data (typically via an NFC connection), then once programmed the physical token can then act as a direct replacement for google authenticator.
Advantages/disadvantages of programmable hardware tokens
Not meaning to complicate the issue further, but there are also Fido Keys. This type of hardware token tends to be more expensive, usually needs to be connected by USB ports, and being newer is less supported, but it also has specific advantages;
Fido Key Advantages