Skip to main content

Why OBS keeps disconnecting from Twitch

and why the fix starts with one line in the log and a 90-second setting on Twitch

The pages ranking for this problem list the usual suspects: Wi-Fi, bitrate, server. They are right, but none of them tells you how to see which one you have from the OBS log, and none of them lines up OBS's reconnect timing against the 90 seconds Twitch gives you before a dropped stream ends. Both are published: one in OBS's source code, the other in Twitch Help.

By Marcus Chen Reviewed by Alex Morrison14 minUpdated Fact-checked · 15 sources

In one minute: Turn on Disconnect Protection on Twitch's Stream Settings page, with Temporary Backup Image enabled, so a short drop shows viewers a slate for up to 90 seconds instead of ending the stream.[1] Keep OBS's Automatically Reconnect on with the default 2-second Retry Delay: up to seven attempts can then start inside that window.[3] Next, open Help → Log Files and read the line just before Disconnected from. A reset, a timeout and a blocked connection each point to a different fix.[8]

  • 90 show long Twitch Disconnect Protection holds a dropped stream on a slate.
  • 2 sOBS's default Retry Delay before the first reconnect attempt.
  • ×1.5the minimum stretch OBS applies to the wait after each failed attempt (up to ×1.55).
  • 7reconnect attempts that can start inside 90 seconds at OBS defaults.

# Which of three failures you have

Before changing a setting, look at the exact words OBS is showing you. It uses different wording for different failures, and all of it comes from OBS's own interface strings.[6]

  1. The status bar reads "Disconnected, reconnecting in N second(s) (attempt N)". You were live, the connection dropped mid-stream, and OBS is retrying by itself. Most of this guide is about this case. When it gets back in, the status bar says "Reconnection successful".[6]
  2. A "Failed to connect" box appears when you press Start Streaming. You never went live, so reconnect settings are irrelevant. If the box says "Could not access the specified channel or stream key", OBS reached a server that did not accept the stream. OBS's own text asks you to double-check the key and adds: "If it is correct, there may be a problem connecting to the server."[6] Our Twitch stream key FAQ covers finding and resetting it.
  3. OBS says it is still streaming, but Twitch shows you offline or viewers see a frozen picture. OBS only starts reconnecting after a network write actually fails,[7] so for now it does not know anything is wrong. Look at what Twitch received instead: Twitch Inspector charts the session from the ingest side, the view Twitch describes as how your bitrate looks "once they arrive at our ingest server".[2]

# What the OBS log line tells you

Every drop leaves the same shape in the log: a low-level socket error, then Disconnected from and the server address, then Reconnecting in N seconds.. with two full stops. The first two lines come from OBS's RTMP output, the last from its output core.[7][3] Here is a real sequence from the OBS forums thread quoted above, trimmed to the lines that matter.[13]

OBS log, OBS forums thread (trimmed)
17:15:17.659: RTMPSockBuf_Fill, remote host closed connection
17:15:17.660: Output 'adv_stream': Reconnecting in 3.04 seconds..
17:15:22.146: Output 'adv_stream': Reconnecting in 4.63 seconds..
17:15:27.913: Output 'adv_stream': Reconnecting in 7.04 seconds..
17:15:36.087: Output 'adv_stream': Reconnecting in 10.70 seconds..
17:15:46.793: [rtmp stream: 'adv_stream'] Interface: Intel(R) Ethernet Controller (3) I225-V (ethernet, 1000↓/1000↑ mbps)
17:15:48.055: [rtmp stream: 'adv_stream'] Connection to rtmp://ingest.global-contribute.live-video.net/app (52.223.192.188) successful
17:35:35.665: WriteN, RTMP send error 10060 (4097 bytes)
17:35:35.666: [rtmp stream: 'adv_stream'] Disconnected from rtmp://ingest.global-contribute.live-video.net/app
17:35:35.666: Output 'adv_stream': Number of dropped frames due to insufficient bandwidth/connection stalls: 750 (1.1%)
17:35:35.666: Output 'adv_stream': Reconnecting in 2.00 seconds..

