OBS setup

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, PacketSendRate included. 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.

Why the overlay is this small

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.