How to Set Up Tab List Formatting, TAB Plugin Guide
Complete guide to installing and configuring the TAB plugin by NEZNAMY for custom tab list headers, footers, rank prefixes, sorting and animations.
What the TAB Plugin Does
The player list that appears when you press Tab is one of the most-viewed UI elements in Minecraft multiplayer. By default it shows a flat list of usernames in grey text with no additional information. The TAB plugin by NEZNAMY transforms this into a fully customizable display with a formatted header, footer, colored and prefixed player names, rank-based sorting, ping display, animations, and PlaceholderAPI integration. It is the most widely used tab list plugin in the Spigot ecosystem, with millions of downloads across SpigotMC and Modrinth.
TAB supports Paper, Spigot, BungeeCord, Velocity, and even Fabric (via a separate build). It is actively maintained, performs well even on large networks, and has thorough documentation on its GitHub wiki.
Installation
Download TAB from SpigotMC (resource ID 57806) or from Modrinth. Drop the jar file into your plugins/ folder and restart the server. On first boot, TAB creates its config at plugins/TAB/config.yml along with several other files for groups, users, and layout configuration.
If you run a proxy network, install TAB on the proxy (BungeeCord or Velocity) rather than on individual backend servers. This gives TAB a unified view of all players across servers and avoids conflicts with per-server instances.
Basic Configuration, Header and Footer
The header and footer are the text blocks that appear above and below the player list. Open config.yml and locate the header-footer section:
header-footer:
enabled: true
header:
, "<gradient:#FF6B6B:#FFE66D><bold>ASTROWORLD MC</bold></gradient>"
, "<gray>Economy Survival | Season 4"
footer:
, ""
, "<green>Players: <white>%server_online%<gray>/<white>%server_max_players%"
, "<gray>TPS: %server_tps_1_colored% | Ping: %ping%ms"
, ""
TAB supports both legacy color codes (&a, &6) and MiniMessage format (<green>, <gradient>). If you use PlaceholderAPI, any PAPI placeholder works inside the header and footer. The %server_tps_1_colored% placeholder shows TPS with automatic green/yellow/red coloring, which is a nice touch for transparency.
Multiple Header Lines for Animation
If you provide multiple entries in the header list, TAB cycles through them on a configurable interval, creating a simple text animation. For example, you could alternate between showing your server IP and showing a current event announcement. The cycle speed is controlled by:
header-footer:
change-interval: 5000 # milliseconds between header/footer changes
Per-Group Formatting, Showing Rank Prefixes
This is where TAB really shines. You can assign different name formats per permission group so that each rank has its own color, prefix, and style in the tab list. In groups.yml:
groups:
owner:
tabprefix: "&4&l[Owner] &c"
tabsuffix: ""
admin:
tabprefix: "&c[Admin] &f"
tabsuffix: ""
vip:
tabprefix: "&6[VIP] &e"
tabsuffix: ""
default:
tabprefix: "&7"
tabsuffix: ""
TAB automatically detects groups from your permissions plugin (LuckPerms, PermissionsEx, etc.), you do not need to manually assign players to groups. The tabprefix value is prepended to the player's name in the tab list. If you want to show the LuckPerms prefix directly instead of defining prefixes in TAB, you can use the placeholder %luckperms_prefix% in your tabprefix value.
Sorting Players by Rank
Without sorting, players appear in the tab list in the order they joined the server. TAB lets you sort by permission group, alphabetically within each group, or by a custom weight system. In config.yml:
sorting:
type: "GROUPS"
groups:
, owner
, admin
, moderator
, vip
, default
Groups listed first appear at the top of the tab list. Within each group, players are sorted alphabetically by default. This means owners always appear at the top, followed by admins, then VIPs, then regular players, giving the tab list a clear visual hierarchy.
Showing TPS, Player Count, and Ping
TAB supports dozens of built-in placeholders plus anything from PlaceholderAPI. Common ones for the footer:
| Placeholder | Description |
|---|---|
| %online% | Online player count (TAB built-in) |
| %server_tps_1% | Server TPS over last 1 minute |
| %ping% | Player's own ping in ms |
| %server_ram_used% | RAM currently in use |
| %world% | Player's current world name |
These are valuable for transparency, players can see at a glance whether the server is under load. They also reduce "is the server laggy?" questions in chat because the answer is right there in the tab list.
Per-World Tab Groups
On servers with multiple worlds (survival, creative, minigames via Multiverse), you might want separate tab sections per world. TAB's Layout feature enables this, you define columns and rows, and assign players to columns based on their world. This is more advanced and requires editing layout.yml, but it results in a very clean tab list on multi-world servers.
Performance Considerations
TAB is designed to be lightweight. It uses packet-level manipulation to update the tab list, meaning it does not create entities or run heavy tasks. The plugin author publishes benchmarks showing TAB uses less than 1 ms per tick on servers with 100+ players. That said, a few things can hurt performance:
- Setting the placeholder refresh interval too low (below 500 ms) forces frequent recalculations. The default 500 ms is fine for most servers.
- Using expensive PlaceholderAPI placeholders (like database-backed ones) in the tab list can add up. Stick to lightweight placeholders for frequently updated fields.
- Running TAB on both the proxy and backend servers simultaneously causes conflicts. Pick one location.
Compatibility with Other Plugins
TAB plays well with most plugins, but a few conflict points to know about:
- NametagEdit, Both plugins try to manage nametags. If you use TAB, disable nametag features in NametagEdit or remove it entirely.
- FeatherBoard / AnimatedScoreboard, No conflict. TAB handles the tab list, scoreboard plugins handle the sidebar. They operate on different display slots.
- Essentials, EssentialsX can set tab name formatting through its config. Disable the
change-tab-complete-nameandchange-playerlistoptions in EssentialsX config to let TAB handle it.
Nametag Formatting
TAB does not only format the tab list, it also controls the nametags visible above players' heads in the game world. This means the rank prefix you configure in TAB shows both in the tab list and floating above the player's character. If you want different formatting for nametags versus tab names, TAB supports separate tagprefix and tagsuffix values alongside the tab equivalents. You can also disable nametag management entirely if you prefer to handle it through another plugin.
Troubleshooting Common Issues
A few problems that frequently come up with TAB:
- Prefixes not showing, Make sure TAB can detect your permission groups. Run
/tab debug [player]to see what group TAB assigns to a player. If it shows "default" when the player is actually VIP, check that your LuckPerms group names match the group names in TAB'sgroups.yml. - Header/footer not appearing, Verify that
header-footer: enabled: trueis set. Some server software overrides tab list packets, if you run a proxy, consider installing TAB on the proxy side instead of the backend. - Sorting not working, Sorting requires that the group names in your sorting config exactly match the detected groups. TAB's debug command shows the sorting priority assigned to each player, which helps narrow down mismatches.
- Placeholder showing raw text, Install PlaceholderAPI and the required expansion. TAB does not bundle PAPI expansions, you need to download them separately via
/papi ecloud download.
For the full player experience stack, combine TAB with custom join messages, a sidebar scoreboard, and a polished MOTD.
See these features in action: Astroworld MC runs economy survival with custom tab, scoreboard, join messages and crossplay. IP: play.astroworldmc.com