Scoreboard

For the Legacy Console Edition Leaderboard, see Leaderboards. For the command, see Commands/scoreboard.
"scores" redirects here. For the other mechanic named "score", see Experience § Score.
A screenshot of a scoreboard on the right side of the screen.

The scoreboard system is a complex gameplay mechanic utilized through commands. Mainly intended for mapmakers and server operators, scoreboards are used to track, set, and list the scores of entities in a myriad of different ways.

Objectives

An objective tracks a score for entities while meeting a single criterion. These scores are stored as 32-bit integer ranging from -231 to 231-1.[a]

Objectives have two main properties: a name and a criterion. The objectives' name is used internally for referencing in commands, target arguments, and the file format, while the criterion determines the objectives' behavior – primarily what to track.

In Java Edition, the objectives' name must be a single, case-sensitive string consisting of alphanumeric characters (A–Z and 0–9), hyphen -, plus +, dot ., and underscore _. In Bedrock Edition, it must either be a single string that has no space or a quoted string. When a string is quoted, backslash \ can be used to escape characters.

The entity's score in any objective can be changed from commands, unless it's read-only and automatically set by the game (see § Criteria). It can be increased by, decreased by, or set to a given amount with commands. Non-player entities only support dummy criterion in the scoreboard; their scores can only be changed by commands and not automatically by the game. Unlike players, when a non-player entity dies, its scores are deleted. Notable commands that can modify any entities' scores are /scoreboard and /execute store (the latter is exclusive to Java Edition only).

The score holder's name can either be the player's username or the entity's UUID. For players, the score holder's name doesn't need to belong to an actual player, and can be specified by any arbitrary username.

Objectives also have other properties to change its appearance and behavior:

Property Description Value
displayname The objective's display name that appears on display slots, such as the player list, below the player's name tag, and the sidebar. By default, the objective's name is the display name. Text component
numberformat The objective's number format for the score. The value can be blank, fixed, or styled.
  • blank displays nothing on the scoreboard.
  • fixed displays the contents specified in the command.
  • styled displays the score number with the styling applied from the text component format, such as [String] color, [Boolean] italic, [Boolean] bold, etc. This means that the [String] text property is ignored.
rendertype How the score is rendered in the player list (all other display locations are unaffected). The value can be integer (the default) or hearts.
  • integer the score is rendered as an integer.
  • hearts the score is rendered in the form of hearts (half a heart for each point).
    • Values below 1 are not rendered.
    • Values above 43 are instead rendered as <full-hearts>hp, where <full-hearts> is the floating-point representation of value / 2.
displayautoupdate Whether or not to display auto updates when the score has changed. Boolean: true (default) or false

The number format property and the score holder's name can be changed per-entity using /scoreboard players display numberformat|name <target> ....

Server operators can select entities by their scores using target selector with the "scores" argument (syntax: @e[scores={<name>=<min>..<max>}]). This argument uses the <name> argument to specify the score name of the objective. For example, inputting /execute if entity @a[scores={deaths=1..}] into a command block triggers a comparator or conditional command block if any player has died at least once ever since the objective was created, assuming the deaths objective has the deathCount criterion.

  1. Actual values are -2,147,483,648 and 2,147,483,647.

Criteria

A criterion determines an objective's behavior and tracks statistical game elements. When a criterion's source value changes, the change is automatically reflected in the objective's score.

In Java Edition, criteria are categorized by single and compound criteria. Each of the criteria tracks specific game elements, such as players' health, hunger, experience, triggers, statistics, and among other things. In Bedrock Edition, the "dummy" criterion is the only criteria supported. As such, scores can only be changed by commands.

Single criteria

This feature is primarily exclusive to Java Edition.
 

Single criteria names consist of an alphabetical string.

