Reports

VoxelBench saves results as local reports that you can review, compare and manage in-game.

Report Types

TypeFolderCreated By
Standard Benchmarkbenchmark//bench start and /bench custom run
Unit Testunit_test//bench test <id>
Stress Limitstresslimit//bench stresslimit, /bench tier and custom stress profiles

Every run writes its local report when it ends, before anything is sent: a failed submission, a profile with submit: false and a custom profile that is never scored all leave a file. A benchmark report carries a submission status โ€” pending, submitted, failed or not_submitted โ€” and the same file is rewritten with the VoxelScore when voxelbench.com answers; stress limit and unit test reports have no such status. What is saved can still be limited by type (see Storage by Type).

Viewing Reports

In-Game GUI

/bench reports

Opens the list of all reports, with one filter button per report type (and All) and a cleanup button that applies the retention rules at once. /bench reports gui <type> opens it already filtered. Lists are paginated and sorted by date, newest first. Click a report to see its details, such as:

  • Status, date, player and duration
  • Server information at the time of the run
  • Test parameters and metrics
  • For stress limit reports, the load reached for each type and whether the server broke
  • For a benchmark that has no score yet โ€” submission pending, failed, or never sent โ€” No score and the submission status instead of zeros, plus the submission error when there is one
  • A link to the online report when there is one, and a delete button

The Reports menu of /bench gui has one entry per report type, a Compare entry (see Comparing Reports) and a cleanup button that asks for a confirmation. It also has a Profiles entry (experimental, needs voxelbench.profile): the profiles saved by the profiler, with their own list and sheet; and a Memory entry (experimental, needs voxelbench.memory): the heap summaries and dump analyses saved by memory inspection โ€” never the heap dumps. The Cleanup buttons delete old reports only, never profiles, heap summaries or analyses.

The Scores Dashboard and Last Results entries of /bench gui show the last benchmark's score as voxelbench.com returned it: the plugin computes no score of its own. Under Single-Core, they list the tests the site counts in that sub-score, Redstone and Block Physics; the network and singleCoreBenchmark tiles say Not counted in the site's score. See VoxelScore.

Chat Commands

/bench reports list [type] [page]
/bench reports view <id>
/bench reports delete <id>
/bench reports cleanup

type is unit_test, benchmark, stresslimit or all. <id> is the short ID shown by list.

Results are also printed in chat when a test or benchmark ends.

Comparing Reports

The Compare entry of the reports menu (/bench gui, then Reports) shows your two most recent reports side by side. A difference is computed only when the two can actually be compared:

  • the same report type (a TPS average and a VoxelScore are not the same scale),
  • for two unit tests, the same test,
  • and a real score on both sides.

Otherwise the screen says the two reports cannot be compared. A benchmark that has no backend score shows No score and its submission status in place of a VoxelScore.

This is useful for:

  • Measuring the impact of server configuration changes
  • Tracking performance over time
  • Comparing before and after hardware upgrades

For a detailed comparison, open each report or compare them on voxelbench.com.

Storage

Reports are saved as JSON files, in one sub-folder per type of plugins/VoxelBench/reports/. Each file name is the date followed by the report's short ID:

plugins/VoxelBench/reports/
  benchmark/
    2026-09-12_18-30-45_1a2b3c4d.json
  unit_test/
    2026-09-12_14-00-00_5e6f7a8b.json
  stresslimit/
    2026-09-13_10-30-00_9c0d1e2f.json
  profiles/                              โ† profiler output, see Profiling
    20260924-153012-manual.json
  memory/                                โ† heap summaries and dump analyses, see Memory Inspection
    20260924-210908-live.json
reports:
  enabled: true          # false disables saving and /bench reports
  folder: "reports"      # relative to plugins/VoxelBench/

Storage by Type

Control which report types are saved:

reports:
  storage:
    unit-tests: true       # /bench test
    benchmarks: true       # /bench start
    stresslimit: true      # /bench stresslimit, /bench tier, stress profiles

Retention

Automatic cleanup prevents reports from accumulating indefinitely:

reports:
  retention:
    max-age-days: 90       # Delete reports older than 90 days (-1 = unlimited)
    max-per-type: 100      # Max reports per type (-1 = unlimited)
    max-total: 500         # Max total reports (-1 = unlimited)
    cleanup-on-startup: true   # Run cleanup when server starts

A value of -1 (or 0) disables that rule. /bench reports cleanup applies the rules on demand. These rules and the cleanup only apply to reports: profiles in reports/profiles/ keep their own retention (profiling.storage, see Profiling) and heap summaries and dump analyses in reports/memory/ theirs (memory-inspection.summary and memory-inspection.analysis, see Memory Inspection); the reports cleanup never deletes them.

Backend Sync

Full benchmarks (/bench start) and stress limit runs are always submitted to voxelbench.com, whether or not your server is linked. Custom profiles are only sent with submit: true in the profile; with the default submit: false the run stays local, and a benchmark profile's report is marked not_submitted. Individual test results are sent only when unit-test sync is enabled and your server is linked (see Account Linking):

reports:
  backend:
    unit-tests: true     # default: false

When enabled, results from /bench test and /bench tier are submitted to the backend for tracking in your account dashboard.

Online Reports

Visit voxelbench.com to:

  • View your full report history
  • Compare your server with others
  • Share reports with your community
  • Track performance trends over time