---
title: "OBS dropped frames on Mac? Stream reports and a go-live check | Kilobat"
url: "https://kilobat.app/streaming"
description: "After every OBS stream, Kilobat says when frames dropped and why: Dropbox uploading, Wi-Fi, another device, a bitrate your upload can’t carry, or OBS’s own encoder and GPU, which aren’t the network. Plus a check before you go live."
---

For streamers

# Know why the stream dropped frames.

OBS goes red, chat says you’re buffering, and the speed test swears you have plenty of upload. Kilobat reads OBS’s own frame counters while you stream, lines them up with what your network did, and afterwards says which minutes dropped frames and why, including when it wasn’t the network at all.

[Download for Mac ↓](https://kilobat.app/downloads/Kilobat-1.31.1.dmg?via=site)

```
brew install seifip/kilobat/kilobat
```

**OBS stream**2 h 14 min · 6,000 kbps

(Dropped (network))0.2% (Encoding lag)340 (Rendering lag)0 (Upload)12 Mbps

**21:14–21:16**

**Dropped 2.1% of frames: Dropbox was uploading.** Your upload is 12 Mbps and OBS needs 8.

**22:03**

**Skipped 340 frames to encoding lag.** The encoder couldn’t keep up: your GPU, not your connection.

Kilobat now

Ready to go live

Upload 12.4 Mbps. OBS needs 7.8 for 6,000 kbps with 30% to spare.

## Sound familiar?

- “OBS says dropped frames (network), but my speed test says 300 up.”
- “Is it my Wi-Fi, my Mac, or Twitch?”
- “The stream was fine until Dropbox started syncing.”
- “How much upload speed do I actually need for 1080p60?”

## Why OBS drops frames. Kilobat names which one.

OBS counts three kinds of lost frames, and only one of them is the network. Kilobat reads all three once a second over OBS’s own WebSocket, and checks the line the way its call reports do.

1. ### Dropped frames climb while a folder syncs

   Another app on your Mac filling the upload: Dropbox, Google Drive, iCloud, a backup.

   Names the app and the minutes it cost you. Call mode for streams can hold it until you end the stream. Pro:
2. ### Drops with nothing else running on the Mac

   Another device on your network uploading or streaming.

   When your router shares its traffic counters (UPnP), Kilobat sees the line busy with traffic your Mac didn’t send. A paired Mac running Kilobat is named, with its app. Pro:
3. ### Drops in bursts on Wi-Fi

   The Wi-Fi or the router stalling: weak signal, a busy channel, AirDrop scanning.

   Your router stalled too, which points to the local connection. Try Ethernet for streams, or move closer. Pro:
4. ### A steady trickle of drops, all stream long

   A bitrate set above what your upload carries.

   Says what your upload sustained and the bitrate that fits: “lower the bitrate to 4,400 kbps”. Pro:
5. ### Drops while your router and the internet answered fine

   Your provider, or the path to the ingest server.

   Says the drops were beyond your router, with a closer ingest server to try in OBS › Settings › Stream. Pro:
6. ### “Skipped frames due to encoding lag”

   The encoder couldn’t keep up. That’s the Mac, not the network.

   Says so plainly, with a faster preset, the hardware encoder (Apple VT H264), or a lower resolution or frame rate. Pro:
7. ### “Frames missed due to rendering lag”

   The GPU was busy, usually with the game itself.

   “Your GPU was the bottleneck, not your connection”: cap the game’s frame rate or drop heavy sources. Pro:

## Before, during and after the stream.

Kilobat works with OBS Studio 28 or later, through the WebSocket server built into it. It connects only to 127.0.0.1 and reads OBS’s counters; it never sees the video, the chat or your stream key.

1. Before

   ### The go-live check.

   About eight seconds of upload to Cloudflare and 20 pings for jitter and loss, against OBS’s bitrate plus 30% headroom. It says ready, tight, or not enough with a bitrate that fits, and which apps are uploading right now. On a metered network it never measures without asking.

   Free:
2. While you stream

   ### Every second, side by side.

   OBS’s dropped, skipped and missed frames, its congestion and bytes sent, next to pings to the internet and your router, the busiest other app, the Wi-Fi and the Mac’s load. With Call mode for streams, sync apps are held until you stop.
3. After

   ### The report.

   A card in Health › Streams with each window where frames dropped and why, and a notification only when the stream dropped enough to notice. Kilobat counts the drops for free; Pro names each cause and what to change.

   Free:

Go live check

## Can your upload carry tonight’s stream?

Upload speed changes through the day, and a speed test with four connections flatters it. Before you go live, Kilobat runs one connection for about eight seconds, the way OBS sends, and compares it with the bitrate set in OBS plus 30% to spare. That’s the usual rule: OBS suggests a bitrate around 75% of your upload, so 6,000 kbps at 1080p60 wants about 8 Mbps up.

Terminal

```
# Before going live
$ kilobat stream check
✓ Ready to go live
  Your upload is 12.4 Mbps and OBS needs 8 (6,160 kbps plus 30% headroom).
  ping 21 ms · jitter 3 ms · loss 0.0%
# On a busy evening
$ kilobat stream check
! Not enough upload
  Not enough upload: 5.8 Mbps, and OBS needs 8. Lower the bitrate to 4,400 kbps.
  Dropbox is uploading: pause it before you go live, or turn on Call mode for streams.
  ping 24 ms · jitter 11 ms · loss 0.0%
```

Free, from Health › Streams, the Shortcut **Check before going live**, or the terminal. On a metered network it uses your last speed test there instead, and says so.

**Will this call hold up?** A speed test for capacity, and a stutter test for the short spikes that speed tests average away.

Connect OBS

## One setting in OBS, one in Kilobat.

- In OBS, open **Tools › WebSocket Server Settings** and tick **Enable WebSocket server**. Note the port (4455) and the password if you keep one.
- In Kilobat, turn on **Settings › Streaming › Stream reports from OBS**, and enter the password. It’s kept in your Mac’s Keychain.
- Click **Test connection**. Kilobat says plainly if OBS isn’t running, its WebSocket server is off, or the password is wrong.

OBS only, for now: Streamlabs Desktop has its own remote control with a single dropped-frames figure that doesn’t split the network from the encoder, so it isn’t read. The [streaming overlay](https://kilobat.app/docs/calls#overlay) works with any streaming app.

**Streaming**

**Stream reports from OBS** (Dropped frames and why, after each stream)

**Port** (OBS › Tools › WebSocket Server Settings)*4455*

**Password** (Kept in your Keychain)*••••••••*

**Test connection** (Connected to OBS · not streaming)*Test*

**Call mode for streams** (Holds Dropbox, Google Drive and Steam downloads while you’re live)

The report

## Every dropped frame, on a timeline.

Health › Streams shows each stream beside your calls and remote sessions: OBS’s dropped frames second by second, each bad window in rose, encoder and rendering lag kept apart, and one sentence for what happened. “Dropped 2.1% of frames 21:14–21:16: Dropbox was uploading. Your upload is 12 Mbps and OBS needs 8.” Earlier streams sit underneath, one line each.

Terminal

```
# Is OBS connected, and is it live?
$ kilobat stream status
# Recent streams, each drop window and its cause
$ kilobat stream reports
# For scripts
$ kilobat stream reports --limit 5 --json
```

Coding agents read the reports through the MCP tools `get_stream_reports` and `check_stream_readiness`. [Read the docs](https://kilobat.app/docs/calls#streams).

**What is eating your bandwidth?** Live traffic for every app, right in your menu bar. Catch the backup choking your call.

## What’s free, and what Pro adds

### Free, for good

- A report after each OBS stream, with how many frames dropped
- The go-live check, before every stream
- The streaming overlay with live ping, jitter and loss
- `kilobat stream` and the MCP tools for agents

### Pro, $29 once

- The cause of every drop window, and what to change
- The bitrate your upload can actually carry
- Call mode for streams, holding sync apps while you’re live
- Call reports and Call mode for your meetings

Pro is $29 once for two Macs, with a 7-day free trial and 14-day refunds. [Free for students](https://kilobat.app/students).

## Questions

**What does “dropped frames (network)” mean in OBS?**

OBS encoded the frame but couldn’t send it in time, so it threw it away to catch up. That’s the connection between your Mac and the ingest server, or a bitrate above what your upload carries. “Skipped frames due to encoding lag” and “frames missed due to rendering lag” are different counters, and neither is the network. Kilobat keeps all three apart.

**How much upload speed do I need to stream?**

Your bitrate plus about 30%. 6,000 kbps for 1080p60 wants about 8 Mbps of steady upload; 4,500 kbps for 720p60 wants about 6. OBS’s own advice is a bitrate around 75% of your upload. The go-live check measures what your upload carries now, over one connection, and compares.

**Why does OBS drop frames on Wi-Fi when the speed test is fine?**

A speed test averages ten seconds. A stream needs every second on time, and Wi-Fi stalls for a moment when the signal dips, a neighbour’s network is busy or AirDrop scans. Kilobat pings your router once a second during the stream, so it can tell the room from the internet. Ethernet fixes most of it.

**Does it work with Streamlabs or other streaming apps?**

The stream reports and the go-live bitrate need OBS Studio 28 or later, which has the WebSocket server built in. Streamlabs Desktop has its own remote control with one dropped-frames figure that doesn’t say whether the network or the encoder dropped them, so Kilobat doesn’t read it yet. The go-live check without a bitrate, and the streaming overlay, work with any app.

**Can Kilobat see my stream or my stream key?**

No. It connects to OBS on 127.0.0.1 and asks for its counters and the bitrate, nothing else. It never sees the video, the audio, the chat or the stream key, and everything stays on your Mac. The password is kept in your Keychain.

**Will it slow down my stream?**

No. During the stream it asks OBS for its numbers once a second and sends one small ping a second to the internet and your router, a few kilobytes a minute. The go-live check’s upload test runs only before you go live, when you ask for it.

**Is it free?**

The reports, the drop count, the go-live check and the overlay are free. Kilobat Pro, $29 once with a 7-day free trial, suggests likely causes for drops and a bitrate that fits, and holds sync apps while you stream.

## Kilobat for…

[**Gamers**Ping to CS2, Fortnite, Apex, Siege and Age of Empires servers, or your match’s, lag spikes named, ping on stream.](https://kilobat.app/gaming)[**Cloud gaming**Why GeForce NOW, Xbox Cloud Gaming or Luna stuttered, and what’s in the way while you play.](https://kilobat.app/cloud-gaming)[**Video calls**A report card after every call that says why it froze.](https://kilobat.app/video-calls)[**Slow internet**Wi-Fi, router, provider or DNS: find the weak link.](https://kilobat.app/slow-internet-mac)[**Bandwidth by app**Live upload and download for every app, in the menu bar.](https://kilobat.app/mac-bandwidth-monitor)

## Go live with a line you trust.

[Download for Mac ↓](https://kilobat.app/downloads/Kilobat-1.31.1.dmg?via=site)

```
brew install seifip/kilobat/kilobat
```