Criteria name Description Can be modified
dummy A score that can be changed only by commands and not automatically by the game. This can be used for storing integer states and variables, which can then be used with the scoreboard's operations to perform arithmetic calculations. Yes
trigger A score that can be changed by commands and not automatically by the game. The /trigger command allows players to set, increment, or decrement their own score. The command fails if the objective has not been "enabled" for the player using it. After a player uses it, the objective is automatically disabled for them. By default, all trigger objectives are disabled for players. Ordinary players can use the /trigger command, even if cheats are disabled or they are not server operators, making it useful for safely taking input from non-operator players. Yes
deathCount The score increments automatically when a player dies. Yes
playerKillCount The score increments automatically when a player kills another player. Yes
totalKillCount The score increments automatically when a player kills another player or a mob. Yes
health Ranges from 0 to 20 (and greater) for a normal player; represents the amount of half-hearts a player has. It may appear as 0 for players before their health has changed for the first time. The health score can surpass 20 points with extra hearts from attributes, Health Boost or Absorption effects. No
xp Matches the total amount of experience the player has collected since their last death. No
level Matches the current experience level of the player. No
food Ranges from 0 to 20; represents the amount of hunger points a player has. It may appear as 0 for players before their food level has changed for the first time. No
air Ranges from 0 to 300; represents the amount of air a player has left while swimming underwater. It matches the air NBT tag of the player. No
armor Ranges from 0 to 20; represents the amount of armor points a player has. It may appear as 0 for players before their armor level has changed for the first time. No

Compound criteria

This feature is exclusive to Java Edition.
 

Compound criteria names are divided into parts, delimited with periods .. For example, minecraft.killed_by:minecraft.zombie is a valid compound criterion, under which a player's score increments whenever they are killed by a zombie.

Objectives based on a compound criterion are writable and can be modified with commands.

Statistics can be used as compound criteria whose name are their identifier. Player statistics are stored separately from the scoreboard, and as they update, the scores in these objectives are updated too.

In addition, there are some other compound criteria:

Criteria base name Description Number of sub-criteria
teamkill.<team_color> Sub-criteria include team colors. Player scores increment when a player kills a member of the given colored team.

These criteria follow the complete format teamkill.<team_color>, where <team_color> is a color from the list:

16
killedByTeam.<team_color> Sub-criteria include team colors. Player scores increment when a player is killed by a member of the given colored team.

These criteria follow the complete format killedByTeam.<team_color>, where <team_color> is a color from the list:

16

Score operations

Players can increment, decrement, reset and modify an entity's scores by a specific amount using commands. They can also set scores to a random number within a range, and test if the scores are set between specific minimum and maximum values.

Scores can also be modified by using arithmetic operations like addition, subtraction, multiplication, and etc. These operations take the target entity's score and execute it with another score from a different entity. The result of such operations is then assigned as the new target score.

For example, executing an addition operation on a target entity's score with a source entity's score can be expressed as:

New Target Score=Target Score+Source Score

Below is a list of available arithmetic operations.

Operation Description
+= Adds the target's score and the source's score.
New Target Score=Target Score+Source Score
-= Subtracts the target's score and the source's score.
New Target Score=Target ScoreSource Score
*= Multiplies the target's score and the source's score.
New Target Score=Target Score×Source Score
/= Divides the target's score and the source's score, then applies the floor function on the result.
New Target Score=Target ScoreSource Score
%= Applies the modulo operation on the target's score and the source's score, returning the remainder of a division.
New Target Score=Target ScoremodSource Score
= Assigns the source's score as the new target's score without applying any other arithmetic operations whatsoever.
New Target Score = Source Score
< Assigns the minimum value between the target's score and the source's score. It will compare and pick the lowest score value between the target's and the source's scores.
New Target Score=min(Target Score,Source Score)
> Assigns the maximum value between the target's score and the source's score. It will compare and pick the highest score value between the target's and the source's scores.
New Target Score=max(Target Score,Source Score)
>< Swaps the target's score and the source's score. The target's score will be the source's score, and the source's score will be the target's score.
Target Score  Source Score

For arithmetic operations, if there is more than one score holder specified as the sources, the game executes the operations once with each source's score, and if there is more than one target score holder, the game executes the operations for each target one by one.

These operations are available by using the scoreboard players sub-commands, e.g.

  • /scoreboard players operation <targets> <targetObjective> <operation> <source> <sourceObjective> for arithmetic operations,
  • /scoreboard players set <targets> <objective> <score> to set a target entity's score, and
  • /scoreboard players test <player: target> <objective: string> <min: wildcard int> [<max: wildcard int>] to test a target entity's score.‌

In Java Edition, modifying scores are also possible using /execute store result score command, where the result of a command would be stored to the entity's score. Such commands like /random results a random value that can be stored to the entity's scores.

Display slots

An objective with two points to the player is displayed in the "list" slot, while an objective with the display name "Quest Points" with 0 points to the player is displayed in the "sidebar" slot.

An entity's scores in objectives can be displayed in certain slots in the game. These slots are called display slots, and they can appear in the player list, sidebar on the right side of the screen, below a player's name tag, etc. Each display slot can show one objective at a time, and multiple display slots may be used for the same or different objectives.

When players' scores appear on display slots, their username is used to attribute the score holder. For entities, their unique identifiers are used instead. The score holder's name on display slots can be specifically changed by using /scoreboard players display name <target> <objective> [<name>].

Entities' scores can only be displayed on the sidebar slot, while other slots are exclusive for players.

Display slots can be set by /scoreboard objectives setdisplay <slot> [<objective>] command.

Slot Description
list Displays a yellow number or some hearts (/scoreboard objectives modify <objective> rendertype (hearts|integer)) without the objective heading on the tab menu, where online players are shown.‌

Displays a white number without the objective heading on the pause menu, where online players are shown.‌

Visible even in singleplayer.

sidebar Shows on the right hand side of the screen, up to 15 entities with the highest score of that objective with a heading labeled with the objective's display name.

Note that players are shown even if offline, and untracked players are not shown. In addition, fake players with names starting with a # character do not show up in the sidebar under any circumstances.

sidebar.team.<color> ‌ There are 16 team-specific sidebar display slots. These operate the same as the standard sidebar slot, but display only to players who are on teams that use the specified color (for example, "sidebar.team.green" displays to players on "green" teams).

The <color> is a color from the list:

below_name‌

belowname‌

Shows the score followed by the objective's display name below the player's name tag above their head. This is hidden beyond around 10 blocks and when the player is sneaking. Not visible in singleplayer.

Tags

For the command, see Commands/tag.

Tags are a simple list of single-word strings stored directly in the [NBT List / JSON Array] Tags data of an entity, with maximum limit of 1024 tags. As with objectives, tags are case-sensitive.

Target selectors can be used to check whether an entity has a tag with the "tag" argument.

Teams

"team" redirects here. For the command, see Commands/team.
This feature is exclusive to Java Edition.
 

Teams group entities or players together as allies.

Any entity can only have a single team. Mobs do not intentionally attack other entities on the same team.

Teams have a name property, used internally for reference in commands, target arguments, and the file format. Like objectives, it is a single, case-sensitive string consisting of alphanumeric characters. Teams also have other several properties to set its appearances and behaviors:

Property Description Value
displayName Sets the team's display name that appears on the scoreboard's display slots, such as the player list, below the player's name tag, and the sidebar. Text component
color Sets the team's color that appears on the player name in chat, name tag, player list menu, and on the scoreboard sidebar. It also changes the color of the entities outline caused by the Glowing effect. black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, and white
collisionRule Controls a member's collision rule with other team members, or their own.[note 1] always (default), never, pushOtherTeams, and pushOwnTeam
deathMessageVisibility Controls a member's death message visibility with other team members, or their own. always (default), never, hideForOtherTeams, and hideForOwnTeam
nametagVisibility Controls a member's name tag visibility from other team members, or their own. Members' name tag is visible above the player head. always (default), never, hideForOtherTeams, and hideForOwnTeam
friendlyFire Toggles the team's friendly fire rule that controls if a member can attack other members on the same team. The attack damage can be from melee attack, bow and arrow, splash potion of Harming, and more. Note that team members may still inflict negative status effects on each other with potions, like with a splash potion of Poison. Boolean: true (default) or false
seeFriendlyInvisibles Toggles a member's visibility to other members on the same team with Invisibility effect. Boolean: true (default) or false
prefix Sets the team's prefix that appears before the member's name in the chat, name tag, and the player list menu. Quoted string
suffix Sets the team's suffix that appears after the member's name in the chat, name tag, and the player list menu. Quoted string

Commands can be used to check whether team members exist by using target selection with the "team" argument. An exclamation point ! character may be placed before a team name to check for entities not on that team. For example, inputting /execute if entity @a[team=red] into a command block provides comparator output if any player exists on the red team. Conversely, /execute if entity @a[team=!red] provides output when there are any players not on the red team. /execute if entity @a[team=!] allows output when at least one player is on any team, and /execute if entity @a[team=] allows output when at least one player is on no team.

  1. Due to MC-87984, the behaviors of pushOtherTeams and pushOwnTeam are reversed.

NBT format

This feature is exclusive to Java Edition.
 

The file scoreboard.dat in the data folder of the world save folder stores the scoreboard data for that world as a gzip compressed NBT file:

  • [NBT Compound / JSON Object] The root tag.
    • [NBT Compound / JSON Object] data: The scoreboard data.
      • [NBT List / JSON Array] Objectives: A list of compound tags representing objectives.
        • [NBT Compound / JSON Object] An objective.
          • [String] CriteriaName: The criterion of this objective.
          • [String] DisplayName: The display name of this objective in JSON. If none was specified during the objective's creation, this is set to {"text":"Value of Name"}.
          • [String] Name: The internal name of this objective.
          • [String] RenderType: The way the score is displayed. Can be "integer" or "hearts", but defaults to "integer".
          • [Byte] display_auto_update: 1 or 0 (true/false) - Whether the display names in the sidebar automatically updates whenever the score values are changed.
          • [NBT Compound / JSON Object] format: Optional, the default number format for this objective.
            • [String] type: One of blank, fixed, or result (called styled in the command).
            • Additional fields based on the type.
      • [NBT List / JSON Array] PlayerScores: A list of compound tags representing scores tracked by the scoreboard system.
        • [NBT Compound / JSON Object] A tracked player/objective pair with a score.
          • [Int] Score: The score this player has in this objective.
          • [String] Name: The name of the player who has this score in this objective.
          • [String] Objective: The internal name of the objective that this player has this score in.
          • [Byte] Locked: 1 or 0 (true/false) - false if this objective is "enabled". Meaningful only for objectives with the criteria "trigger", where this must be false before a player can use the /trigger command on it.
          • [String] display: Optional, the text component used as display name in the sidebar.
          • [NBT Compound / JSON Object] format: Optional, the number format of the player score.
            • [String] type: One of blank, fixed, or result (called styled in the command).
            • Additional fields based on the type.
      • [NBT List / JSON Array] Teams: A list of compound tags representing teams.
        • [NBT Compound / JSON Object] A Team.
          • [Byte] AllowFriendlyFire: 1 or 0 (true/false) - true if players on this team can harm each other.
          • [Byte] SeeFriendlyInvisibles: 1 or 0 (true/false) - true if players on this team can see invisible teammates.
          • [String] NameTagVisibility: The value of the nametagVisibility option of this team.
          • [String] DeathMessageVisibility: The value of the deathMessageVisibility option of this team. Valid options are: never, hideForOtherTeams, hideForOwnTeam, always
          • [String] CollisionRule: The value of the collisionrule option of this team. Valid options are: always, pushOwnTeam, never, pushOtherTeams
          • [String] DisplayName: The display name of this team in JSON. If none was specified during the team's creation, this is set to {"text":"Value of Name"}.
          • [String] Name: The internal name of this team.
          • [String] MemberNamePrefix: The prefix prepended to names of players on this team. In JSON format.
          • [String] MemberNameSuffix: The suffix appended to names of players on this team. In JSON format
          • [String] TeamColor: The text-based color given to the team. Does not exist if no color is set. Valid colors are: black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, and white.
          • [NBT List / JSON Array] Players: A list of names of players on this team.
            • [String] The name of a player on this team.
      • [NBT Compound / JSON Object] DisplaySlots: A set of slots that display specific objectives. If a slot is empty, its tag is not present.
        • [String] slot_n: The internal name of the objective displayed (see below).
