RFC 6238 says 30 seconds by default but it can be changed by whomever implements it: https://tools.ietf.org/html/rfc6238
Code:
We RECOMMEND a default time-step size of 30 seconds. This default
value of 30 seconds is selected as a balance between security and
usability.
I never have a problem with the tokens you get from logging into the website, but the in-game tokens are always delayed, sometimes for so long that by the time they arrive they are no longer valid.
Out of laziness I wrote an autohotkey script that types my in-game usernames and passwords for me...
About mobile apps, I've never had a problem with this one: https://apps.apple.com/us/app/authenticator/id766157276