Skip to main content
Upstream
Upstream
  • Product
  • Features
  • Platforms
  • Resources
  • Pricing
Login Sign up for free
Guides

HLS vs RTMP: which one does your live stream need?

Written by Mario Jankovic November 5, 2026 · 8 min read
  1. What RTMP does
  2. What HLS does
  3. HLS vs RTMP side by side
  4. Why HLS runs 10 to 30 seconds behind live
  5. YouTube - RTMPS or YouTube - HLS in OBS
  6. Which one to use for each job
  7. Can OBS output HLS?
  8. Is RTMP obsolete?
  9. RTMP in, HLS out, with Upstream
  10. HLS vs RTMP: FAQ
    1. Is HLS better than RTMP?
    2. Can a browser play an RTMP stream?
    3. Why is my YouTube stream 30 seconds behind?
    4. Should I use RTMP or RTMPS?
    5. Does HLS work on iPhone and Android?
  11. Sources

RTMP and HLS do different jobs, so most live streams use both. RTMP carries your stream from the encoder to the platform. HLS carries it from the platform to the people watching. You set up RTMP (or its encrypted version, RTMPS) in OBS, and YouTube, Twitch and the rest turn your stream into HLS for browsers, phones and TV apps.

The one place you choose between them yourself is YouTube, which takes both. That’s the YouTube - RTMPS or YouTube - HLS choice in OBS, and the short answer is RTMPS. The rest of this guide explains why, and why HLS keeps viewers 10 to 30 seconds behind you.

Diagram: an encoder sends RTMP to the platform, and the platform sends HLS to viewers through a CDN
The first mile and the last mile. The encoder pushes one RTMP stream in, and each viewer pulls HLS out.

What RTMP does

RTMP, the Real-Time Messaging Protocol, keeps one connection open between your encoder and the platform and pushes audio and video through it as you stream. Macromedia built it for Flash, and Adobe published the spec in 2012. The default port, 1935, is still registered to “Macromedia Flash Communications Server” in the official port registry.

RTMPS is the same protocol inside an encrypted connection, usually on port 443. Facebook made it mandatory in 2019 and stopped taking plain RTMP that November. YouTube recommends it too.

RTMP used to deliver video to viewers as well, through the Flash plugin. Adobe ended Flash Player on December 31, 2020, and Chrome removed it the next month, so no browser can play an rtmp:// address today. RTMP lived on as the way encoders send video in. In 2023 it got its first big update in over a decade. Enhanced RTMP adds HEVC, AV1 and HDR.

SLSlavik LozbenChairman of Veovera, one of RTMP’s original creatorsVeovera“It’s astonishing to witness RTMP retaining its relevance twenty-one years after its original introduction in Flash Video.”July 31, 2023Read the announcement ↗
Slavik Lozben, July 31, 2023.

What HLS does

HLS, HTTP Live Streaming, cuts a stream into short video files called segments and lists them in a playlist, a small text file ending in .m3u8. A player downloads the playlist and fetches the segments in order. Then it downloads the playlist again to find new ones. Apple introduced it for the iPhone in 2009, and the IETF published it as RFC 8216 in 2017.

Everything is an ordinary web file, so HLS works with any web server and any CDN, and it scales to large audiences. A main playlist can also list several versions of the stream at different qualities. The player picks one and switches when the connection gets better or worse.

Two real HLS playlists from a live demo: a main playlist listing a 720p and an audio-only version, and a media playlist listing 1.92 second segments
A real live stream’s playlists, captured from Unified Streaming’s public demo. The main playlist lists the versions, and each media playlist lists its segments.

Safari plays HLS on its own. Chrome, Edge and Firefox usually play it through a small script such as hls.js, which feeds the segments to the browser’s video element. Recent Chrome versions have started to play HLS natively too.

HLS vs RTMP side by side

Most of the differences come from the job each one does.

RTMPHLS
Its jobSends your stream from the encoder to a platformDelivers the stream from the platform to viewers
How it movesOne open TCP connection, port 1935, or 443 for RTMPSNormal web requests for a playlist and short files
Plays in a browserNo, not since Flash ended in 2020Yes: natively in Safari, through a script elsewhere
Quality versionsOne stream at the bitrate you setSeveral, and the player switches with the connection
Delay to viewersA few seconds into the platformOften 10 to 30 seconds, under 5 in low-latency modes
Where you set itA server URL and stream key in your encoderUsually nowhere: the platform makes it

Why HLS runs 10 to 30 seconds behind live

An HLS player can’t start on a segment that isn’t finished, and it keeps a few finished segments in reserve so a slow network doesn’t freeze the picture. RFC 8216 tells players not to start less than three target durations from the end of the playlist. So the delay is about three segments, plus the time to encode, package and deliver them.

Apple’s authoring spec recommends 6 second segments with a keyframe every 2 seconds. Three of those is about 18 seconds before anything else is added. Shorter segments cut the delay, and they also leave the player less slack.

Six HLS segments in a row with the player on segment 3 and two buffered, plus a table: 6 second segments give about 18 seconds of delay, 4 seconds about 12, 2 seconds about 6
The player stays a few segments behind the live edge. Segment length sets most of the delay.

Roger Pantos co-wrote the HLS spec at Apple. He described the delay like this when he introduced Low-Latency HLS:

RPRoger PantosApple, co-author of the HLS specWWDC19“When you’re watching sports, for instance, the manifestation of that cost is often that you hear about the goal through your apartment wall before you see it on your Apple TV.”Introducing Low-Latency HLS, June 2019Watch the session ↗
Roger Pantos, Introducing Low-Latency HLS, June 2019.

Low-Latency HLS splits each segment into parts as short as 200 milliseconds. The player can ask for the next part before it exists. Apple’s target is under two seconds. YouTube and Twitch have their own low-latency modes. On YouTube it’s a setting on each broadcast: Normal, Low (under 10 seconds for most viewers) or Ultra-low (under 5). Neither low setting supports 4K.

Bar chart of delay to viewers: WebRTC under 0.3 seconds, Low-Latency HLS under 2, YouTube Ultra-low and Amazon IVS under 5, YouTube Low under 10, standard HLS about 25 to 30 seconds
How far behind live each setup runs, in each platform’s or vendor’s own words.

So if your YouTube stream is 30 seconds behind, OBS usually isn’t the cause. Check the latency setting on the YouTube broadcast first. Ultra-low gets you closest, at the cost of more buffering for viewers on slow connections.

YouTube - RTMPS or YouTube - HLS in OBS

Pick YouTube - RTMPS. YouTube recommends it, it works with every latency setting, and with a current OBS it carries H.264, HEVC and AV1.

OBS service settings for YouTube - RTMPS, with an rtmps address and H.264, HEVC and AV1, next to YouTube - HLS, with an https upload address and H.264 and HEVC
The two YouTube services in OBS, with the values from OBS’s own service list.

YouTube - HLS uploads short segments over HTTPS instead. YouTube describes it as better for 4K because of HEVC and HDR, and its HLS guide recommends segments of one to four seconds. It turns off Ultra-low latency and doesn’t take AV1.

HLS ingest used to be the only way to send HDR to YouTube from OBS. That changed with Enhanced RTMP: OBS 29.1 added HEVC and AV1 over RTMP in 2023, and OBS 30.1 added HDR in 2024. YouTube’s own pages haven’t all caught up. Its ingestion comparison table still lists only H.264 for RTMPS, while its encoder settings page lists HEVC and AV1. Use HLS ingest only if your encoder can’t send HEVC over RTMPS.

Which one to use for each job