Three parts of that excerpt are worth finding in your own log.

  • The number after "RTMP send error". On Windows it is a Winsock error code. 10060 is WSAETIMEDOUT, which Microsoft describes as a case where "the established connection failed because the connected host has failed to respond". 10054 is WSAECONNRESET: "An existing connection was forcibly closed by the remote host."[12] If a burst of errors appears in the same millisecond, the first code is the one that describes the failure.
  • The "Interface:" line. On Windows, OBS normally logs which network adapter the connection to Twitch actually used, whether it is "ethernet" or "802.11" (Wi-Fi), and the link speed. If that adapter has counted transmit or receive errors, OBS adds a warning that starts "Interface has non-zero error counters".[7] It is the fastest way to find out a stream went out over Wi-Fi when you believed the cable was in use.
  • The waits. 3.04, 4.63, 7.04, 10.70 seconds: each is about 1.52 times the one before. After the successful reconnect, the next drop starts again at 2.00 seconds. That is the rule in OBS's source, explained in section 4.[3]
OBS connection errors on Windows: what OBS says and where to look firstSources: OBS Studio 32.2.2 rtmp-stream.c and obs-outputs en-US.ini; Microsoft Learn, Windows Sockets Error Codes. All read 17 September 2026. The last column is our reading of those descriptions, not a vendor statement.
Code in the logWhat OBS tells youWhere to look first
10054 (connection reset)The connection was reset by the peer. This usually indicates internet connection problems between you and the streaming service.The route to the ingest server. Lower bitrate, then try a different Twitch server
10053 (connection aborted)The connection was aborted. This usually indicates internet connection problems between you and the streaming service.Your own machine. Microsoft says the software in your host computer aborted it: security software, VPN client, or a local time-out
10060 (timed out)The connection timed out. Make sure you've configured a valid streaming service and no firewall is blocking the connection.Mid-stream: an upload that stalled. At start: a firewall or a wrong server address
10013 (permission denied)The connection was blocked. Check your firewall / anti-virus settings to make sure OBS is allowed full internet access.Firewall or antivirus rules for OBS
11001 (host not found)Hostname not found. Make sure you entered a valid streaming server and your internet connection / DNS are working correctly.DNS, or a mistyped custom server address
10065 (no route to host)Error reaching host. Make sure that the interface you have bound can access the internet and that the streaming service supports the address family you selected (see Settings → Advanced).Bind to IP and IP Family under Settings, Advanced, Network

# Dropped frames are not what disconnects you

Most guides treat dropped frames and disconnects as one problem, and they often do share a cause: an upload that cannot keep up with the bitrate. In OBS's code they are two separate events with separate triggers, and knowing that changes how you read the stats window.

OBS drops frames when the backlog of video waiting to be sent grows past a threshold. For the first group of frames it is allowed to discard, the default is 700 milliseconds.[7] Dropping is how OBS tries to keep the connection: shed data and catch up. The stream is flagged as disconnected only when a write to the network socket fails.[7] That write can take a while to fail. OBS's bundled RTMP library sets a 15-second send timeout on the socket,[9] so on OBS's default network path a connection that stops moving completely can hang for up to that long before OBS gives up on it. That is our reading of the source, not something OBS documents. It fits the forum log: at the moment of disconnect, 750 dropped frames, or 1.1% of the output.[13]

# Twitch's 90 seconds against OBS's retry clock

90seconds
Your viewers will see this message for up to 90 seconds while you troubleshoot and reconnect. Also, the recorded VOD will be continuous to ensure the best viewing experience.
— Twitch Help, "Disconnect Protection", read 17 September 2026

