Terraria server analytics, for TShock servers.

A sidecar on the same machine reads TShock's REST API on localhost: players online, sessions, world events such as blood moons and invasions, and uptime. The optional TShock plugin adds update time and NPC kills through a local spool.

See who plays and who comes back, when blood moons and invasions hit, and whether the server stayed up. Add the optional TShock plugin for update time and NPC kills.

Free for one server. No card needed.

Questions it answers for Terraria servers

What the demo dashboard answers for this game.

Who plays, and who comes back?

Sessions and retention for every week of new players.

When do world events hit?

Blood moons and invasions over time, next to players online.

When are events busiest?

Players online through the week, for arena and event nights.

Did the server stay up?

Uptime, restarts and an alert in Discord when it goes down.

Can I moderate from the dashboard?

Kick, ban, mute and broadcast through TShock, once you turn moderation on.

Update time and NPC kills?

Add the optional TShock plugin and set hook_spool_dir in the sidecar.

What ServerStats tracks on Terraria servers

A Linux sidecar on the same machine reads TShock's REST API on localhost with an application token.

Players

  • Players online and slots every 10 seconds
  • Sessions from the player list every 15 seconds, joins and quits
  • New and returning players, D1, D7 and D30 retention

World

  • Blood moons and invasions: when they start and end
  • Server version and every change
  • Optional TShock plugin: NPC kills by kind (bosses are one kind) and hardmode start

Server

  • Uptime, restarts and downtime, with alerts
  • TShock REST response time, host CPU and memory
  • Optional TShock plugin: update time, active NPCs and dropped items

Moderation (opt-in)

  • Kick, timed ban and unban, mute, broadcasts and saves
  • Optional TShock plugin adds more world and combat events

No install yet? Basic mode reads TShock's /v2/server/status on port 7878. Vanilla Terraria has no query at all. Check any Terraria server with the free server status checker.

Plugin-specific payment and gamemode integrations for Terraria are planned. The general dashboard and payments log work today.

The number that matters: 60 updates a second

16.7ms
One update at Terraria's 60 a second
Update time
Optional TShock plugin
Players
Every 10–15 s
World events
Every 30 s
Response time
Every call

Terraria updates the world 60 times a second, so each update has about 16.7 ms. The optional TShock plugin measures update time and writes it to a local spool read by the sidecar.

The sidecar reads players against slots, how long TShock takes to answer, restarts and downtime, and blood moons and invasions. Response time is an indirect signal: a climbing value can mean the server is struggling.

One sidecar, on the same machine.

Works with

  • TShock
  • TShock REST API
  • Linux sidecar (Windows soon)
  • Runs next to your server and connects out only. No ports to open.
  • A one-time claim code, then the sidecar signs everything it sends with its own key. No reusable secret is stored on your server or ours.
  • Player IDs are keyed hashes in analytics. Player IP addresses are never sent to us.
serverstats-sidecar.yml
# Linux x64 sidecar (Windows build coming soon)
# 1. serverstats-sidecar init terraria > serverstats-sidecar.yml
# 2. In serverstats-sidecar.yml set:
claim: "SS-XXXX-XXXX-XXXX"
terraria:
  token_file: /etc/serverstats/tshock-rest-token
# tshock/config.json: "RestApiEnabled": true and an ApplicationRestTokens entry.
# Start with -ip 127.0.0.1 or keep port 7878 firewalled.
# 3. serverstats-sidecar run

Terraria questions

Does it need TShock?

Yes. The sidecar reads TShock's REST API, so vanilla Terraria servers aren't supported. Vanilla Terraria has no query at all.

How do I turn on TShock's REST API safely?

Set RestApiEnabled to true in tshock/config.json and add an entry to ApplicationRestTokens. Then start the server with -ip 127.0.0.1 or keep port 7878 firewalled, because the token travels in the URL.

Can I see bosses, deaths or lag?

Partly. The optional TShock plugin adds update time, active NPCs, NPC kills by kind (bosses are one kind) and hardmode start; set hook_spool_dir in the sidecar config. Player deaths and boss attribution are not available. The plugin is built for TShock 6.2.1 and has not yet run against a live client.

Does it work with tModLoader servers?

Not yet. tModLoader servers have no query ServerStats can read; deeper modded support is on the roadmap.

Can I moderate from the dashboard?

Yes, with moderation on: kick, timed ban and unban, mute, broadcasts and saves. TShock's REST API has no private messages.

Do players install anything?

No.

Is it free?

Free covers one server with 24 hours of history, forever, with no card. Operator is $9.99 a month for 10 servers and 90 days of history, which you need for week-on-week trends and D7 or D30 retention. Yearly billing gives two months free.

Related games

One ServerStats account covers every game you run.

Start with one Terraria server, free

Run the sidecar and see your first numbers today.