Modern, lightweight AFK management plugin that keeps your staff informed while gently nudging idle players back into the action
EzAfk is a modern, lightweight AFK management plugin that keeps your staff informed while gently nudging idle players back into the action. Built for contemporary Paper and Spigot servers (1.7 – 1.21.*) and Java 21, it automates AFK detection, provides configurable staff tools, and integrates with the systems you already use, all without sacrificing performance.

ezafk.bypass permission or WorldGuard regions.afk-bypass flag, track usage with bStats, receive console reminders when new releases are available, and surface AFK prefixes in the tab list without any external dependencies./afk time, /afk info, and /afk top so staff can investigate reports and highlight the most idle players with a cached leaderboard./ezafk).afk.bypass.enabled is active./afktop).Aliases: /ezafk, /afk, /ea, /afktime, /afktop
/afk reload./afk bypass./afk info./afk time <player>.The GUI is available with the command /afk gui, the permission ezafk.gui, or OP status. Default buttons let staff kick, alert, or teleport to AFK players, and you can add extra items that run console commands with %player% and %executor% placeholders. Configure the layout in gui.yml.

Beyond the preconfigured buttons, EzAfk lets you build your own action items directly in gui.yml. Each slot can execute one or more console or player commands, display custom icons, and include hover descriptions so staff understand what the action does. Combine placeholders such as %player%, %executor%, or %world% with permission checks to craft targeted moderation workflows—anything from warning messages to teleport chains or integrations with external moderation plugins.
Enable the afk.tab-prefix.enabled setting to display a custom prefix or suffix whenever a player is marked AFK. Customize the prefix, suffix, and final format using placeholders like %prefix%, %player%, and %suffix%. EzAfk can either rely on the TAB plugin for formatting or use its own built-in implementation - choose your preferred behaviour with afk.tab-prefix.mode (options: auto, tab, or custom).

Enable the integration in config.yml to unlock the custom afk-bypass flag, allowing specific regions where players can idle without triggering punishments or economy charges.
Download WorldGuard
Flag name: afk-bypass
How to add the flag to your region?
/rg flag <region> afk-bypass allow
Store AFK player state in a central database. EzAfk automatically handles inserts, updates, and cleanup based on player UUIDs.
Anonymous usage statistics are collected via bStats, and the plugin optionally checks SpigotMC for updates during startup. Both features can be disabled through config.yml.
Install PlaceholderAPI to expose EzAfk's placeholders. The expansion registers itself automatically when the plugin is detected, so no extra permissions or config toggles are required.
Optionally play a custom MP3 sound to players when they go AFK, using the Simple Voice Chat mod and its API. Enable in config.yml under integration.voicechat, and place your sound file in plugins/EzAfk/mp3/ezafk-sound.mp3. The plugin will automatically detect and use the sound if Simple Voice Chat is installed. See the documentation for setup and troubleshooting tips.
Provided placeholders:
%ezafk_status% — Returns AFK or ACTIVE for the targeted player.%ezafk_status_colored% — Returns the color-formatted status string (e.g., &cAFK).%ezafk_since% — Seconds since the player was marked AFK. Empty when they are active.%ezafk_last_active% — Seconds since the player last moved. Always available.%ezafk_prefix% — The configured AFK prefix applied to their display name while AFK.%ezafk_suffix% — The configured AFK suffix applied to their display name while AFK.%ezafk_afk_count% — Total number of players currently marked as AFK.%ezafk_active_count% — Total number of online players not marked as AFK.Usage example:
&7Status: %ezafk_status_colored%
&7AFK for: %ezafk_since%s
EzAfk ships with dedicated files to keep settings organized:
config.yml)
# Config for EzAfk 1.8.0
# GUI settings have moved to gui.yml.
# MySQL settings have moved to mysql.yml.
messages:
language: en
afk:
timeout: 300
bypass:
enabled: true
broadcast:
enabled: true
title:
enabled: true
hide-screen:
enabled: false
animation:
enabled: true
storage:
flush-interval-seconds: 30
anti:
infinite-waterflow: false
infinite-vehicle: false
flag-only: false
tab-prefix:
enabled: false
mode: auto
prefix: "&7[AFK] "
suffix: ""
format: "%prefix%%player%%suffix%"
display-name:
enabled: false
prefix: "&7[AFK] "
suffix: ""
format: "%prefix%%player%%suffix%"
kick:
enabled: false
enabledWhenFull: false
timeout: 600
warnings:
enabled: true
intervals: [60, 30, 10]
mode: both
unafk:
broadcast:
enabled: true
title:
enabled: true
animation:
enabled: true
economy:
enabled: false
bypass-permission: "ezafk.economy.bypass"
cost:
enter:
enabled: true
amount: 25.0
require-funds: true
retry-delay: 60
recurring:
enabled: false
amount: 5.0
interval: 300
require-funds: true
kick-on-fail: false
integration:
worldguard: true
tab: true
spigot:
check-for-update: true
GUI actions (gui.yml)
inventory-size: 9
actions:
kick:
slot: 0
material: IRON_BOOTS
display-name: "&cKick Player"
type: KICK
target-message: "&cYou were kicked for being AFK too long."
feedback-message: "&aSuccessfully kicked %player%"
alert:
slot: 1
material: PAPER
display-name: "&eSend Alert"
type: MESSAGE
target-message: "&eYou are marked as AFK. Keep active to prevent getting kicked!"
feedback-message: "&aSent alert to %player%"
teleport:
slot: 2
material: COMPASS
display-name: "&aTeleport to Player"
type: TELEPORT
feedback-message: "&aTeleported to %player%"
Database (mysql.yml)
enabled: false
host: "localhost"
port: 3306
database: "ezafk"
username: "root"
password: ""
Every alert, warning, or confirmation shown to players can be tailored in the language-specific files under messages/. EzAfk bundles fully translated packs for English, Spanish, Dutch, Russian, and Simplified Chinese, and automatically falls back to English if a language is missing.
Set messages.language in config.yml to match one of the bundled codes (en, es, nl, ru, or zh) and the plugin will copy the corresponding file on first launch. Want to localise EzAfk for your own community? Copy one of the provided files, translate the values, drop it back into the messages/ folder, and point messages.language at your new filename (for example, messages_fr).
Messages include everything from AFK toggle confirmations and bypass notifications to GUI errors, blindness prompts, and tab-prefix text—making it easy to deliver a consistent experience in your players' preferred language.
For support, suggestions, or bug reports, join our Discord server or visit the support thread on SpigotMC.org.
Keep your server active and free from idle players with EzAfk! Download now and take control of AFK players on your server.