Sueta

VoxelBench - Server Benchmark & Performance Testing

2.6.4

Measure and compare your server's real performance with 20+ standardized tests, stress limit mode, a

·Plugin
Tested MC versions
1.17, 1.18, 1.19, 1.20, 1.21, 26.1

VoxelBench
Benchmark, profile and monitor your Minecraft server — in one plugin

⚡ Spigot • Paper • Folia • Purpur • Pufferfish • Arclight • Mohist | 1.17 – 26.1+ | Java 16+ (Java 25 for MC 26.1+)

What is VoxelBench?

VoxelBench measures what your Minecraft server can really do, and shows you what slows it down.

It runs 20+ hardware and gameplay tests and combines them into a single VoxelScore you can compare on a global leaderboard. When something lags, its built-in profiler names the plugin and the method, its memory inspection names the plugin holding the memory, and live monitoring on voxelbench.com keeps an eye on every second of your server — every region on Folia.

Whether you are a hosting provider evaluating hardware, an admin chasing lag, or a player curious about your server — VoxelBench gives you numbers you can trust.

  • Benchmark — 20+ tests, one VoxelScore, a global leaderboard, a stress mode that finds your breaking point
  • Profile — see which plugin keeps your tick threads busy, share the result by link like spark
  • Inspect memory — find which plugin fills the heap, analyse a heap dump without risking the server
  • Monitor — a live dashboard on voxelbench.com, an embedded web dashboard, boss bars, alerts
  • Safe by design — tests stay out of your world, nothing leaves your server unless you ask, Folia-ready

java_y3vql8a3nD.png
Main menu — benchmark, profiler, memory, monitoring and reports in one click

New in 2.0

  • Built-in profiler — which plugins and methods keep your tick threads busy, with a ring buffer that catches lag spikes by itself
  • Memory inspection — heap summary per plugin, safe heap dumps, and an analysis that names the plugin holding the memory
  • Share by public link — profiles and memory reports, cleaned of addresses, paths and names, valid 7 days, no account needed
  • Live monitoring rebuilt — turned on from the game, real time even when the server lags, every Folia region measured on its own
  • Metrics without spark — tick times, GC and CPU measured from startup, with new PlaceholderAPI placeholders
  • Audited measurements — memory, disk and lag metrics fixed to measure the hardware, the same standard load on every server
  • Forms and dialogs — commands with options open a form (native dialogs on Paper 1.21.6+), Yes/No confirmations, no long commands to type

Benchmark Tests

/bench start runs the tests in three phases, ordered for JVM warm-up accuracy. Every run uses the same load on every server — your config.yml cannot reshape a standard score — and by default the gameplay tests run in a temporary benchmark world (or the one you pin), not in your survival map.

Phase 1 — Hardware (during JVM warm-up)

  • Disk I/O — sequential read/write and random 4K operations with direct I/O, bypassing the OS cache
  • Network — NBT serialization/deserialization throughput
  • Memory — bandwidth and true latency (a chain of dependent loads, so cache and RAM are told apart)

Phase 2 — Gameplay

  • Chunk Loading — 2,000 chunks per zone, generated across 8 dispersed zones
  • Mob AI — 2,400 villagers trading, then 1,200 hostiles invading with pathfinding
  • Hopper Transfer — parallel item pipelines across zones
  • TNT Explosions — 150 TNT per zone, chain reactions and block destruction
  • Redstone Circuits — 1,600 piston clocks with slime block pushing
  • Block Physics — 24,000 falling blocks (sand, gravel, anvils) with water and lava
  • Chunk Ticking — random ticks: crops, saplings, grass spread
  • Lighting Updates — light propagation across corridors and multi-level structures
  • Tile Entities — 5,000 furnaces, hoppers and spawners ticking at once
  • Bone Meal Growth — tree generation and crop acceleration
  • World Save — how fast the server writes its worlds

Phase 3 — CPU (after full warm-up)

  • Single-Core — raw single-thread performance, the factor that limits Minecraft
  • Multi-Core — parallel computation across all cores

Extra tests (standalone)

  • Projectile Storm — a continuous barrage of arrows, snowballs and eggs (PvP simulation)
  • Entity Cramming — hundreds of entities in confined cells (mob farm simulation)
  • Combat Simulation, Liquid Physics, Villagers, Mob Spawn, Collisions and more — every test can be run on its own with /bench test <id> and custom parameters

java_omCOFAfYvA.gif
Multi-Core test in action — the scoreboard shows live TPS/MSPT

VoxelScore & Global Leaderboard

