Add a lightweight real-time performance HUD to OBS using a standard Text (GDI+) source. Shows stream/recording time, dropped frames, CPU usage, and estimated bitrate with an adjustable update interval and one-click enable/disable.
OBS Performance HUD (Lua Script)
When I stream or record with OBS, I always want to know exactly what is happening behind the scenes. Frame drops, CPU spikes, or bitrate instability can silently ruin an otherwise perfect session. That is why I use this lightweight OBS Performance HUD Lua script, designed to display real-time performance metrics directly inside OBS using a standard Text (GDI+) source.
Instead of installing heavy plugins or external monitoring tools, I prefer a clean and efficient solution that runs natively inside OBS Studio. This script continuously updates a single text source with essential streaming statistics, making it ideal both as a visible debug overlay and as a private off-screen monitoring panel.
This performance HUD gives me instant feedback about stream stability without cluttering my scene or increasing system load.
What the OBS Performance HUD Displays
The script focuses only on the metrics that actually matter during live streaming or recording sessions. Everything is presented clearly in one text source, making it easy to read at a glance.
Stream or Recording Time: I can instantly see how long my session has been running, which is useful for structured broadcasts, long-form recordings, or monitoring endurance streams.
Dropped Frames: Frame drops are one of the first indicators of network or encoder instability. The HUD shows them in real time so I can immediately detect issues.
CPU Usage: High CPU usage can cause encoding problems or system slowdowns. With this metric visible, I can quickly adjust scene complexity, filters, or encoder settings.
Estimated Bitrate (kbps): Bitrate stability is essential for streaming platforms. This display allows me to verify that my stream is delivering consistent data to the server.
Main Features
Lightweight No external plugins required. The script runs natively inside OBS.
Text (GDI+) Uses the standard Text (GDI+) source instead of deprecated workflows.
Real-Time Updates Continuously refreshes time, dropped frames, CPU usage, and bitrate.
Adjustable Interval I can control how often the HUD refreshes.
Enable/Disable Toggle The HUD can be turned on or off instantly.
Auto-Clear When disabled, the script automatically clears the text so it never clutters the scene.
Because it updates only a single text source, the impact on performance is minimal. Even on modest systems, I can safely run this script without worrying about additional load.
Practical Use Cases
I primarily use this OBS performance monitor as a debug overlay when testing new scenes, filters, transitions, or encoder settings. Instead of guessing whether changes affect stability, I can see the metrics live.
Another practical approach is private monitoring. By placing the text source off-screen or behind a masked element, I can keep the data visible only in the preview window. Viewers never see it, but I still benefit from real-time feedback.
For long recording sessions, especially tutorials or gameplay captures, the HUD helps me verify bitrate stability and confirm that no frames are being dropped over time.
How I Set It Up in OBS
Setting up the OBS Performance HUD is straightforward and takes only a few minutes.
First, I create a Text (GDI+) source in OBS and give it a clear name, such as HUD. Then
I open Tools → Scripts and click the plus button to load the Lua script file.
Once loaded, I select the correct Text (GDI+) source from the dropdown menu inside the script settings. After that, I choose my preferred update interval and enable the HUD using the checkbox.
If everything is configured correctly, the performance data immediately appears in the selected text source.
Important Notes for Best Results
If I do not see any text displayed, I always verify that the correct Text (GDI+) source is selected and that it exists in the active scene or within a visible nested scene.
To minimize performance impact, I typically set the update interval between 500 and 1000 milliseconds. Faster refresh rates are possible, but they are rarely necessary unless I need extremely granular monitoring.
Overall, this OBS Lua script provides a simple yet powerful way to monitor streaming performance in real time. It keeps my workflow clean, avoids unnecessary plugins, and ensures that I always have full visibility into stream health without complicating my setup.
Use this resource in your creator setup
This resource is included as a practical addition for creators who want to improve a specific part of their stream, recording, or channel workflow. Review the explanation above, then test it in your own setup before publishing it live.
For this specific resource, the key value is: Add a lightweight real-time performance HUD to OBS using a standard Text (GDI+) source. Shows stream/recording time, dropped frames, CPU. Use the link below only after reading the details above so visitors understand what they are opening and why it belongs in their streaming workflow.
([redirect_url])[Open Stream Health HUD]