Failed to verify username: what it actually means
The server could not verify a player with Mojang. Usually the player's session went stale; occasionally Mojang is down. Neither is a fault on your server.
The short version
Failed to verify username means the server asked Mojang to confirm the joining player owns their account and did not get a usable answer. Either Mojang authentication is having an outage, or the player's session is stale. Restarting the Minecraft launcher fixes the second, which is most cases.
The message appears in the server console as the player is disconnected:
com.mojang.authlib.GameProfile ... Failed to verify username!
The player sees something less specific, usually a failed-login or invalid-session message.
#What is happening
On an online-mode server, every join is verified. The client tells Mojang it is connecting, the server asks Mojang whether that is true, and if the answers line up the player gets in. This is what stops people joining as somebody else.
"Failed to verify username" means that check did not come back cleanly. It is a failure of the conversation, not a rejection of the player.
#One player affected
Almost always a stale session. The launcher holds a token that expires, and a client left running for days can present one that is no longer valid.
The fix, in order:
- Fully quit Minecraft and the launcher. Both. Closing the game alone does not refresh the token.
- Reopen the launcher and rejoin. This is the whole fix in most cases.
- If it persists, sign out of the launcher and back in. Forces a new token rather than a refreshed one.
- Check they are not signed in on two machines. Two clients on one account fight over the session, and the loser fails to verify.
#Everyone affected at once
If every player fails simultaneously and nobody can join, it is not your server.
Mojang's authentication service has outages. During one, no online-mode server anywhere can verify anybody, and every one of them logs this error. Check Mojang's status page or minecraftservices status before doing anything else.
There is nothing to fix on your side and nothing to change. It comes back when it comes back. Players already connected usually stay connected, since verification happens at join.
#The thing not to do
The obvious workaround is setting online-mode=false, and it does make the error stop.
It also disables authentication entirely, which means anyone who knows your address can join using any username they like, including the usernames of your operators. It additionally changes how player data is keyed, so switching it on a running server can appear to wipe everyone's inventories.
If you are considering it, read what online-mode=false actually does first. There are legitimate reasons to run offline mode; escaping a transient session error is not one of them.
#Proxy networks
On a Velocity or BungeeCord network, authentication happens at the proxy and the backends trust it. If backends are also trying to verify players, you get this error on every join.
Backends behind a proxy should be in offline mode and firewalled so they only accept connections from the proxy. The firewall is not optional: an offline-mode backend reachable from the internet is an open door. Linkd handles both sides of this automatically.
#Frequently asked questions
How do I fix Failed to verify username?
Have the player fully quit Minecraft and the launcher, then reopen both and rejoin. This refreshes the session token, which resolves the large majority of cases. If every player is affected simultaneously, check Mojang's status instead: it is an outage rather than anything on your side.
Is Failed to verify username a server problem?
Rarely. The server is reporting that it could not get an answer from Mojang about that player. The failure sits between the player's client, the launcher session and Mojang's authentication service, none of which the server controls.
Does turning off online-mode fix this?
It makes the error stop, by removing authentication entirely. It also means anyone can join using any username, including yours. That is a security decision with real consequences, not a fix for a session that needed refreshing.
Written and maintained by the Hostd engineering team. Last updated 2026-08-05. Notice a mistake? Tell us.