JobUseWhy
OBS to YouTubeRTMPSYouTube recommends it and it supports every latency setting
OBS to TwitchRTMPTwitch’s ingest servers take RTMP
OBS to FacebookRTMPSFacebook has required it since 2019
HDR from an older encoder to YouTubeHLS ingestIf the encoder can’t send HEVC over RTMPS
A live stream on your own websiteHLS and a playerIt’s the format browsers and phones play
Guests and two-way callsWebRTCUnder a second of delay, needed for conversation
Feeds over a bad network to a broadcasterSRTBuilt to recover from packet loss

Can OBS output HLS?

Yes, in two ways, and neither one serves viewers. OBS can record to HLS files (in Advanced output mode, with Custom Output and the hls container), and it can push HLS to YouTube’s ingest. OBS took the HLS recording option out of Simple mode in version 28 because it “was a common cause of user confusion”.

To play a stream on your own site you need a server that makes the HLS, a CDN to deliver it and a player on the page. Our guide to embedding a live stream on your website compares the options, from a YouTube embed to running it yourself.

Is RTMP obsolete?

Not for sending video in. YouTube, Twitch, Facebook and Kick all publish RTMP or RTMPS ingest addresses, and Enhanced RTMP keeps adding to it. Twitch’s 2K streams, open to all Partners and Affiliates since June 2026, use HEVC through its Enhanced Broadcasting.

Timeline from 2002 to 2026: RTMP with Flash, Apple’s HLS, the RTMP spec, RFC 8216, Facebook requiring RTMPS, the end of Flash, Enhanced RTMP and Twitch 2K over HEVC
Twenty-four years of RTMP and HLS. RTMP lost its viewers when Flash ended and kept its job as the way video gets in.

Professional broadcasters use it less. Bitmovin’s 2026 survey asked 486 video professionals what they use. For feeds into their systems, SRT led at 29%, ahead of HLS at 25% and RTMP at 19%. For delivery to viewers, HLS led at 78%. Those are broadcast and OTT teams, not creators. For a stream from OBS to the big platforms, RTMP and RTMPS are still what the platforms ask for.

RTMP in, HLS out, with Upstream

Upstream does both halves for you. Send OBS or any encoder to its RTMP server, or go live from Live Studio or scheduled video. Upstream sends the stream to up to 10 of 30+ platforms at once, each in the format that platform takes. That’s RTMP to YouTube and Twitch, RTMPS to Facebook and Kick, and SRT where you need it. Start free with 24 streaming hours a month, no credit card needed.

Your own website gets the same stream as HLS. The Upstream website player plays it through a CDN, with one embed code that stays the same between streams. It’s turning on for accounts in stages, so ask our team if you don’t see it yet.

Diagram: your stream from OBS over RTMP, Live Studio or a scheduled video goes into Upstream, which sends RTMP to up to 10 platforms and HLS through a CDN to the website player on your site
One stream into Upstream, out to your platforms and your own site.

HLS vs RTMP: FAQ

Is HLS better than RTMP?

Neither is better, because they do different jobs. RTMP sends your stream from the encoder to the platform, and HLS delivers it to viewers. Use RTMP or RTMPS in your encoder and let the platform make the HLS.

Can a browser play an RTMP stream?

No. Browsers played RTMP only through Flash, which ended in 2020. To show a stream on a web page, deliver it as HLS (or another web format) and use a video player.

Why is my YouTube stream 30 seconds behind?

YouTube delivers to viewers over HLS, and Normal latency keeps a large buffer. Switch the broadcast to Low or Ultra-low latency in YouTube Studio to get under 10 or 5 seconds for most viewers.

Should I use RTMP or RTMPS?

Use RTMPS when the platform offers it. It’s the same protocol over an encrypted connection, so your stream key isn’t sent in the clear. Facebook only accepts RTMPS, and YouTube recommends it.

Does HLS work on iPhone and Android?

Yes. iPhones and iPads play HLS natively in every browser. Android browsers play it too, natively or through a player script such as hls.js.

Sources

  • Standards: RFC 8216, HTTP Live Streaming (section 6.3.3), Apple’s HLS authoring specification, Low-Latency HLS and the IANA port registry
  • RTMP: Adobe’s RTMP specification (December 2012), Enhanced RTMP, Adobe’s Flash Player end of life and the Chromium Flash roadmap
  • YouTube: encoder settings, ingestion protocol comparison, HLS ingestion and latency options
  • Platforms: Twitch broadcasting docs, Twitch 2K streaming, Facebook Live Video API changelog, Amazon IVS and Mux on live latency
  • OBS: the built-in service list and release notes for 28.0 and 29.1
  • Survey: Bitmovin Video Developer Report 2026/2027
  • Playlists: Unified Streaming’s public live demo, captured November 4, 2026
Published November 5, 2026
Mario Jankovic

About the author

Mario Jankovic

Product and Engineering

Mario Jankovic co-founded Upstream and runs product and engineering. He writes about running live streams from the cloud: 24/7 channels, multistreaming and Live Studio, and what we learn building them.

Keep exploring

Further reading

Browse all articles
How to Set Up a Free RTMP Server: Hosted or Self-Hosted
Oct 9, 2026 Blog

How to Set Up a Free RTMP Server: Hosted or Self-Hosted

Read article
YouTube Video Server: How RTMP Streaming Works & Why Cloud Solutions Beat OBS
Dec 29, 2025 Blog

YouTube Video Server: How RTMP Streaming Works & Why Cloud Solutions Beat OBS

Read article
rtmp://a.rtmp.youtube.com/live2: YouTube Setup & Fixes
Dec 23, 2025 Blog

rtmp://a.rtmp.youtube.com/live2: YouTube Setup & Fixes

Read article

Start streaming today

Go live to every platform, run a 24/7 channel, and produce live shows in your browser, with no software or server setup.

No credit card 24 hours/month free Full functionality
Start Streaming Free
24/7 Live Streaming Run cloud channels that stay live around the clock. Live Studio Invite guests, share screens, and add branded overlays in the browser. Multistreaming Send one live feed to YouTube, Twitch, Kick, and RTMP endpoints. Pre-recorded Live Streaming Upload pre-recorded videos & Go Live without the stress of live production. Free plan 24 hours a month with no watermark. Multi-channel streaming Separate live channels from one account. Enterprise Setups for teams, labels and agencies. About Upstream Who we are and how Upstream works.
Scheduling Streams that start and end on their own. Multichat Every platform's chat in one feed. Overlays Layers and widgets in Stream Designer. Stings, jingles and ads Inserts that play between your videos. Playback controls Skip or play any file while you stay live. Audio and video playlists Loop music and visuals separately. Media library & storage Organize files and cloud uploads. Website player Embed your live stream on your site. Team access Invite your team, each with their own role. RTMP server Stream in from OBS or any encoder. Backup streams A standby feed if your main one drops. Live Streaming API Run streams, media and queues from code. MCP Server Manage streams from your AI assistant. All features Everything Upstream does, on one page.
YouTube live streaming Twitch live streaming Kick live streaming Facebook live streaming Instagram live streaming TikTok TikTok live streaming Rumble live streaming Mixcloud live streaming 30+ more Plus any custom RTMP or SRT destination.
Platform limits Bitrate and duration caps for each platform. Integrations Setup guides for OBS, vMix, cameras and more. VTuber Streaming Go live with your avatar on every platform.
Blog Guides, platform rules and news for anyone who goes live. Guides Setup guides for 24/7 streams, multistreaming and RTMP. Release Notes The new features in each Upstream update, in one place. Free Tools Video, audio, thumbnail and AI tools, plus camera and mic checks. Helpdesk Step by step setup help and troubleshooting for Upstream. Service status Current service health, uptime history and incident updates. Live Streaming FAQ Short answers to what people ask before they go live. Compare Upstream Upstream side by side with Restream, StreamYard and others. Latest post YouTube Dual Stream: What the Vertical Copy Does and How to Turn It Off
Always-on 24/7 Live Streaming Run cloud channels that stay live around the clock.
Explore
Real-time live Live Studio Invite guests, share screens, and add branded overlays in the browser.
Explore
One stream, 30+ platforms Multistreaming Send one live feed to YouTube, Twitch, Kick, and RTMP endpoints.
Explore
Schedule & Automate Pre-recorded Live Streaming Upload pre-recorded videos & Go Live without the stress of live production.
Explore
Free plan 24 hours a month with no watermark.
Multi-channel streaming Separate live channels from one account.
Enterprise Setups for teams, labels and agencies.
About Upstream Who we are and how Upstream works.
Scheduling Streams that start and end on their own. Multichat Every platform's chat in one feed. Overlays Layers and widgets in Stream Designer. Stings, jingles and ads Inserts that play between your videos. Playback controls Skip or play any file while you stay live. Audio and video playlists Loop music and visuals separately. Media library & storage Organize files and cloud uploads. Team access Invite your team, each with their own role. RTMP server Stream in from OBS or any encoder. Backup streams A standby feed if your main one drops.
Live Streaming API Run streams, media and queues from code.
MCP Server Manage streams from your AI assistant.
All features Everything Upstream does, on one page.
YouTube live streaming. 24/7 channels with midroll ads. Twitch live streaming. Streams restart on their own at 48 hours. Kick live streaming. Stay live with your computer off. Facebook live streaming. Schedule lives that start on their own. Instagram live streaming. Go live from your browser or the cloud. TikTok TikTok live streaming. Go live on TikTok and Instagram at once. Rumble live streaming. Add Rumble to your YouTube or Kick stream. Mixcloud live streaming. DJ sets and radio shows from your browser. 30+ more Plus any custom RTMP or SRT destination.
Platform limits Bitrate and duration caps for each platform.
Integrations Setup guides for OBS, vMix, cameras and more.
VTuber Streaming Go live with your avatar on every platform.
Blog
Guides
Release Notes
Free Tools
Helpdesk
Service status
Live Streaming FAQ
Compare Upstream
YouTube Dual Stream: What the Vertical Copy Does and How to Turn It Off YouTube Dual Stream: What the Vertical Copy Does and How to Turn It Off
Upstream

