Glitchless for Roblox
A Luau module that records how your Roblox experience runs for the people playing it, on their devices and on your game servers: where they lag and why, which errors they hit, how long they wait to load, and where they quit. Your coding agent reads the same data over MCP and fixes what they hit.
What it records in a Roblox experience
-
Lag on players' devices, with a cause
Every frame on every player's device is timed, with render, GPU and physics time. Each stutter names what likely held it up: assets still downloading, hundreds of new instances in one frame, physics, rendering or your scripts.
-
Your game servers
Each server sends its own heartbeat (the server's frame rate), late frames, players and memory. So you can tell a whole server lagging for everyone in it from one player on a bad connection.
-
Errors, client and server
Every error in your LocalScripts and server Scripts, with its script, line and function, grouped into issues, and what the player had just done. Players' names and user IDs are taken out of the error text before it leaves your server.
-
Loading and ping
How long each player waits on the loading screen before the first frame, and each player's round trip to the server, so a slow join or a laggy region shows up in players, not in guesses.
-
Where players get stuck and quit
Rounds, races, obbies or stages as levels: starts, wins, fails, deaths and players leaving mid-round, with your own events and properties (a mode, a car class, a rank tier) to compare by.
-
Devices in Roblox's words
Computer, Phone, Tablet, Console or VR, with the graphics quality and screen size, so you know which players' devices struggle and by how much.
Set it up.
One module, one server Script and HTTP requests turned on. Only Roblox servers can make HTTP requests, so players' devices hand their data to your server, which sends it on.
- Install
Download Glitchless.rbxm from the newest Roblox release and, in Studio, right-click ReplicatedStorage → Insert from File. With Rojo, copy
roblox/srcfrom the repository as a folder namedGlitchlessunder ReplicatedStorage. - Set up
Turn on Allow HTTP Requests (Game Settings → Security), then start Glitchless from one server Script with your game's name and client token.
- Play
Start a play test in Studio, then publish. Sessions show on your dashboard, with the server's next to its players'.
ServerScriptService, one server Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Glitchless = require(ReplicatedStorage.Glitchless)
Glitchless.init({
service = "my-game", -- your game's name in Glitchless
clientToken = "gl_pub_…", -- from glitchless_create_game, or Settings → Games in Glitchless Cloud
})
Built for working with a coding agent
Glitchless's MCP server gives Claude Code, Codex, Cursor or any other agent the findings, frame times, server heartbeat, errors and level funnel from your players, so it can find what to fix and check the result.
Ask it in plain words: which devices lag in the new map, whether the lobby server keeps up when it fills, where players quit the first race, whether last week's update fixed an error. It answers in players, with the usual value next to the number.
Your agent can measure a play test in Roblox Studio before players get the update, then compare the published version with the one before it once players have played it.
Tested
- 35 Luau tests under Lune, against a stand-in for Roblox's services and against the JavaScript SDK's own sketch, fingerprints and property rules.
- 8 end-to-end tests over real HTTP to a local Glitchless server.
- Play tests in Roblox Studio, driven over Studio's own MCP server: the players' and the server's sessions arrive, with no player name or user ID anywhere.
Not yet
- Players are always anonymous: no user ID, name or display name, and no saved player ID, so Glitchless doesn't count returning players on Roblox. Retention is on your Creator Hub dashboard.
- Bug reports with a screenshot from inside the experience aren't in the Roblox module yet.
- Playtest bots don't play Roblox experiences: measure a change with a play test in Studio, then compare versions with real players.
Fixing a problem in Roblox
- Roblox analytics and error tracking tools
Roblox's own tools, GameAnalytics, Gamebeast, PostHog, Sentry and Glitchless: what each records in a Roblox experience, what it misses, and which to use together.
- How to find lag in a Roblox experience
Is it the player's device, your server's heartbeat or the connection? How to tell, Luau that times frames on both sides, the usual causes and fixes, and how to see it across every player.
- How to find where players quit a Roblox experience
Onboarding and stage funnels with AnalyticsService, what the Creator Hub's funnel page shows, and how to find out why players left at a step: the lag and errors in those sessions.
Questions
How can a Roblox experience send data to Glitchless?
From its servers. Roblox only lets server scripts make HTTP requests, so the module's client half passes each player's frames and errors to your server over a RemoteEvent, and the server half sends them on with HttpService. The client token stays in your server Script, out of players' reach.
Is it free?
The module and the server are open source under the MIT licence. Glitchless Cloud is free for 5,000 play sessions a month, or you can run the server yourself with Docker. See pricing.
How is it different from Roblox's own analytics?
The Creator Hub tells you how your whole experience is doing: retention, revenue, and frame rate, crashes and server health across everyone. Glitchless records each session, so a stutter comes with its likely cause, the map and the device, and an error comes with the events that led to it, and your agent gets all of it. Most games use both: Glitchless vs Roblox's analytics.
What does it send about players?
Nothing that identifies them: no user ID, name or display name. Your server takes every player's name and user ID out of what it sends, errors included. PRIVACY.md lists every field.
Ship it glitchless.
Paste one prompt into Claude Code, Codex or Cursor. It adds Glitchless to your game and builds a dashboard for it.