All results are combined into a single VoxelScore, computed by voxelbench.com:

  • Single-Core CPU (45%) — the most important factor for Minecraft
  • Gameplay (35%) — real-world server workloads
  • Hardware (20%) — raw system capabilities

Compare your server against others on voxelbench.com with detailed breakdowns, history and rankings. Lag under load is measured, not filtered away, and reports record the server difficulty, so two servers are only ranked when they measured the same thing.

firefox_sSSqVdxplW.png
VoxelScore results with rank and breakdown

Profiler — see what lags your server

/bench profile samples the tick threads — the main thread, or every region thread on Folia — with Java Flight Recorder, built into Java: nothing to download, nothing to install.

  • Shows, as percentages, which plugins, which parts of the server and which methods keep your tick threads busy
  • Libraries a plugin ships and Paper plugins count for the plugin that brings them
  • Ring buffer — /bench profile ring on keeps the last minutes; when the server lags, VoxelBench saves and analyses that window by itself, so you read the profile of a spike that already happened
  • Share like spark — /bench profile share <id> publishes a cleaned copy behind a public link for 7 days, no account needed; /bench profile upload <id> keeps it in your voxelbench.com account
  • A Profiler button in the menu, a Profiles archive in the Reports screen, and a read-only view on the web dashboard
  • Never runs during a benchmark, so scores stay clean

Memory Inspection — which plugin holds the memory

/bench memory does what spark's heap summary and heap dump do — and then reads the dump for you.

  • Heap summary — every class on the heap, attributed to each plugin, the server or Java, in about a second
  • Heap dump — a full .hprof, after a preview that shows the freeze, the file size and the free disk; refused when the freeze would trip the server watchdog
  • Dump analysis — follows every reference to show the memory each plugin retains, the leak suspects and the chain of fields that keeps them alive. A plugin caching 500 MB shows 0 % in a summary — the analysis finds it
  • Never at your server's expense — the analysis runs in a separate low-priority process; free memory, container limits, CPU quotas and your hosting plan's disk limit are checked first. Big heaps keep their analysis graph on disk
  • One question, one plugin — /bench memory analyze last retained <plugin> tells you what a single plugin retains
  • Share a report — summaries and analyses can be shared by link or uploaded to your account. A heap dump never leaves your server: it holds everything in memory, so VoxelBench has no way to send one

Live Monitoring

On voxelbench.com

  • Turn it on from the game: /bench monitor remote on shows what will be sent and tells you what is left to do
  • Each snapshot describes its whole interval — TPS, average / 95th-percentile / worst tick time, ticks over budget — in real time, even when the server lags
  • Folia: every region measured on its own, worst first, with its location, chunks, players and entities
  • A frozen server shows as frozen, an empty paused server shows as paused, memory figures explain a crash, alerts by e-mail and Discord on the site

Embedded web dashboard

  • Live graphs: TPS, MSPT, memory, players; JSON API at /api/metrics with 10 s / 1 min / 5 min / 15 min windows
  • Private by default — listens on the server machine only; any other address requires a password, set from the console and stored with PBKDF2
  • HTTPS with auto-generated certificates, API keys, IP whitelist, login rate limiting
  • Push mode — send metrics to Grafana, Prometheus or any HTTP endpoint

In game

  • Boss bars — TPS, MSPT, RAM, CPU, entities, chunks, players above the hotbar
  • Metrics without spark — every tick measured from startup, garbage collections one by one; new placeholders %voxelbench_mspt_p95%, %voxelbench_tps_1m% and more

firefox_AVN0gryu5L.gif
Web dashboard with live TPS/MSPT graphs

Stress Limit Mode

Go beyond benchmarking — find your server's breaking point.

  • Raises the load in exponential tiers (×1.2) until TPS drops below 18, then refines the breaking point by bisection
  • 7 stress types: mobs, chunk generation, hoppers, TNT, redstone, entities, villagers
  • Starts near your last known breaking point, and skips tiers the server clearly holds
  • Per-tier hover tooltips in chat with full metrics (percentiles, spread, samples, GC)
  • /bench tier <type> runs a single type — fast when you tune one workload
  • Custom stress profiles in YAML — three bundled examples
  • Results sent to voxelbench.com for scoring and online viewing

java_WwpwYkPvMv.png
Stress Limit in action — tier progression with hover details

Benchmark Worlds — your map stays untouched

  • Tests stay out of your world — /bench test always runs a test that places blocks, spawns entities or generates chunks in the world you pin, or in a temporary flat world deleted afterwards; /bench start does the same by default
  • Pin any loaded world — /bench world set <name>, and every benchmark, test and stress run uses it
  • Flat benchmark worlds in one command — auto-prefixed voxelbench_, fixed seed for repeatable terrain, reloaded on every start
  • You are brought back where you were — position and game mode restored after a test, a stop, a disconnect or a crash
  • Multiverse-Core integration (4.x and 5.x), native Bukkit otherwise
  • Safe by default — only voxelbench_* worlds can be deleted, never while a test runs in them

