What Ops Are and What They Can Do

Ops, short for operators, are players who have elevated privileges on your Minecraft server. By default, every player who joins has no special abilities beyond what the vanilla game allows. Ops bypass the normal restrictions: they can run commands like /gamemode, /tp, /give, /ban, and /kick without needing a separate permissions plugin.

Op status is stored in a file called ops.json in your server's root directory. When you op a player, their UUID and username are written into that file. Vanilla Minecraft reads this file on startup and whenever you run the op or deop commands in the console. Keep in mind that ops have a high level of trust: they can change game rules, destroy the server in creative mode, and kick other players, so only op people you genuinely trust.

Op Permission Levels (1 through 4)

Minecraft's op system has four permission levels. You set these in ops.json or via the console command. The default level when you use /op is determined by op-permission-level in server.properties, which defaults to 4.

  • Level 1: Can bypass spawn protection only.
  • Level 2: Can use most commands including /gamemode, /tp, /give, and /clear. Can also use command blocks.
  • Level 3: Can use /kick, /ban, /pardon, /op, and /deop. Can also manage the whitelist.
  • Level 4: Full server control including /stop and the ability to bypass all restrictions. Treat this as root access.

For most trusted players like moderators, level 2 or 3 is the appropriate choice. Reserve level 4 for server owners and co-admins.

How to Op a Player Using the Console

The fastest way to op a player is through your server console. Open your server panel, navigate to the console tab, and type the command directly. The player does not need to be online for this to work on most modern Paper and Spigot servers.

op PlayerName

You will see a confirmation message like Made PlayerName a server operator. If you want to specify a permission level rather than using the default, you need to edit ops.json manually (covered in the next section). To op multiple players, run the command once per player.

If you are connected in-game as an existing op, you can also run /op PlayerName with the slash prefix from the chat window, provided you have level 3 or 4 op access.

Editing ops.json Directly

For fine-grained control over permission levels, edit ops.json directly. Stop your server first, then open the file in the file manager or via SFTP. You will see an array of objects like this:

[
  {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "name": "PlayerName",
    "level": 4,
    "bypassesPlayerLimit": false
  }
]

Change the level value to 1, 2, 3, or 4 as needed. Set bypassesPlayerLimit to true if this op should be able to join even when the server is full. Save the file, then start the server. The changes take effect immediately on the next boot.

Deoping a Player

To remove op status from a player, run the deop command from your console:

deop PlayerName

You will see a confirmation that the player is no longer a server operator. Their entry is removed from ops.json automatically. The change takes effect immediately without a restart. If the player is currently online, they will lose op access the moment the command runs.

Using LuckPerms Instead of Ops for Granular Control

Vanilla ops are an all-or-nothing system for each level. For a public server where you want moderators to be able to mute players but not issue bans, or where you want VIP players to access /fly without getting /op, you need a permissions plugin. LuckPerms is the standard choice on modern Paper and Spigot servers.

With LuckPerms you can create named groups (for example moderator, vip, admin), assign specific permission nodes to each group, and add players to those groups. A moderator group might have essentials.mute and essentials.kick but not essentials.ban. This is impossible to replicate with vanilla op levels.

If you are running a server with more than a handful of trusted players, LuckPerms is the right tool. The vanilla op system works fine for a private server between friends, but anything with a public player base or a staff team should use a proper permissions plugin.