Lodehost logoLodehost

Performance and fixes

PlaceholderAPI not working: fix placeholders that show up as %text%

A placeholder that shows up as itself, %vault_eco_balance% in the tab list or %pvpmanager_combat_timeleft% above someone's head, means nothing on the server replaced it. On a Paper server that job belongs to PlaceholderAPI, and it goes wrong in three ways: PlaceholderAPI is missing, the expansion behind that placeholder is missing, or the placeholder is spelled wrong. One command, /papi parse, tells you which of the three it is.

5 min read

Configure your serverPick a plan and order your server.
A sign with a percent symbol and a blank tag block beside a server tower and a crate of puzzle pieces
A placeholder is a request. If no expansion answers it, the text stays exactly as you typed it.

Why placeholders show as text when PlaceholderAPI is not working

A placeholder such as %pvpmanager_combat_timeleft% shows as plain text when nothing on the server knows its name, so TAB, the chat plugin or the scoreboard passes it on unchanged. There is no error in the console for this. The text simply arrives as you typed it.

The word before the first underscore is the identifier, and it decides who should answer. pvpmanager points to PvPManager, vault to the Vault expansion, player to the Player expansion. PlaceholderAPI keeps a list of identifiers that are registered. Some arrive with the plugin itself, as soon as PlaceholderAPI is there to register them. Others are small expansions you download from PlaceholderAPI's eCloud.

PlaceholderIdentifierWhere it comes from
%pvpmanager_combat_timeleft%pvpmanagerPvPManager itself, once PlaceholderAPI is installed
%vault_eco_balance%vaulteCloud expansion Vault, plus Vault and an economy plugin
%player_name%playereCloud expansion Player
%server_online%servereCloud expansion Server
%luckperms_prefix%luckpermseCloud expansion LuckPerms

We saw this one on a customer server

A combat timer showed %pvpmanager_combat_timeleft% in the tab list and above players' heads. PvPManager was fine. PlaceholderAPI was not installed, so PvPManager had nowhere to register its placeholders.

Test a placeholder with /papi parse

/papi parse me %player_name% asks PlaceholderAPI to fill in a placeholder right now, so you know in one line whether the placeholder works before you blame TAB or your scoreboard. me means yourself, so it only works in game. From the console, name an online player, or use --null for placeholders that do not need a player.

Console; in game, start with /

papi parse MossyOtter %player_name%
papi parse MossyOtter %vault_eco_balance%
papi parse --null %server_online%
papi list
What you get backWhat it meansNext step
A real value, like your nameThe placeholder worksThe problem is in the plugin that shows it
The placeholder, unchangedNobody registered that identifier, or it is misspelledCheck /papi list and the spelling
The server does not know /papiPlaceholderAPI is not installed, or it did not startInstall it and restart

/papi list prints every registered identifier after A total of ... placeholder hook(s) are active. If the word before the first underscore of your placeholder is not in that list, nothing can fill it in yet. There are no placeholder hooks active! means no expansion is registered at all.

PAPI ecloud download: install the missing expansion

/papi ecloud download Player installs the expansion behind every %player_...% placeholder, and /papi reload switches it on. The same goes for Server, Vault, LuckPerms and the rest. PlaceholderAPI confirms the download and reminds you of the reload, so do not skip it.

Console; in game, start with /

papi ecloud download Vault
papi reload
papi parse MossyOtter %vault_eco_balance%

/papi ecloud placeholders Vault lists what an expansion offers before you install it, and /papi ecloud list installed shows what you already have. When a download does not work, the reply says why:

PlaceholderAPI saysWhat to do
Failed to find an expansion named: ...There is no eCloud expansion by that name. If the placeholder belongs to a plugin like PvPManager, that plugin registers it itself: install the plugin and restart.
The eCloud Manager is not enabled! To enable it, set 'cloud_enabled' to true and reload the plugin.Set cloud_enabled: true in plugins/PlaceholderAPI/config.yml and restart the server.
There is no available data from the eCloud. Please try running /papi ecloud refresh.Run /papi ecloud refresh and try again. If it stays empty, the server cannot reach the eCloud right now.

A plugin's own placeholders never need the eCloud. They register when that plugin starts, and only if PlaceholderAPI is already there. So when you add PlaceholderAPI to a server that has been running for a while, restart once. That lets PvPManager and plugins like it start after PlaceholderAPI and register their placeholders.

TAB placeholders not working: what TAB fills in itself

TAB fills in more than 30 placeholders of its own, such as %player%, %online%, %ping%, %world% and %tps%, without PlaceholderAPI. Everything else, like %vault_eco_balance% or a combat timer from another plugin, TAB hands to PlaceholderAPI. Notice the difference in shape: TAB's own names have no plugin name in front, and some use a hyphen, such as %luckperms-prefix%.

When /papi parse gives a real value but TAB still shows the placeholder, check the spelling in TAB's own config first; one missing % is enough. A value that works but lags behind comes from TAB's refresh timer. Under placeholder-refresh-intervals in TAB's config.yml, the default is 500 milliseconds, and a single placeholder can get its own interval.

plugins/TAB/config.yml

placeholder-refresh-intervals:
  default-refresh-interval: 500
  "%server_uptime%": 1000

Fix a placeholder that shows as text, step by step

  1. Copy the placeholder exactly

    Take it from the config that shows it, percent signs included. Most failures that are not a missing expansion turn out to be a typo.

  2. Run /papi parse

    In game, /papi parse me followed by the placeholder. A real value means the placeholder is fine and the displaying plugin needs a look.

  3. Install PlaceholderAPI if /papi is unknown

    On Lodehost, open the Plugins tab, search the plugin catalog for PlaceholderAPI and click Install. Then restart, so the other plugins register their placeholders with it.

  4. Add the expansion that is missing

    Compare the identifier with /papi list. For an eCloud expansion, run /papi ecloud download with its name, then /papi reload. For a plugin's own placeholders, make sure that plugin is installed and started.

  5. Parse again, then look in game

    When /papi parse returns a value, the tab list, chat or scoreboard picks it up at its next refresh.

Written and checked by the Lodehost team, last reviewed on 7 November 2026.

FAQ

Questions about PlaceholderAPI

Why does my placeholder show as %text% instead of a value?

Because nothing registered the identifier, the word before the first underscore. Either PlaceholderAPI is not installed, the expansion for that identifier is missing, or the name is misspelled. /papi parse me with the placeholder tells you which.

Do I need /papi reload after downloading an expansion?

Yes. PlaceholderAPI says so itself after the download: the new expansion only becomes active after /papi reload.

Does TAB need PlaceholderAPI?

Not for its own placeholders like %online%, %ping% and %player%. For placeholders from other plugins, such as %vault_eco_balance% or a combat timer, it does.

How do I see which placeholders an expansion has?

Run /papi ecloud placeholders with the expansion's name, for example /papi ecloud placeholders Player.

Can I test a placeholder from the console?

Yes, with the name of an online player instead of me, or with --null for placeholders that do not depend on a player, such as %server_online%.

A one click plugin installer with vetted plugins.

Search PlaceholderAPI on the Plugins tab and press install. The panel picks the build made for your server software and your Minecraft version.

See the plugin installer