Your Rocket League OBS overlay, set up in a minute
One Browser Source, one URL, a transparent layer on top of your gameplay capture. Here's the exact setup, field by field — the same overlay shown on the home page.
1. Turn on the Rocket League Stats API
The switch lives in one file, and most of it is automatic.
Where the setting lives
TAGame\Config\DefaultStatsAPI.ini, inside your Rocket League
install folder. On Steam, that's usually:
<your Steam library>\steamapps\common\rocketleague\TAGame\Config\DefaultStatsAPI.ini
Two values in it matter: Port (49123 — the socket
Statfeed connects to) and PacketSendRate (how many updates per second the game
sends). Statfeed's HUD asks for 30; anything from 1 to
120 works, 30 just makes the boost and speed readouts look
smoother.
What Statfeed does automatically
Statfeed finds your Rocket League install on its own (Steam first, then Epic) and
checks this file every time it starts, and again every few minutes while it runs. If
PacketSendRate is below 30, it raises it — no dialog, nothing to click.
Two cases it also handles without you noticing:
- Rocket League updated and reset the file. This happens — an
update can restore this ini to its defaults,
PacketSendRateincluded. Statfeed catches it the same way, on its own next check. - Rocket League was already open when Statfeed started. The file can't be rewritten safely while the game has it open, so Statfeed waits and applies the fix the next time you close and relaunch the game.
What's still on you
- Launch Rocket League once after the setting changes. The game only reads this file when it starts — a game that's already running never picks up the new value.
- A non-default install location. Statfeed looks in the standard
Steam and Epic folders. If yours is somewhere else, its config file
(
%LOCALAPPDATA%\statfeed\config.json) accepts a direct path:{ "rocketLeagueDir": "D:\\Games\\rocketleague" } - A read-only ini. Rare, but if a backup tool or a permission change marks the file read-only, Statfeed can't write it and says so instead of silently doing nothing — clear the read-only flag and restart Statfeed.
- Epic Games Store installs are less proven than Steam's. If automatic detection doesn't find an Epic install, the manual path above covers it.
2. Confirm Statfeed is reading it
Once the socket's open, the fastest check isn't a settings screen — it's the HUD.
Open http://localhost:8123/hud. Two states tell you everything:
- Waiting. Rocket League isn't in a match right now. You'll see your session and recent match history, not a blank page — that's Statfeed connected and idle, not Statfeed missing.
- Live. The moment a match kicks off, the screen switches on its own to the live scoreboard — no refresh, no click.
If the page won't load at all, Statfeed itself isn't running — that's a different problem from the Stats API (see Troubleshooting below).
3. Add a Browser Source
In OBS Studio, click the + under Sources and choose Browser. Name it anything — “Statfeed” works — and OBS opens its Properties panel next.
4. Point it at the overlay
Paste this into the URL field:
http://localhost:8123/overlay
Statfeed listens on port 8123 by default. If that port was busy, it moves to the next free one and prints the address it picked when it starts — check there if this exact address doesn't load.
5. Set the size, skip the chroma key
Set Width to 1920 and Height to
1080 — the same 16:9 frame the rest of the broadcast HUD uses. Leave the
background alone: the overlay is transparent from the first pixel, through the browser
source's own alpha channel. There's no green to key out, and no “chroma key”
filter to add.
6. Make sure the source is actually visible
Easy to get wrong once, and nothing on screen warns you when it happens: a Browser Source added to a scene with its eye icon toggled off (hidden) records your gameplay with no overlay on it at all. Check the eye is open before you hit record.
7. OBS won't refresh itself
This is the one that costs the most time. OBS's browser engine keeps the page it loaded in memory — it doesn't notice when the overlay changes, not after a Statfeed update, not after a restart. If the overlay looks stale (an old color, a widget that should be gone), right-click the source and choose Refresh cache of current page. To stop hitting this every time, tick Refresh browser when scene becomes active in the source's properties — it reloads on its own whenever that scene comes up.
8. Choose widgets and where they sit
Two things live in the URL, both optional. Leave them off and every widget shows, in the default layout.
Which widgets
Add ?widgets= with a comma-separated list of
ratings, session, goal, brand:
http://localhost:8123/overlay?widgets=ratings,goal
An empty ?widgets= turns every widget off on purpose — for when
you just want the transparent canvas.
Where they sit
Add ?layout= with a preset name, optionally followed by
widget=anchor overrides. The presets are default,
facecam-left, facecam-right and vertical; anchors are
the nine grid positions, top-left through bottom-right:
http://localhost:8123/overlay?layout=vertical,ratings=top-right
facecam-left and facecam-right free up the bottom corner on that side. In both, the ratings list stays top-left and the brand mark moves to the top-right — so a face cam in an upper corner still needs a manual widget=anchor override. vertical moves every widget into the center column — already
sized to a clean 9:16 crop — so nothing gets clipped if you cut a vertical clip out of
the recording.
Other players' names — and what it can't reach
Add &names=synthetic and every player who isn't you gets a
stand-in name (Halcyon, Ridgeback, Comet, and so on) inside Statfeed's own overlay:
http://localhost:8123/overlay?widgets=ratings,goal&names=synthetic
That parameter only touches what Statfeed draws. It doesn't reach Rocket League's own in-game nameplates — those still show real names in your capture and still need blurring in your editor if you're publishing the footage.
9. What each widget shows
ratings- Live Statfeed Score per player, ranked, updating as the match plays.
session- Win/loss streak and your last five results — on screen between matches, too.
goal- A lower-third during the replay: scorer, shot speed, shot height.
brand- A small “powered by STATFEED” mark — on by default, one flag away from off.
10. Troubleshooting
Port 49123 isn't listening
Normal when Rocket League isn't open. The Stats API only exists while the game is running — a closed game means nothing to connect to, not a broken setup.
PacketSendRate is back to 10
A Rocket League update reset the file — a known behavior of the game's updater, not a Statfeed bug. Start Statfeed once with Rocket League closed; it reapplies the setting on its own, and it takes effect the next time you launch the game (see step 1).
The overlay looks stale or missing a recent change
The CEF caching behavior from step 7 — refresh the browser source's cache, or turn on “Refresh browser when scene becomes active” once and stop thinking about it.
The HUD or overlay won't load at all
Something else is likely sitting on Statfeed's port — usually an old Statfeed process that never closed. With the tray icon installed, right-click it and choose Restart server; the dot turns green again once the new one's up. Without the tray, closing whatever's using the port and starting Statfeed again does the same thing.
It doesn't draw the scoreboard, boost or clock
The game already puts those on screen, better than a browser overlay ever could. Statfeed only adds what the game doesn't: a live rating per player, your session record, and a goal card the broadcast doesn't have. That's a boundary we chose, not one we hit.