Display slots
No. Type Name
0 Player list list
1 On the sidebar sidebar
2 Below the player's username belowName
3 Team color sidebar.team.black
4 sidebar.team.dark_blue
5 sidebar.team.dark_green
6 sidebar.team.dark_aqua
7 sidebar.team.dark_red
8 sidebar.team.dark_purple
9 sidebar.team.gold
10 sidebar.team.gray
11 sidebar.team.dark_gray
12 sidebar.team.blue
13 sidebar.team.green
14 sidebar.team.aqua
15 sidebar.team.red
16 sidebar.team.light_purple
17 sidebar.team.yellow
18 sidebar.team.white

History

Java Edition
1.513w04aAdded scoreboard.
13w05aAdded team-based functionality.
1.7.213w36aAdded statistic-based objective criteria.
1.814w02aEntities other than players can now be part of teams and have objective scores.
14w06aAdded the trigger and team kill-based objective criteria.
Added /scoreboard players enable.
"*" can be used in a player name argument to represent all players tracked by the scoreboard.
Added the "objective" argument to /scoreboard players reset.
Statistic objective criteria now use named IDs instead of numerical IDs.
Added the achievement.overpowered objective criterion.
14w07aAdded /scoreboard players operation and /scoreboard players test.
Scores for fake players that have a name beginning with "#" don't appear in the sidebar.
Added team-specific sidebar display slots.
Added the nametagVisibility team option.
14w10aAdded the deathMessageVisibility team option.
Added a dataTag argument to /scoreboard players set, /scoreboard players add, and /scoreboard players remove.
Added the stat.crouchOneCm, stat.sprintOneCm, and stat.timeSinceDeath objective criteria.
14w25aAdded =, <, and > to /scoreboard players operation.
14w29aPlayer/entity names in the sidebar are now secondarily sorted by alphabetical order.
14w30aAdded the stat.talkedToVillager and stat.tradedWithVillager objective criteria.
?Added >< to /scoreboard players operation.
1.8.2Added the stat.cauldronFilled, stat.cauldronUsed, stat.armorCleaned, stat.bannerCleaned, stat.brewingstandInteraction, stat.beaconInteraction, stat.dropperInspected, stat.hopperInspected, stat.dispenserInspected, stat.noteblockPlayed, stat.noteblockTuned, stat.flowerPotted, stat.trappedChestTriggered, stat.enderchestOpened, stat.itemEnchanted, stat.recordPlayed, stat.furnaceInteraction, stat.craftingTableInteraction, stat.chestOpened objective criteria.
1.915w32aAdded the stat.sneakTime objective criteria.
15w32bAdded /scoreboard players tag.
Added the xp, food, and air objective types.
15w33aAdded the stat.pickup and stat.drop objective criteria.
Added the armor, level objective types.
15w36aAdded collisionRule.
15w49aAdded the stat.aviateOneCm objective criteria.
1.13pre7Added /scoreboard objectives modify.
pre8Added /scoreboard objectives modify <objectiveName> rendertype hearts, which makes health bars display as hearts, like this: ♥♥♥♥♥♥♥♥♥♥.
Added /scoreboard objectives modify <objectiveName> rendertype integer, which makes health bars display as yellow numbers.
Objective names are now text components, not raw strings.
1.13.118w31aChanged the scoreboard operator %= from using % to Math.floorMod.
1.1821w37aRemoved 16-character length limits for scoreboards, score holders and team names.
1.20.223w31aThe belowName display slot selector is now below_name.
1.20.323w46aAdded custom display settings for scores in the sidebar.
Bedrock Edition
1.7.0
Experiment
Experimental Gameplay
beta 1.7.0.2Added basic scoreboard mechanics.
Added dummy scoreboards.
Both are currently only available with Experimental Gameplay enabled.
1.7.0beta 1.7.0.7Scorebord functionality is now available outside of Experimental Gameplay.

Issues

Issues relating to "Scoreboard" are maintained on the bug tracker. Issues should be reported and viewed there.

Gallery

Screenshots

Navigation