Skip to content
9MinecraftServer.com home Search servers
EN

Translate this page

Sign up free
Run your server

Minecraft server scoreboard plugin and tab list: TAB, ajLeaderboards and PlaceholderAPI, with restraint

TAB does the sidebar, the tab list and name tags in one plugin; ajLeaderboards turns any PlaceholderAPI number into a top-ten. The hard part is deciding what not to show.

For server ownersUpdated 8 min read

Quick answer
  • TAB (free, on Modrinth and GitHub) handles the sidebar scoreboard, tab list header and footer, and name tag prefixes; install it on the proxy on a network.
  • ajLeaderboards makes a leaderboard from any PlaceholderAPI placeholder that returns a number: /ajlb add %statistic_player_kills%.
  • The client shows at most 15 sidebar lines. Use five to eight, and never put chat-speed numbers on it.
  • Bedrock players see sidebar text cut off unless Geyser's integrated pack is on (it is, by default).

A Minecraft server scoreboard plugin is one of the first things new owners install and one of the first things players learn to hide. The sidebar that shows balance, rank, kills, TPS, ping, the date, a Discord link and an animated title tells a player the server is trying too hard, and it costs you packets every time any of those numbers changes. Done with restraint, the same tools are genuinely useful: a sidebar that shows the three numbers a player cares about in this mode, a tab list with ranks and a footer that says where to vote, and a leaderboard at spawn that people compete for.

This guide sets up TAB for the sidebar and tab list, ajLeaderboards for top-ten boards, PlaceholderAPI as the glue, then spends real time on what to show, what it costs the server, and how Bedrock players through Geyser see it differently.

TAB: sidebar, tab list and name tags in one plugin

TAB by NEZNAMY is free, open source, on Modrinth, GitHub and SpigotMC, and its wiki documents version 6.2 with support through the current Minecraft release. It replaces three plugins: a scoreboard plugin, a tab list plugin and a name tag plugin.

  1. Decide where it runs. On a single server, in plugins/. On a network, TAB's install page recommends installing only on the proxy: one config, a global player list without Redis, and no header flicker when players switch backends. On Velocity it needs the VelocityScoreboardAPI plugin for the scoreboard feature.
  2. Install TAB-Bridge on each backend if TAB is on the proxy and you want PlaceholderAPI values (balance, kills, claim blocks) in the sidebar. Without it, only TAB's own placeholders work.
  3. Install PlaceholderAPI on the backends either way; the next sections depend on it.
  4. Edit plugins/TAB/config.yml, starting with the scoreboard block below, then /tab reload.
# plugins/TAB/config.yml (scoreboard section)
scoreboard:
  enabled: true
  toggle-command: /sb
  remember-toggle-choice: true
  hidden-by-default: false
  scoreboards:
    survival:
      title: "<#E0B11E>MyServer"
      display-condition: "%world%=world"
      lines:
        - "&7"
        - "&fRank: &a%luckperms_prefix%"
        - "&fBalance: &a$%vault_eco_balance_commas%"
        - "&fClaim blocks: &a%griefprevention_remainingclaims%"
        - "&7"
        - "&fOnline: &a%online%"
        - "&eplay.example.com"

Players toggle it with /sb (permission tab.scoreboard.toggle), and remember-toggle-choice keeps it hidden for the ones who hid it, which is the polite default. A display-condition lets you show a different board per world or per mode; the wiki's own example uses %bedrock%=false to give Bedrock players a simpler one.

The tab list header and footer sit in the header-footer section with enabled, a designs map, and per-design header, footer and display-condition keys. TAB's built-in placeholders cover the basics: %online%, %ping%, %world%, %player%, %memory-used%. Name tag and tab list prefixes come from LuckPerms through Vault, so the ranks you set up in the LuckPerms guide appear without more work.

Leaderboards with ajLeaderboards

ajLeaderboards is free and does one thing: it tracks any PlaceholderAPI placeholder that returns a number and ranks players by it. Its wiki lists support for 1.8 through 26.1 and says it will almost certainly keep working on new versions.

  1. Register a board from any placeholder: /ajlb add %statistic_player_kills%. The board's name is the placeholder without the percent signs.
  2. Read positions back with its own placeholders: %ajlb_lb_statistic_player_kills_1_alltime_name% and ..._1_alltime_value% for first place, _2_ for second, and so on.
  3. Use timed boards by swapping alltime for hourly, daily, weekly, monthly or yearly. A weekly kills board resets on its own without touching the all-time totals. The wiki notes timed boards only make sense for cumulative stats, not high scores.
  4. Put it somewhere. /ajlb signs add <board> <position> <type> while looking at a sign makes a physical leaderboard at spawn. Or drop the placeholders into a TAB sidebar or a hologram plugin.
  5. Housekeeping: /ajlb list shows boards, /ajlb reset <board> clears one, /ajlb export <file> saves the cache. All commands need ajleaderboards.use.

Boards that players actually compete on: weekly kills on PvP, weekly blocks mined or jobs earnings on survival, island level on skyblock, monthly votes anywhere (vote plugins expose a placeholder). Boards they ignore: all-time anything on a server older than a year, because the top ten is fixed.

PlaceholderAPI, the glue

Everything above reads numbers through PlaceholderAPI. It ships with almost nothing; placeholders come from expansions you download in game:

/papi ecloud download Player
/papi ecloud download Vault
/papi ecloud download Statistic
/papi ecloud download LuckPerms
/papi reload
/papi parse me %vault_eco_balance% is my balance

/papi ecloud list installed shows what you have and which need updates; /papi list shows what is active; /papi parse me <text> tests any placeholder before you put it on a board. Plugins such as GriefPrevention, Jobs and vote plugins register their placeholders directly when PlaceholderAPI is present; the expansion cloud covers the rest. The full command set is on the PlaceholderAPI wiki.

Restraint: what to show and what to hide

A sidebar takes a fifth of the screen on a small monitor and a bigger share on a phone through Geyser. Every line is a claim on attention. The test for each line: does a player in this mode make a decision based on this number?

Show on the sidebarKeep off it
Balance, on an economy serverTPS and ping. Players cannot act on them, and they update constantly. Staff can use /tps.
Rank, and what the next rank costs, on a rank-up serverThe date and time. Every client has a clock.
Kills and deaths (or streak) on PvP; island level on skyblock; claim blocks on SMPCoordinates. That is what F3 is for, and it changes every tick.
Players online, onceA Discord invite, a store link and a website on three separate lines. One address at the bottom, and the tab footer for the rest.
One event line while an event runs ("Vote party: 42 votes to go")Animated rainbow titles. They cost packets and read as spam.

Five to eight lines is the sweet spot. The client's hard limit is 15, and a board that uses all of them is asking to be toggled off. Put the things that do not fit in the tab list footer, which players open when they want it, and in the MOTD, which they see before they join.

Performance

Scoreboards are cheap until they are not. The cost is proportional to how many lines change and how often, times players online.

  • Avoid lines that change every tick. Coordinates, TPS to two decimals, a ping readout. Each change is a packet to that player. Balance changes when money moves, which is fine.
  • Mind placeholder cost, not just count. A placeholder that queries a database (some vote and stats plugins) is expensive per refresh. TAB lets you set refresh intervals per placeholder in its config; give slow placeholders a 5 to 10 second interval.
  • Limit animations. A title that cycles ten frames a second is ten packets a second per player for decoration. One slow animation on the title, if any.
  • Do not run two scoreboard plugins. TAB hides its board when another plugin sends one and restores it after, so a minigame's board works, but two general sidebar plugins will fight.
  • Check with spark if you suspect the board. A placeholder or an expansion doing work on the main thread shows up clearly in a profile. Our lag guide walks through spark.

Bedrock rendering differences

Bedrock clients through Geyser draw the sidebar with Bedrock's own font and layout. Long lines are cut off with "...", which TAB's wiki notes and which Geyser fixes with the GeyserIntegratedPack, a Bedrock resource pack that includes a "bypass for the scoreboard character limit." Geyser bundles that pack and enables it by default; you can turn it off in Geyser's config, and if you did, that is why your Bedrock players see truncated lines.

Beyond that, plan for a narrower screen and a touch UI. Keep Bedrock lines shorter than Java lines, avoid custom font glyphs (they do not exist in the Bedrock pack), and use TAB's display-condition with %bedrock% to give phones a four-line board. On our list, Java servers that also answer a Bedrock ping have a median of 26 players online against 6 for Java-only servers, so a good share of the people reading your sidebar are on a phone. The rest of the Bedrock setup is in the crossplay guide.

Alternatives, and no plugin at all

TAB is the default recommendation because it covers all three surfaces and is maintained. If you want only a sidebar, the currently listed options on Hangar and Modrinth include vScoreboard, BetterScoreboard (packet-based, 1.20.3 and up) and SimpleScore; all are lighter than TAB and none does the tab list. Check the last update date on the listing before you commit; scoreboard plugins have a habit of dying with a Minecraft update.

And vanilla can do a death counter or a kills board with no plugin: /scoreboard objectives add deaths deathCount then /scoreboard objectives setdisplay sidebar deaths, or list instead of sidebar to show it in the tab list. It is crude and unformatted, but for a small friends server it is honest and free. Vanilla /team commands also color name tags, which is what "scoreboard teams" searches usually want.

When the board is showing the right three numbers, mention the mode-specific ones in your listing description ("weekly kills leaderboard, resets Sunday") and claim the listing from its server page to keep it current. A server with a competitive weekly board is a server with a reason to come back on Monday.

Quick questions

What is the best free scoreboard plugin for Minecraft?

TAB, if you want sidebar, tab list and name tags together. It is free, on Modrinth and GitHub, and documented for the current version. For a sidebar only, a lighter plugin such as vScoreboard or BetterScoreboard is fine as long as its last update is recent.

Why does my scoreboard show only 15 lines?

The client draws at most 15 sidebar scores; a plugin that sends more has the rest dropped. Fifteen is already too many. Cut to eight or fewer and move the rest to the tab footer.

How do I show TPS on the scoreboard?

TAB and the Server expansion for PlaceholderAPI both expose a TPS placeholder. You can, but consider not: players cannot do anything with the number, it updates constantly, and a visible 19.6 invites complaints on a server that feels fine. Keep TPS for staff with /tps and put it in your monitoring instead.

Do scoreboards work on Bedrock through Geyser?

Yes, with differences. Lines may be cut off unless Geyser's integrated pack is enabled (it is by default), custom font icons will not render, and the screen is narrower. Give Bedrock players a shorter board using a display condition on %bedrock%.