Run it from the server console without the leading slash, or in chat as a level 3+ operator.
What changes when you deop someone: the player is removed from ops.json on the spot and loses access to operator commands. They are not kicked, their gamemode does not change, and their inventory is untouched. To give the access back later, run /op with the same name.
Op status is not on or off; every operator has a level from 1 to 4 that decides which commands they can run.
/op grants the level set by op-permission-level in server.properties (default 4). The server console always has full permissions, so /deop always works from there.
/deop removes a player's server operator status. The player is taken out of ops.json on the spot, loses access to operator commands, and stays connected like any other member. Running it requires permission level 3, so use the server console or an admin-level operator account.
Operator status is what separates staff from regular players on a Java Edition server. An op can run commands like /gamemode, /give and /tp, edit command blocks, and bypass the whitelist. /deop is the reverse of /op: it takes all of that away in one command, with no server restart and no kick. The player keeps playing in whatever gamemode they were in; they simply stop being staff.
Under the hood, operators are stored in ops.json in the server folder. Each entry records the player's name, UUID and permission level. /deop deletes that entry and the change takes effect immediately, even mid-session. You can edit ops.json by hand too, but the file is only read on startup, so the command is the live option.
The command takes exactly one argument and the syntax is the same in every version of Java Edition:
Copy any of these straight into chat, or drop the leading slash for the server console:
Removes operator status from the player named Steve. Works even if Steve is offline.
Deops whoever runs the command. Useful for dropping your own op once admin work is done.
Deops every player currently online. Run it from the console to reset permissions in one sweep.
Deops every online player carrying the event_staff tag. Pair it with /op for temporary staff roles.
Operator status is not a single switch. Every op has a permission level from 1 to 4, and each level unlocks a wider slice of the command set:
When you /op someone, they receive the level set by op-permission-level in server.properties, which is 4 unless you change it. That is why on most servers every operator can run every command. To give a player a lower level, op them first, then edit their level value in ops.json and restart the server. /deop does not care about levels when removing: it deletes the entry whatever level it holds.
1. Open the server console, or join the game on an account that has op level 3 or higher.
2. Run deop <playername> in the console, or /deop <playername> in chat. The generator above builds the exact line for you.
3. Check the response. "Made <player> no longer a server operator" means it worked; "Nothing changed" means that name was not an operator to begin with.
4. To confirm, open ops.json in the server folder and check the entry is gone. If you ever need to restore access, /op with the same name puts it back.
Run /deop followed by the player's name, for example /deop Steve. In the server console you type it without the leading slash. The player is removed from ops.json immediately and loses access to operator commands without being kicked or banned.
They are exact opposites. /op adds a player to the server's ops.json file and grants them operator commands at the level set by op-permission-level in server.properties. /deop removes that same entry, taking the commands away again. Neither command affects the player's gamemode, inventory or whitelist status.
Permission level 3, called the admin level. Since /op grants level 4 by default on most servers, any operator can normally deop another operator. The server console has full permissions, so /deop always works from there regardless of levels.
Yes, as long as you use their name. /deop PlayerName resolves through the server's profile cache, so the entry is removed from ops.json even while they are offline. Target selectors like @a or @e[type=player] only match players who are currently online.
The message Nothing changed. The player is not an operator means the name you targeted has no entry in ops.json. Check the spelling against the names listed in ops.json in your server folder; the command needs the exact account name, not a nickname set by a plugin.
Not in Java Edition. The operator system only exists on multiplayer servers; singleplayer and LAN worlds use the cheats toggle instead, so /op and /deop are not available there. In Bedrock Edition, /deop works in any world that has cheats enabled.
Need to grant operator status instead? Or browse more Minecraft tools: