# The only question that matters first
Twitch keeps one piece of state about your channel that everything else hangs off: whether you are currently broadcasting. Call it the live flag. It is what the channel page renders from, what the category directory sorts on, what fires your follower notification, and what every third-party tool asks for when it decides whether to show a green dot next to your name.
You can see the flag's existence in two places in Twitch's own developer documentation. The EventSub reference lists a subscription type whose description is one sentence long: "The stream.online subscription type sends a notification when the specified broadcaster starts a stream."[1] The API reference documents a login-name filter on the streams endpoint that "Returns only the streams of those users that are broadcasting".[2] Neither is a diagnostic tool on purpose. Both are honest readouts of the same flag, and that makes them useful.
| Live flag is set | Live flag is not set | |
|---|---|---|
| What it means | Twitch accepted the stream and published you as broadcasting | Twitch is not treating your session as a broadcast |
| Did anyone get notified | Yes, the go-live notification fires on this flag | No notification, no Discord post, no push |
| Viewer count | Can be zero and still be correct | Stays at zero because there is nothing to count |
| Is a VOD being written | Yes, if VOD storage is on for the channel | Usually not, but check before you assume |
| Where the fix lives | Browser, app, cache, extension, or the surface you are looking at | Encoder settings, connection, ingest, or a platform limit |
| Should you touch OBS | No | Yes, after you have read the log |
# Three free ways to read the live flag
Run whichever one you can reach fastest. They all answer the same question, and one clean answer is enough.
- Your own go-live notification. If a Discord bot posts when you start, or your phone buzzes on your own follow, look at whether it fired this session. Those integrations are built on the EventSub type Twitch describes as sending a notification "when the specified broadcaster starts a stream".[1] A notification that fired is proof the flag was set, even if your channel page disagrees a minute later. This is the test nobody writes down, and it costs nothing because the tooling is already running.
- A device that shares nothing with yours. Phone on mobile data, logged out, private tab, your channel URL typed by hand. Different account, different network, different cache. If the player starts there, you are live and the offline screen you were looking at is local to you. If that device also says offline, the problem is upstream.
- The streams endpoint, if you already have a token. A request for your login name returns a
dataarray that is populated only when you are broadcasting — the parameter is documented as returning "only the streams of those users that are broadcasting".[2] An empty array is the flag being clear. This is the most precise of the three and the slowest to set up from cold; our guide to how the Twitch viewer count works walks through getting the client ID and token if you do not have them.
There is a fourth check people reach for that should be treated with more care than it usually gets: searching for your own name. Twitch search runs on its own index with its own refresh delay, so a stale offline badge there is expected rather than diagnostic. We pulled that apart separately in why a Twitch channel does not show up in search. Do not use search as your live-flag oracle.
# Flag set: you are live and something is lying to you
This is the happier half and the one that gets almost no coverage, because it has no dramatic fix. Twitch has you as broadcasting. Viewers who arrive now will see the stream. The thing in front of you is rendering an old answer.
The candidates are ordinary and worth running in this order, because each takes seconds and rules out the next: a tab that was open before you went live and never re-fetched the channel state; a service worker or app cache on mobile holding the previous session; a content blocker or script blocker that stops the player from initialising, which looks identical to an offline channel; and a browser profile signed into a second account that has you blocked or filtered. Reload the channel page in a fresh tab first — not the tab you already had open.
The case that fools the most people in this half is bandwidth test mode. Twitch accepts the bytes, the session lands in Inspector, and the channel still reads offline — a deliberate behaviour, not a bug, and one with a specific checkbox behind it. We cover it fully in the Twitch Inspector guide rather than repeating it here, because it belongs with the tool that produces it. If you ran a test before going live, check that box before you check anything else.
Flag set, page fine, and still nobody arrives
When the live flag is correct and the room is empty, the fault stopped being technical. A channel sitting at one or two concurrent viewers ranks below everything else in its category, which is the part that compounds. Streamrise delivers Twitch viewers paced across a session rather than dropped in a spike. No supplier can tell you how Twitch grades traffic, and Twitch's own Community Guidelines prohibit artificially inflating metrics — read them and decide for yourself.
- 60-day drop refund
- Cancel anytime
# Flag not set: where the feed is being lost
No notification, no viewers, nothing on the second device. Now the encoder is a legitimate suspect — but read the log before you change a setting, because the log usually names the failure and the settings screen never does.
Twitch's broadcasting guidelines describe the mechanism that sits under most of these cases, and it is worth quoting in full because the name it gives the condition is more precise than "my stream broke".
Broadcast starvation (instability) is when video data does not arrive in a timely fashion or is completely missing. This happens when there are network problems between you and Twitch, when you attempt to stream at a bitrate that is too high for your network/ISP, or have problems with your router causing frames to be dropped before entering the Twitch network.— Twitch Help Centre, Broadcasting Guidelines
Three of those four causes are outside your encoder and inside your connection, which is why turning knobs in OBS so often produces no change. The guidelines also note that "Reconnection behavior may depend on encoder used",[3] so two streamers with identical connections can see very different symptoms from the same underlying drop — one reconnects quietly, the other sits green and sends into nothing.
- If the encoder is still showing an active connection but nothing is arriving, the failure happened at the network write and your software has not noticed yet. That specific pattern, the log line that reveals it and the reconnect clock behind it are in why OBS keeps disconnecting from Twitch.
- If you want to see what Twitch actually received rather than what your encoder believes it sent, that is what Inspector is for — the Inspector guide covers reading the session from the ingest side.
- If the numbers themselves are the question, Twitch's published specs for the standard path are 1920x1080 at 60 fps, 6000 kbps, CBR, two-second keyframe interval, AAC-LC audio at 96 kbps recommended and 160 kbps maximum.[3] Our broadcasting guidelines reference keeps the full tables.
- If dropped frames are climbing while this happens, read them in Stream Manager rather than guessing — the broadcast health guide explains which counter means which fault.
# The 48-hour ceiling nobody mentions
There is one cause of this symptom that no amount of encoder tuning will ever touch, and it is stated in a single line at the bottom of Twitch's broadcasting guidelines: "The maximum broadcast length is 48 hours. This cannot be changed."[3]
That matters for exactly one population and matters enormously to them: subathons, charity marathons, 24/7 channels and anyone who habitually leaves the encoder running between sessions. The limit is documented; what Twitch does not document on that page is what the encoder is told when the ceiling is reached. So treat the consequence as an inference rather than a published fact — if you have been streaming continuously for around two days and the channel reads offline while your software looks fine, the length limit is the first thing to rule out, not the last.
The related habit worth breaking is leaving the encoder connected during breaks to "hold the slot". There is no slot to hold, the clock keeps running, and a session that started on Friday afternoon is in ceiling territory by Sunday afternoon whether or not anyone was watching in between.
# Audio arrives, video does not
One variant of this problem is specific enough to be worth naming, because it looks like a platform outage and is actually a settings mismatch. The channel reads offline. Sound is reaching Twitch. Video is not. And the VOD, oddly, turns out fine.
A May 2025 thread on the OBS forums titled "Offline on twitch while streaming" describes exactly that shape. The streamer wrote: "it shows me as offline, while I am streaming, funny enough, the vod on twitch is fine from the 'offline' stream", and after two hours of re-linking the Twitch account, removing scenes, restarting the PC and the router, added: "I just tested, sound is going through to twitch, the screen does not."[4]
A forum moderator's reply was two clauses long: "Keep your bitrate at 6000 and lower your output resolution in settings>video to 1920x1080." The streamer's next post: "The output resolution was the trick".[4] The output had been above 1080p — and 1920x1080 is where Twitch's own published specs for the standard path stop.[3]
The reason the VOD looked fine is the part that makes the whole thing confusing, and it is also the reason this is worth checking early: a recording that plays back correctly feels like proof the stream was working, when the recording and the live rendition are produced by different steps. If your VOD is clean and your channel was offline, that combination narrows the fault rather than clearing it. If quality options are the thing going missing instead, why Twitch quality options disappear covers that case.
# The top result's fix was retracted by its own maintainer
Search this problem and the highest-ranking answer is an OBS forum thread from 2020 titled "OBS says I'm still streaming, but Twitch stream goes offline & I don't know until viewers tell me." It runs for pages, and the fix it converges on is turning off Dynamic Bitrate.
That advice came from the OBS log analyzer, which warned: "Dynamic Bitrate is enabled and a hardware encoder is potentially in use. This can cause issues with hardware encoders if bitrate changes happen too frequently, or drops too low. Should you experience bitrate dropping to zero, or no output even if OBS says its streaming, either change your Encoder to x264 or turn off Dynamic Bitrate in Settings -> Advanced -> Network."[5] It is a perfect description of the symptom, which is why it spread.
OP's problem was caused by a dynamic bitrate bug which is since fixed, this thread is very old so it's unlikely you're having the same problem.— R1CH, OBS Forum Admin and Developer, in that same thread, 27 November 2021
That retraction is buried twelve posts down in a thread whose first page is what search engines show you. The practical consequence: disabling Dynamic Bitrate is not a wrong thing to try, but it is a five-year-old fix for a bug its own maintainer says was repaired, and it should not be your first move in 2026.
The broader lesson applies to every forum answer you will find for this symptom: these threads are long-lived, the dates are easy to miss, and the person who knows the fix is obsolete usually arrives late. Check the date on the post you are about to act on, and check whether anyone replied after it.
# What each surface is actually reading
"Twitch says offline" gets reported from at least six places, and they are not all reading the same thing at the same speed. Knowing which one you are looking at changes what the word means.
| Surface | What it reads | How much it proves |
|---|---|---|
| Your go-live notification or Discord bot | The stream.online event, documented as firing when a broadcaster starts a stream | Strong. If it fired, the flag was set |
| Streams endpoint with your login name | Only users that are broadcasting, per the documented filter | Strong. Empty result means the flag is clear |
| Your channel page in a fresh logged-out tab | The live state at the moment the tab loaded | Good, provided the tab is new and the session is not yours |
| A tab you had open before going live | Whatever it fetched when it loaded | None. Reload before you read it |
| Twitch search results | A separate index with its own refresh delay | Weak. A stale badge here is expected |
| The category directory | A viewer-sorted list, documented as able to show duplicate or missing entries while paging | None for a small channel. Not a live-state test |
The two rows worth internalising are the last two, because they generate the most false alarms. Twitch documents the directory list as ordered by viewer count with duplicates and gaps possible as you page through it,[2] which means a channel with two viewers is effectively unfindable by scrolling regardless of whether it is live. And search has its own delay, covered in the search article. Neither is a fault, and neither is a measurement.
# The bottom line
The fastest path through this problem is also the least intuitive one: do not open the encoder. Find out whether Twitch set your live flag, using the notification you already have, a device that shares no cache with yours, or the streams endpoint if a token is already sitting in a drawer. The flag is what your channel page, your notifications and every bot are all reading,[1][2] and it splits the problem cleanly in two.
Flag set means you are live and something local is stale, and the correct response is a reload rather than a settings change. Flag not set puts you on the ingest side, where the documented causes are network problems between you and Twitch, a bitrate too high for your connection, a router dropping frames before they reach the network,[3] an output resolution above the 1920x1080 the specs stop at,[3] and the 48-hour ceiling that cannot be changed.[3] What is not on that list in 2026 is the Dynamic Bitrate toggle the top forum threads still point you at, because the bug behind that advice was reported fixed by an OBS maintainer five years ago.[5] Check the date on any answer before you act on it, including this one.
# FAQ
Why does Twitch say I'm offline when I'm streaming?
Because one of two different things is true, and they need different fixes. Either Twitch set your live flag and the page, app or tab in front of you is showing a stale copy of your state, or Twitch never set the flag because the feed is not being accepted as a broadcast. Check whether your go-live notification fired: Twitch documents an EventSub type that sends a notification when a broadcaster starts a stream, and every Discord go-live bot is built on it. A notification that fired means the flag was set and your encoder is not the problem.
OBS says it is streaming with no dropped frames. How can Twitch say offline?
Encoder software reports on the connection it opened, not on what the platform did with the data. A write can succeed into a connection that is no longer producing a broadcast, so a green status bar is a statement about the socket rather than about your channel. Read the encoder log rather than the status bar, and check what Twitch received through Inspector rather than what your software believes it sent.
Twitch says live but there is no video. Is that the same problem?
It is the neighbouring one, and it usually means the live flag is set while the video rendition is not arriving. One documented community case had audio reaching Twitch while video did not, with the channel reading offline and the VOD recording correctly; lowering the output resolution to 1920x1080 resolved it. Check your encoder's output resolution against Twitch's published specs before you change anything else.
I stream 24/7 and my channel keeps going offline on its own. Why?
Twitch's broadcasting guidelines state that the maximum broadcast length is 48 hours and that this cannot be changed. A continuous session hits that ceiling roughly every two days. Twitch does not publish what your encoder is told when it happens, so the safe reading is that a long-running session ending near the two-day mark is the length limit until you have ruled it out. Check the session timer in your encoder before you check anything else.
Should I turn off Dynamic Bitrate?
Not as your first move. That fix comes from OBS forum threads written in 2020 and 2021, and an OBS forum administrator replied in the most-linked of those threads that the dynamic bitrate bug behind it has since been fixed and that a newer reader is unlikely to have the same problem. The checkbox still exists and still carries a beta label, and the OBS tooltip notes the feature is currently only supported for RTMP. Try it if the ingest-side checks come back clean, not before them.
My phone says I'm offline but my desktop says I'm live. Which is right?
Whichever one you loaded most recently from scratch. Mobile apps cache channel state aggressively, so an app that was open before you went live can hold the previous answer. Force-close the app or open the channel in a logged-out mobile browser tab. If the fresh load also says offline while the desktop says live, trust the fresh load and treat the desktop as the stale one.
Will restarting the stream fix it?
Sometimes, and that is exactly why it is a poor diagnostic. A restart resolves a cleared live flag, a stale session and a length-limit cutoff identically, so you learn nothing and you split your VOD. Run the live-flag check first, which takes less time than a restart and tells you which half of the problem you have.
Search shows me as offline. Does that mean the stream is broken?
No. Twitch search is a separate index with its own refresh delay, so a stale live or offline badge there is expected behaviour rather than a fault, and it is a poor test of whether you are actually broadcasting. Use a fresh logged-out load of your channel page or your go-live notification instead.