Custom Benchmark Profiles

Compose your own benchmark recipes in YAML — no code required. Drop a file in plugins/VoxelBench/custom_benchmarks/, pick which tests run, in what order, with what parameters.

  • Bundled profiles: standard (mirrors the built-in benchmark), showcase (every test and parameter, fully commented), example, low-memory, free-host, hopper-heavy — plus three stress profiles
  • New bundled profiles reach existing installs; the ones you edit are never overwritten
  • Profiles carry their own name, description, author, version and tags — sharing a profile is sharing one file, and the same recipe gets its own comparable leaderboard

Report System

  • Three report types: Standard Benchmark, Unit Test, Stress Limit — saved locally after every run, with their submission status
  • Side-by-side comparison between any two reports, local retention and cleanup
  • Multi-run mode — /bench start 5 runs five benchmarks back to back to reduce variance (warmup adds a discarded first run)
  • Online viewing and sharing on voxelbench.com; link your server with /bench link for a permanent history

Screenshot 2026-04-13 at 19-48-14 58 841 pts - S Rank VoxelBench.png
Report page on voxelbench.com with full test breakdown

Example: https://voxelbench.com/en/report/vxb_vz8e3gw2
voxelbench-vxb_vz8e3gw2.png

Plugin Integrations

Auto-detected — zero configuration. Install the plugin and VoxelBench hooks in.

  • PlaceholderAPI — TPS, MSPT (with p50 / p95 / p99 / peak over 10 s to 15 min), RAM, CPU, entities, chunks, players, score and grade
  • Multiverse-Core — benchmark worlds imported and cleaned up automatically
  • Dynmap — entity density heatmap, performance alert markers, active test zones
  • DiscordSRV — benchmark completion and TPS drop alerts to a channel
  • LiteBans — real sanctions only (bans, mutes, kicks LiteBans actually records) for monitoring
  • Spark — optional: VoxelBench measures ticks and GC by itself, and reads spark when it is there

Menus, Forms and Dialogs

Every feature is reachable from clean inventory menus — no commands to memorize.

  • Main menu, test browsers, reports with pagination and comparison, server info (CPU, RAM, disk, network, Java, plugins), monitoring control, settings
  • Profiler and Memory menus, with Profiles and Memory archives in the Reports screen
  • Forms — /bench profile or /bench memory dump typed alone open a form with every option, and remember your last choices
  • Native dialogs on Paper 1.21.6+, inventory screens elsewhere; Yes/No confirmations instead of retyping long commands

java_y3vql8a3nD.png
GUI system — tests, reports, monitoring, profiler, memory, settings

Commands

Benchmarking
/bench start [force] [warmup] [runs]  — Full benchmark (e.g. /bench start 5)
/bench test                           — List every test by category
/bench test <id> [parameters]         — Run one test with custom parameters
/bench stresslimit                    — Find your server's breaking point
/bench tier <type>                    — Stress ladder on a single type
/bench stop                           — Stop the running benchmark, test or stress run
/bench custom run|list|info|reload    — Custom YAML profiles
/bench zones [tp|clean]               — Test zones of the last run
Profiler and memory
/bench profile [seconds] [share|upload]  — Timed capture (a form opens when typed alone)
/bench profile ring on|off|status|dump   — Continuous ring buffer
/bench profile list|show|delete          — Saved profiles
/bench profile share|upload|unshare <id> — Public link or your account
/bench memory summary [live|all]         — Heap summary per plugin
/bench memory dump [live|all] [gzip]     — Full heap dump (preview, then confirm)
/bench memory analyze [last] [quick|full|auto|retained <plugin>]
/bench memory share|upload|unshare <id>  — Share or upload a report (never a dump)
/bench confirm                           — Confirm your last preview
Monitoring
/bench monitor remote on|off|status     — Live dashboard on voxelbench.com
/bench monitor web start|stop|status    — Embedded web dashboard
/bench monitor web dashboard on|off     — HTML dashboard or API-only
/bench monitor bars [all|<metric>]      — Boss bars
/bench monitor push start|stop|test     — Push mode (Grafana, Prometheus...)
/bench monitor auth password <pwd>      — Dashboard password (console only)
/bench monitor auth key pull|push       — API keys
/bench monitor whitelist add|remove|mode
/bench monitor https generate|on|off

Similar projects

Plugin →