Disconnect Protection is a Twitch setting, not an OBS one. Twitch's instruction is to "toggle on the Disconnect Protection preference" on the Stream Settings page and to make sure Temporary Backup Image is enabled.[1] OBS's built-in Twitch entry links to dashboard.twitch.tv/settings/stream when it asks for your stream key, which is the settings area to open.[14] Twitch lists OBS Studio, Streamlabs OBS, XSplit, Twitch Studio and the Twitch mobile app as supported, and still says "It’s best to run a quick test yourself". If you do not get back in time, "your stream will end as normal."[1]

Now the other clock. With Automatically Reconnect ticked under Settings → Advanced, OBS defaults to a Retry Delay of 2 seconds and Maximum Retries of 25.[4][5] The first wait is the Retry Delay. After every further failed attempt, OBS multiplies the wait by a factor between 1.5 and 1.55, picked at random when the stream output is created. Each wait is capped at 15 minutes, and a successful reconnect resets the sequence.[3] That is the 3.04, 4.63, 7.04, 10.70 run in the forum log.

Reconnect attempts that can start inside Twitch's 90-second windowCalculated from OBS Studio 32.2.2 libobs/obs-output.c (first wait = Retry Delay, then ×1.5 to ×1.55 per failed attempt) and the 1 to 30 second Retry Delay range in OBSBasicSettings.ui. Time spent on each attempt is not included, so real counts can only be lower.
Retry DelayAttempts starting within 90 sLast attempt starts after
1 s (minimum)8 to 959 to 75 s
2 s (default)764 to 75 s
3 s662 to 70 s
5 s566 to 72 s
10 s481 to 87 s
20 s250 to 51 s
30 s (maximum)275 to 77 s

Two practical points follow. First, keep Retry Delay low. If you raised it to 20 or 30 seconds to give the router more time, only two attempts start inside the window. Second, Maximum Retries has almost nothing to do with Disconnect Protection. At the default of 25, OBS keeps trying for roughly three hours of accumulated waiting,[3] long after Twitch has ended the stream. A reconnect that lands after the window has closed is going live again, not continuing the old broadcast.

# Fixes, in the order the log points to

  1. Turn on Disconnect Protection first, whatever the cause. It does not prevent drops. It turns a short one into a slate instead of an ended stream and a broken VOD.[1]
  2. Read the Interface line. If it says 802.11, the stream is on Wi-Fi, and Twitch's advice is to use a "wired (ethernet) connection over wireless whenever possible".[2] If it says ethernet but OBS warns about non-zero error counters,[7] test another cable, port or adapter driver before you call your ISP.
  3. Reset or timed out mid-stream: lower the bitrate, then change the server. Drop 200 to 500 kbps as Twitch suggests.[2] If resets continue well below your upload speed, change the ingest server. Twitch notes that when "a well-configured stream that used to work fine starts to show instability", switching servers changes the network path.[2] Our guide to choosing a Twitch ingest server covers how to pick one.
  4. Aborted or blocked: look at security software and VPNs. OBS's message for a blocked connection names firewall and antivirus directly,[8] and Twitch lists "anti-virus, proxies" among the software causes of an unstable stream.[2]
  5. Undo network experiments. Under Settings → Advanced → Network, Enable network optimizations and Enable TCP pacing are both off by default.[4] OBS's own tooltip for TCP pacing says it "may increase the risk of dropped frames on unstable connections".[6] If you turned either on while chasing this problem, turn it off and test one stream.
  6. Drops on Twitch, but not on YouTube from the same PC. That pattern has one specific setting worth ruling out, IP Family. Our Twitch Inspector guide walks through it with the thread where it was solved.
  7. Short congestion bursts: consider dynamic bitrate. OBS describes it as: "Instead of dropping frames to reduce congestion, dynamically changes bitrate on the fly." Its tooltip also warns: "When the bitrate drops, it can take up to a few minutes to restore."[6]

A stable stream keeps the viewers you already have. Finding new ones is the other half

Fixing disconnects stops a live channel from losing its audience mid-broadcast. Getting discovered in the first place is the problem Streamrise works on: Twitch viewers paced across a session rather than dropped in a spike, so a channel climbs a viewer-sorted directory instead of appearing from nowhere.

  • 2021 delivering Twitch viewers since
  • 60-day drop refund
  • No password required
See Twitch pricing →

# Changes that look related and are not

  • Raising Maximum Retries. The default of 25 already keeps OBS trying for hours past Twitch's 90-second hold.[4][3] More retries do not bring the stream back any sooner.
  • Turning off Automatically Reconnect. With it off, OBS passes a retry count of zero to the output,[11] and a zero count means a disconnect simply ends the stream.[3] You trade a recoverable drop for a guaranteed one.
  • Turning on network optimizations to fix a Twitch drop. It exists only on Windows, it is off by default, and OBS disables it by itself for RTMPS connections with the log line "Disabling network optimizations, not compatible with RTMPS".[7] It changes how OBS writes data to the socket. It cannot fix a bad route, a failing cable or a firewall rule.

# What a drop costs the channel

Twitch describes the feature by what it protects: "This feature helps you keep your stream online and viewers engaged during network disconnects."[1] A viewer who opens your channel during an unprotected drop finds it offline. With protection on, that viewer sees the slate, and the VOD stays in one piece. The streamer with nine VOD files for a one-hour broadcast was looking at the unprotected version.[13]

If you already have fragments, our guide to Twitch VODs covers highlights and how long past broadcasts are kept. For stream problems that are not disconnects, such as bitrate spikes, dips and an overloaded encoder, start with our broadcast health guide and OBS encoding overloaded with low CPU usage.

# The bottom line

When OBS keeps disconnecting from Twitch, do two things before you touch bitrate or buy a router. Turn on Disconnect Protection on Twitch, so that a short drop is a 90-second slate instead of an ended stream and a split VOD. And leave OBS's Retry Delay at 2 seconds or lower, so its growing waits actually land inside that window.

Then let the log choose the fix. The Interface line tells you whether you were on a cable at all. The code after "RTMP send error" separates a route problem from a local software problem from a stalled upload. A reconnect that fails with -3 every time is a stream key or server issue, not your Wi-Fi.

Every number in this guide can be checked without an account. The reconnect timing and error messages are in OBS's public source at the 32.2.2 tag, the 90 seconds are in Twitch Help, and the error codes are in Microsoft's reference. The attempt counts are our arithmetic on that source, and the callout under the table says what they leave out.

# Frequently asked questions

Why does OBS keep disconnecting from Twitch?

OBS marks a stream as disconnected when a write to the network socket fails, and it logs the socket error just before the "Disconnected from" line. The causes Twitch itself lists are an upload running at its limit, Wi-Fi, a bad network path to the ingest server, and software such as antivirus or proxies. The error code in your log narrows it down: a reset points at the route, an abort at software on your own PC, a timeout at a stalled upload. Turn on Twitch Disconnect Protection while you find the cause.

What is Twitch Disconnect Protection and how do I turn it on?

It is a Twitch setting that keeps a dropped stream online behind a slate for up to 90 seconds while your software reconnects, and keeps the VOD continuous. Twitch says to toggle on the Disconnect Protection preference on the Stream Settings page and make sure Temporary Backup Image is enabled. Twitch lists OBS Studio, Streamlabs OBS, XSplit, Twitch Studio and the Twitch mobile app as supported. If you do not reconnect within 90 seconds, the stream ends as normal.

What should the OBS Retry Delay be for Twitch?

Leave it at the default of 2 seconds, or lower it to 1. OBS waits the Retry Delay before the first attempt and multiplies the wait by 1.5 to 1.55 after each failure. At 2 seconds, up to seven attempts can start inside Twitch's 90-second Disconnect Protection window. At 1 second, eight or nine. At 20 or 30 seconds, only two. These counts ignore the time each attempt takes, so treat them as a maximum.

Do dropped frames cause OBS to disconnect?

Not directly. In OBS's code, frames are dropped when the unsent backlog passes a threshold, 700 ms by default for the first group of frames, and that is meant to keep the connection alive. A disconnect is flagged only when a socket write fails. Both usually come from the same upload problem, which is why they show up together, but a disconnect can also happen with very few dropped frames.

