Skip to content

Minecraft "Failed to verify username!": What Causes It and How to Fix It

Failed to verify username is not a password check. What the server really asks Mojang, the four causes in order, and why online-mode=false is no fix.

Updated August 19, 2026
Minecraft

The player sees one short sentence and nothing else:

Failed to verify username!
text

And your console records the matching line:

[User Authenticator #1/ERROR]: Username 'Steve' tried to join with an invalid session
Console output

Both are verbatim from the 26.2 server jar. The message is widely misread as "wrong password", which Minecraft does not have, and that misreading sends people straight to the one change they should not make. This page covers what the server actually asked, and what the four real causes are. For the full lookup of every join-time rejection, see Minecraft Players Can't Connect.

What the Server Actually Did

online-mode defaults to true. When it is on, joining works like this:

  1. The client and server negotiate an encrypted connection and derive a shared secret.
  2. Both sides compute a hash from that secret plus a server ID.
  3. The client tells Mojang's session service: I am joining a server with this hash.
  4. The server then asks Mojang's session service: has this username joined a server with this hash?

If step 4 comes back with a profile, the player is in and the console logs UUID of player Steve is …. If it comes back empty, the server disconnects them with Failed to verify username!.

An empty answer is not a rejection

Mojang does not say "wrong credentials". It says "I have no record of that". That single fact reorders the whole diagnosis: the question is not what did the player get wrong, it is why did the client's claim and the server's question never meet. Most of the time nobody typed anything incorrectly.

There is a separate failure path for when Mojang itself is unreachable, and it produces different text on both sides — see Mojang is down below. If you are seeing that one, none of the causes here apply.

Cause 1: An Offline or Cracked Client

The client never performed step 3, because it has no legitimate account to perform it with. Mojang therefore has no record, and the server refuses.

Check: does the same player get in on someone else's genuinely purchased account? Does everyone else connect normally? If yes to both, this is it.

Fix: the player needs a real Minecraft account. This is the intended behaviour of an online-mode server and there is nothing to repair.

Cause 2: A Proxy in Front, With the Backend Still Checking

This is the cause that produces the most confused tickets, and it is entirely a configuration mistake rather than anything a player did.

When a Velocity or BungeeCord proxy sits in front of your servers, the proxy performs the authentication. The client's claim in step 3 is made against the proxy's server ID. If a backend server behind it still has online-mode=true, that backend asks its own step-4 question using a different hash — and gets an empty answer, every single time, for every legitimate player.

Check: are you running a proxy at all? If so, look at online-mode in the server.properties of the backend the player was being sent to.

Fix: backends behind a proxy must have online-mode=false, with the proxy doing the checking and forwarding player identity. That is only safe when the backends are not reachable directly, which is why the forwarding setup matters as much as the flag — Minecraft Server Networks: Setting Up a Velocity Proxy covers the whole arrangement.

Behind a proxy, the wording changes

Neither proxy uses Minecraft's sentence, so the message your player quotes tells you which component rejected them. Velocity says You are not logged into your Minecraft account. If you are logged into your Minecraft account, try restarting your Minecraft client. BungeeCord says Not authenticated with Minecraft.net. If you see either of those, the rejection came from the proxy — the backend was never reached.

Two neighbouring proxy messages are worth recognising while you are here. Velocity's Your server did not send a forwarding request to the proxy. Make sure the server is configured for Velocity forwarding. means the backend is not set up for modern forwarding. Paper's If you wish to use IP forwarding, please enable it in your BungeeCord config as well! is the BungeeCord-side equivalent.

Cause 3: prevent-proxy-connections Is On

prevent-proxy-connections defaults to false. Turn it on and the server includes the IP address the player is connecting from in its step-4 question, so Mojang can compare it against the address it saw in step 3.

That is the entire feature. It is intended to stop one account being shared across the world, and the way it fails is that plenty of ordinary players legitimately appear on two different addresses: anyone on a VPN, on mobile data, on carrier-grade NAT, or on an ISP that load-balances across egress addresses.

Check: read prevent-proxy-connections in server.properties. If it is true and rejections look random rather than universal, this is almost certainly it.

Fix: set it back to false and restart. The protection it buys is small and the false-rejection rate is not.

Cause 4: A Stale Launcher Session — a Different Message

Worth listing because people report it as the same thing, and it is not. If the player's launcher session has expired, the failure happens on their side, before your server is meaningfully involved, and they see:

Failed to log in: Invalid session (Try restarting your game and the launcher)
text

Fix: the message is the fix, literally. Quit the game and the launcher, sign in again. Common right after switching Microsoft accounts. Nothing on your server needs changing, and nothing appears in your console — which is the giveaway.

Mojang Is Down — a Different Message

When the session service is unreachable rather than unhelpful, the server takes a separate path and both sides say so plainly:

Authentication servers are down. Please try again later. Sorry!
text
[User Authenticator #1/ERROR]: Couldn't verify username because servers are unavailable
Console output

There is nothing to fix. It resolves when Mojang's side does. If your console shows this rather than tried to join with an invalid session, stop diagnosing.

Turning online-mode Off Is Not a Fix

It will make the message go away, because the server stops checking accounts at all.

What online-mode=false actually costs you

With the check removed, anyone who can reach your port may connect claiming any username — including yours, with your operator level attached to it. The server prints four warnings at every boot saying so, ending with To change this, set "online-mode" to "true" in the server.properties file. It is defensible only on a server that is not reachable from the internet, or as a backend behind a proxy that authenticates for it. On anything else, the whitelist becomes the only thing between your world and the first person who types your name — see Minecraft Whitelist and Ban Management.

When It Is Not the Real Problem

  • Everyone is rejected, including you, and you are not running a proxy. Check prevent-proxy-connections first, then whether Mojang is having an outage — the console line distinguishes the two immediately.
  • Only one player is rejected. That is cause 1 or cause 4, not a server setting. Have them try another network and confirm their launcher is signed in.
  • The player never gets this far. A version mismatch, a whitelist rejection, a full server and a ban all produce their own distinct sentences. Minecraft Players Can't Connect is the lookup table for all of them.
  • The console shows nothing at all. Then the rejection did not come from your server. It came from their launcher, or from a proxy in front of you.

Other Named Errors in This Cluster

One page per message, all six indexed from Reading Minecraft Server Logs and Crash Reports:


Made with 💜 by GameServerKings

Need a Minecraft server?

Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.80 /month