Reading the viewer panel
Field-by-field reference for VDO.Ninja's stats panel when you are watching someone else's stream.
This is the panel you get when you Ctrl + click a remote video — a guest in your room, or a stream you are viewing in OBS. It describes what is arriving at your machine.
The panel opens with StreamID: so you always know which stream you are looking at. That matters when several guests are on screen.
Stream info

Everything in this section is self-reported by the person sending the video. It is not measured by you. This is the single most misread part of the panel: CPU, GpGPU, Platform (OS) and Power level all belong to the guest, not to you.
Video init width / height / frameRate
What the sender asked their camera for. Not necessarily what is being sent right now — compare against Resolution under Video track
Quality (URL)
The sender's &quality setting
Echo-Cancellation, Auto-Gain (agc), De-noising
The sender's audio processing. default means they did not override it and the browser decides — which is not the same as "off"
Pro-Audio (Stereo-mode)
Only appears if the sender used &stereo. Higher-fidelity audio modes usually need headphones at both ends
VDO.Ninja Version
The sender's version. Mismatched versions are worth noting when something behaves oddly
User agent, Platform (OS), Browser
The sender's browser and OS. Click the user agent to copy it
GpGPU, CPU
The sender's graphics adapter and core count. Limited hardware can help explain encoder trouble, but these fields do not measure current load
Power level, Plugged in
The sender's reported battery state. A low battery, low-power mode, or thermal pressure may reduce performance, but the percentage alone does not prove throttling
Quality limited by
Why the browser says the sender's encoder is limiting resolution or frame rate: none, bandwidth, cpu, or other
Total outbound p2p connections
How many viewers the sender currently has, updated within a few seconds of anyone joining or leaving. The same count can be shown as a 🔗 badge on the video itself with &showconnections
Quality limited by is one of the highest-value fields in this section. If a guest looks soft and it says cpu, raising the bitrate on your side is unlikely to fix it.
Peer-to-peer connection

This section describes the network path itself, measured by your machine.
Round Trip Time
Network latency there and back
Stable is more important than low. A number that swings around indicates a congested path
Candidate type - Local
The candidate used at your end
host = a local interface candidate. srflx = a public NAT mapping discovered through STUN. relay = a TURN allocation
Candidate type - Remote
The candidate used at their end
Interpret it together with the local candidate. A selected pair containing relay is using TURN; host on both ends often indicates a LAN path
Local network type
Your interface type where the browser exposes it
Often unknown; Chrome hides this for privacy
Time active
How long this connection has been up
Resets on reconnect. A number that keeps resetting means the connection is flapping
Total received
Total inbound bitrate on this connection
Includes every track plus protocol overhead, so it reads slightly higher than the per-track bitrates added together
Requested resolution
The size your viewer has asked the sender to send
In device pixels, so on a HiDPI screen it will look larger than your window. ~ means the request was snapped to a nearby standard size
Requested resolution surprises people. VDO.Ninja asks for the resolution that matches how large the video is actually drawn on your display, multiplied by your device pixel ratio. A small video in a grid genuinely does request a small resolution — that is the bandwidth optimisation working as intended. See &scale if you need to override it.
Audio track and Video track

Each incoming track gets its own section. A missing section is itself a diagnosis: if there is no Audio track section, no audio is arriving, and the problem is at the sender or in the negotiation — not in your speakers.
Bitrate
both
Actual received bitrate for this track. A ⚠️ appears here if it drops to zero while the track still exists
FPS
video
Frames per second actually being decoded
Resolution
video
The size actually arriving. Compare to Requested resolution above and to the sender's Video init width/height
Jitter Buffer Delay
both
How much delay the receiver is adding to smooth out uneven arrival. A rising value can warn that packets are arriving unevenly, even when the current loss sample is low
Audio Level
audio
Current loudness, 0 to 1. If this sits at exactly 0 while bitrate is healthy, the sender is transmitting silence
ClockRate
audio
Sample rate and channel count, e.g. 48000 / 2
Codec
both
The negotiated codec. opus, /w fec means forward error correction is active on audio
Packet Loss
both
Percentage of packets that never arrived
Keyframes requested (PLI)
video
How many times your end has asked for a fresh keyframe. Climbing steadily means your decoder keeps losing sync
NACKs sent
video
How many times your end asked for a specific lost packet to be resent
Type
both
Which kind of track this is
How these interact
Packet loss, NACKs and PLIs often interact:
A missing or late packet can cause your end to send a NACK asking for it again.
If the decoder cannot continue from the frames it has, it can request a fresh keyframe (PLI).
A keyframe is usually larger than a delta frame, so it can briefly increase bandwidth.
A burst of loss can therefore produce NACKs followed by a PLI and the familiar "freeze, then snap back into focus" artefact. A PLI is not proof of packet loss, though: startup, decoder resets, layer changes and renegotiation can also request a keyframe. Look for sustained counter growth alongside the visible symptom.
Extra rows you may see
These only appear in specific configurations:
Added Buffer Delay, Total Playout Delay
You are using &buffer or &bufferaudio. Total Playout Delay is network latency plus jitter buffer plus any buffer you added — but it does not include Bluetooth, monitor or capture delay
Video Buffer: Target / Current, Audio Buffer, Video Repairs: FEC / NACK
The stream is in chunked mode. (rebuffering) in red means playback has stalled while it refills
Candidate type showing 💸 relay server
A TURN relay is carrying the traffic. See relay connections
⚠️ You're blocking / ⚠️ They're blocking
A browser or system setting is preventing a direct peer-to-peer connection at that end
A map with coordinates
The sender is sharing location data
Next
Reading the publisher panel — the other end of the same connection
Diagnosing problems — what to actually do about these numbers
Last updated
Was this helpful?