Why do I have several VODs from one stream?

Because the stream went offline and came back. Without Disconnect Protection, or when the reconnect takes longer than 90 seconds, Twitch ends the broadcast, and the reconnect starts a new one. Twitch says that with Disconnect Protection on, the recorded VOD is continuous. Turn it on, keep the OBS Retry Delay low, and fix the cause the log points to.

What does "Failed to connect to server" mean in OBS?

It means OBS never went live, so it is a different problem from a mid-stream disconnect. Check the log for the reason. A timed-out or blocked connection usually points to a firewall or antivirus rule. "Hostname not found" means DNS or a mistyped server address. "Could not access the specified channel or stream key" means a server answered but did not accept the stream, so check the stream key first.

Marcus Chen

Technical Editor, API & Integrations

Previously reseller-API developer for streaming-services tooling. Writes Streamrise /apidoc, reseller integration, and broadcast-software technical content.

More from Marcus →

Sources & further reading

  1. Twitch Help — "Disconnect Protection"
    Verbatim: "Your viewers will see this message for up to 90 seconds while you troubleshoot and reconnect. Also, the recorded VOD will be continuous to ensure the best viewing experience." Also: "Simply toggle on the Disconnect Protection preference, and make sure "Temporary Backup Image" is enabled." and "If you don’t reconnect in that time, your stream will end as normal." Read in a browser session on 17 September 2026 (page lang en-US, article heading present).
    https://help.twitch.tv/s/article/Disconnect-Protection?language=en_US
  2. Twitch Help — "Guide to Broadcast Health"
    Verbatim: "Lower the bitrate by 200 to 500 kbps; this should vastly improve the connection while having minimal effect on visual quality." and "Other common issues could be software, such as anti-virus, proxies, needing to update network cards, OS, GPU, or having too many programs open." Read in a browser session on 17 September 2026 (page lang en-US, article heading present).
    https://help.twitch.tv/s/article/guide-to-broadcast-health?language=en_US
  3. OBS Studio 32.2.2 source — libobs/obs-output.c
    Reconnect logic. RECONNECT_RETRY_MAX_MSEC is 15 * 60 * 1000 and RECONNECT_RETRY_BASE_EXP is 1.5f (lines 32-33); each output gets reconnect_retry_exp = 1.5 + rand_float(0) * 0.05 (line 244); output_reconnect() uses the Retry Delay for the first wait, multiplies by the exponent on each further attempt, caps at 15 minutes and resets after success (lines 2949-2997). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/libobs/obs-output.c
  4. OBS Studio 32.2.2 source — frontend/widgets/OBSBasic.cpp
    Default config, lines 822-829: "Reconnect" true, "RetryDelay" 2, "MaxRetries" 25, "NewSocketLoopEnable" false, "LowLatencyEnable" false (the TCP pacing toggle). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/frontend/widgets/OBSBasic.cpp
  5. OBS Studio 32.2.2 source — frontend/forms/OBSBasicSettings.ui
    The Automatically Reconnect group sits on the Advanced settings page; the Retry Delay spin box runs from 1 to 30 seconds and Maximum Retries from 1 to 10000 (lines 8440-8515). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/frontend/forms/OBSBasicSettings.ui
  6. OBS Studio 32.2.2 source — frontend/data/locale/en-US.ini
    Interface strings quoted in this guide, including "Disconnected, reconnecting in %2 second(s) (attempt %1)", "Reconnection successful", "Could not access the specified channel or stream key, please double-check your stream key. If it is correct, there may be a problem connecting to the server.", "Upload &Current Log File", "Preserve cutoff point (increase delay) when reconnecting", the TCP pacing tooltip and the dynamic bitrate tooltip. Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/frontend/data/locale/en-US.ini
  7. OBS Studio 32.2.2 source — plugins/obs-outputs/rtmp-stream.c
    Winsock error to message mapping in set_output_error() (lines 503-535); the Windows "Interface:" log line and the "Interface has non-zero error counters" warning (lines 1149-1156); the stream is flagged disconnected when send_packet() returns an error (lines 683-701); frames are dropped when the unsent backlog exceeds the drop threshold, default 700 ms (lines 1814-1816, 1905); "Disabling network optimizations, not compatible with RTMPS" (line 1487); "Stream delay and dynamic bitrate are incompatible." (line 1439). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/plugins/obs-outputs/rtmp-stream.c
  8. OBS Studio 32.2.2 source — plugins/obs-outputs/data/locale/en-US.ini
    The user-facing connection error messages quoted in the error table, for example ConnectionReset="The connection was reset by the peer. This usually indicates internet connection problems between you and the streaming service." Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/plugins/obs-outputs/data/locale/en-US.ini
  9. OBS Studio 32.2.2 source — plugins/obs-outputs/librtmp/rtmp.c
    RTMP_Init sets Link.receiveTimeout = 30 and Link.sendTimeout = 15 (lines 479-480); the send timeout is applied to the socket with SO_SNDTIMEO when the connection is set up (lines 915-921). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/plugins/obs-outputs/librtmp/rtmp.c
  10. OBS Studio 32.2.2 source — libobs/obs-defs.h
    Output result codes: OBS_OUTPUT_BAD_PATH -1, OBS_OUTPUT_CONNECT_FAILED -2, OBS_OUTPUT_INVALID_STREAM -3, OBS_OUTPUT_DISCONNECTED -5 (lines 37-46). Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/libobs/obs-defs.h
  11. OBS Studio 32.2.2 source — frontend/utility/AdvancedOutput.cpp
    When Automatically Reconnect is unchecked, the retry count passed to the output is set to zero: "if (!reconnect) { maxRetries = 0; }" (lines 759-761). SimpleOutput.cpp does the same for Simple output mode. Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/frontend/utility/AdvancedOutput.cpp
  12. Microsoft Learn — "Windows Sockets Error Codes"
    Verbatim: WSAECONNRESET 10054 "Connection reset by peer. An existing connection was forcibly closed by the remote host."; WSAETIMEDOUT 10060 "Connection timed out. A connection attempt failed because the connected party did not properly respond after a period of time, or the established connection failed because the connected host has failed to respond."; WSAECONNABORTED 10053 "An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error." Read 17 September 2026 (page lang en-us).
    https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
  13. OBS Forums — "OBS Twitch streaming randomly disconnects, but the internet is fine"
    Started 18 April 2025. The reporter streams over a wired fibre connection and writes: "OBS tries to reconnect, usually after 2 or 3 attempts, and all start working well again, but after 10-30 min, the same problem." and "Yesterday I was streaming for an 1 hour, after I finished, I have 9 VOD files? LOL". The log excerpt in this guide is copied from the post, trimmed. Thread marked with no confirmed resolution. Read 17 September 2026.
    https://obsproject.com/forum/threads/obs-twitch-streaming-randomly-disconnects-but-the-internet-is-fine.185456/
  14. OBS Studio 32.2.2 source — plugins/rtmp-services/data/services.json
    OBS's built-in Twitch service entry: "stream_key_link": "https://dashboard.twitch.tv/settings/stream". Read 17 September 2026.
    https://github.com/obsproject/obs-studio/blob/32.2.2/plugins/rtmp-services/data/services.json
  15. OBS Studio 32.2.2 release on GitHub
    The latest release when this guide was checked, published 14 August 2026 according to the GitHub releases API. All OBS source references above are pinned to this tag. Read 17 September 2026.
    https://github.com/obsproject/obs-studio/releases/tag/32.2.2
Streamrise · Real Twitch growth

A stable connection keeps your audience. Getting found builds it.

You can fix the cable, the server and the retry clock. None of that brings new people to the channel. Streamrise delivers Twitch viewers paced across a session rather than dropped in a spike, so a channel climbs a viewer-sorted directory instead of appearing from nowhere.