Run your streams from the cloud

Free plan: 24 streaming hours a month, no card, no watermark.

4.6 · 245 reviews on Trustpilot
Legal entity
Zukunft d.o.o.
Registered address
Grožnjanska ulica 32, 10000 Zagreb, Croatia
Company VAT ID
Company VAT ID: HR62560895839
About | Contact us | Tools | Content standards | Security | Privacy Policy | Terms of Service | Affiliate terms | Legal notice |

Product

  • Pricing
  • Upstream Features Overview
    • Multistreaming
    • Media Library & Storage
    • Website Player
    • Separate Audio and Video
    • Overlays: Stream Designer
    • Live Streaming Studio
    • Scheduling & Automation
    • Live Playback Controls
    • Play Stings, Jingles and Ads
    • Team Access
  • Enterprise Broadcasting Solutions

Resources

  • Helpdesk
  • Service status
  • Live Streaming FAQ
  • Blog
  • Release Notes
  • Live Streaming API
  • MCP Server
  • Free Live Streaming
  • YouTube Live Streaming
  • RTMP Server
  • Supported Platforms
  • Live Streaming Limits
  • Integrations

Compare us

  • Compare Upstream
    • Upstream vs Runnel.live
    • Upstream vs OneStream
    • Upstream vs Live247
    • Upstream vs Gyre
    • Upstream vs Streaming Bots
    • Upstream vs Restream
    • Upstream vs StreamYard
    • Upstream vs LiveReacting
    • Upstream vs Playout.video

Free tools

  • Design tools
  • Video tools
  • Audio tools
  • AI tools
  • Setup checks

Use cases

  • For Creators
  • For Music Labels
  • Church Streaming
  • VTuber Streaming
  • Multi-Channel Streaming

© 2026 Upstream. All rights reserved.