The Twitch 48-Hour Limit
Your stream was running. Now it is not. Nothing in your dashboard says why.
There are two reasons a 24/7 Twitch channel dies, and almost everything written about this covers only the first one.
Reason one: Twitch ends every broadcast at 48 hours
From Twitch's own Broadcasting Guidelines:
"The maximum broadcast length is 48 hours. This cannot be changed."
Twitch's own advice is to end the stream yourself before the mark and start a new one immediately. That is the whole fix — but it has to happen at 3am on a Tuesday, every two days, forever.
There is no warning. Nothing appears in your dashboard. The ingest simply stops accepting your data.
If you are sending the same file to more than one platform, Twitch has three further conditions — and two of the three are usually reported wrongly.
This limit is specific to Twitch. YouTube has no maximum broadcast length at all — which does not make a 24/7 YouTube channel easy, only differently hard: what actually kills those.
Why you probably will not notice
Your encoder usually does not tell you. From the OBS forums, 5 March 2025:
"On the OBS side, it appears as if I'm still streaming, but when viewing the channel on Twitch, it's clearly down. I have to then manually intervene — if I notice it didn't reconnect, which may take awhile."
That thread has zero replies.
So does this one, from 22 February 2026:
"It has happened several times recently that our YouTube livestream suddenly stops. The problem however is that OBS thinks that the livestream is still going on. Should OBS not give a message when the stream is stopped?"
And this one, June 2024:
"What I don't have a solution for is detecting whether the stream has crashed."
Three people, three years apart, same problem, no answers. This is the actual state of the art.
And a Twitch channel can die a second way that has nothing to do with encoders: three copyright strikes and the account is gone. What that means for a loop.
Reason two: your keyframe interval
This is the one nobody writes about, and it is why a lot of 24/7 channels look like they are working when they are not.
Twitch requires a keyframe every 2 seconds. Their transcoder slices video into HLS segments, and every segment has to begin on a keyframe. From Twitch's Broadcasting Guidelines:
"If keyframe intervals (GOP size) is set higher than 10 seconds, source will be disabled to guarantee playback compatibility across devices."
What this looks like when it goes wrong
Here is the failure that costs people weeks, because it does not look like a failure:
Your channel shows LIVE. Your dashboard shows data arriving. And the player never starts for anyone.
If your source file has keyframes every 10 seconds — which is completely normal for a file exported from most video editors — and you push it to Twitch without re-encoding, Twitch accepts the connection, reports you as live, and produces a stream almost nobody can actually watch.
You will refresh your own channel, see LIVE, and assume it works.
Why looping files are especially exposed
Most 24/7 tools stream your file with -c copy — no re-encoding. It is the right default: it costs almost no CPU and it preserves your quality exactly.
But -c copy also copies your file's keyframe structure verbatim. Whatever your editor exported, Twitch receives. If your editor used a 10-second GOP, you now have a 10-second GOP on Twitch, and there is nothing in any dashboard that will tell you.
We found this in our own product. Four of our own master files were out of spec, and we only caught it because we went looking. Our watermark was accidentally masking the problem — it forced a re-encode, which rebuilt the keyframes correctly. Which meant the failure could only appear for a customer who had removed the watermark.
We tell you this because it is the kind of thing a vendor normally does not publish, and because it is probably happening to someone reading this.
One thing to settle before any of this matters: Twitch does permit pre-recorded content, at a price you may not expect. What each platform actually allows.
How to fix both yourself, for free
You do not need us for this. Here is what actually works.
Check your file first
ffprobe -v error -select_streams v:0 -show_entries frame=key_frame,pts_time \
-of csv=p=0 -read_intervals "%+#200" yourfile.mp4Look at the time gaps between lines where the first value is 1. Those are your keyframes. If the gap is more than 2 seconds, Twitch will not serve your stream properly.
Re-encode with a correct keyframe interval
At 30fps, a keyframe every 2 seconds means every 60 frames:
ffmpeg -i yourfile.mp4 \
-c:v libx264 -preset veryfast -crf 20 -profile:v high -level 4.0 \
-pix_fmt yuv420p -r 30 -g 60 -keyint_min 60 -sc_threshold 0 \
-c:a aac -b:a 160k -ar 48000 -ac 2 \
-movflags +faststart output.mp4At 60fps, use -g 120 -keyint_min 120. The rule is: frame rate × 2.
-sc_threshold 0 matters. Without it, ffmpeg inserts extra keyframes at scene changes, and your interval stops being consistent — which is what Twitch's transcoder needs it to be.
Loop it to Twitch
ffmpeg -nostdin -stream_loop -1 -re -i output.mp4 \
-c copy -f flv rtmp://live.twitch.tv/app/YOUR_STREAM_KEY-re reads the file at real-time speed. Without it, ffmpeg sends as fast as it can and Twitch drops you. -stream_loop -1 loops forever. -c copy is now safe, because you fixed the keyframes in the previous step.
Handle the 48-hour cut
Wrap it so it restarts. A minimal version:
while true; do
ffmpeg -nostdin -stream_loop -1 -re -i output.mp4 \
-c copy -f flv rtmp://live.twitch.tv/app/YOUR_STREAM_KEY
sleep 5
doneWhen Twitch ends the session at 48 hours, ffmpeg exits and the loop starts it again five seconds later.
This works. It is also why you still need a machine that never sleeps, never updates, and never loses its internet connection — and why nothing here tells you when it stops.
What we measured
From 22 August to 17 September 2026 we ran three channels this way — YouTube, Twitch and Kick — and we publish the numbers because nobody else does.
| Continuous operation | 26 days, 22 Aug – 17 Sep 2026 |
| Reconnect time after a platform drop | 5.7 seconds |
| Loop crossings with zero session break | 16 consecutive, over 7,742 seconds |
| Twitch 48-hour cuts | handled automatically, unattended |
The loop-crossing figure matters more than it sounds. A looping file returns to frame one every few minutes. If the encoder restarts at that moment, the platform sees a new broadcast and your viewer count resets. Sixteen crossings with no session break means the loop point is invisible to Twitch.
A free tool worth knowing about
Stream Control Center is open source and does playlists, scheduling, 48-hour auto-restart, Twitch/Kick/YouTube with OAuth, and a chat bot. Download it, run setup.bat, open localhost:5000.
The honest caveats: it is alpha, the author explicitly says not to test it with your main Twitch account, the interface is German-only, and it still runs on your machine.
If you have a spare machine and some patience, it costs nothing and it works.
Where we come in
We built PulseCast because we wanted this to run without a machine of our own. It loops your file 24/7 from the cloud, reconnects on its own in about 6 seconds, and since September 2026 it checks your file's keyframe interval at upload and re-encodes it if it is out of spec — because we learned the hard way that -c copy will happily ship a broken stream.
From $19/month. The free plan is 48 hours of streaming at 720p with a watermark — enough to test it, not a permanent free tier. We also wrote an honest comparison of 12 services including ours, which says plainly where we are more expensive than the competition.
The three channels behind the numbers above were our own marketing loops, and we switched them off on 17 September 2026 — they played to almost nobody, and we would rather put the bandwidth behind a customer's channel than our own advertisement. We are telling you this instead of leaving you to click dead links.
Send us a file and we will put your own material on a live channel so you can judge it properly.
Sources
Twitch's 48-hour limit and keyframe requirements: Twitch Broadcasting Guidelines, help.twitch.tv. Encoder behaviour quotes: obsproject.com/forum, March 2025, June 2024 and February 2026. Our own figures were measured on our production channels and are reproducible with the commands above.
Something wrong or out of date? Tell us: pulsecast.tv@icloud.com
PulseCast does both of these for you, from the cloud. See what it costs