Need help with WebRTC-Scalable-Broadcast?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

492 Stars 142 Forks 6 Commits 25 Opened issues


This module simply initializes and configures it in a way that single broadcast can be relayed over unlimited users without any bandwidth/CPU usage issues. Everything happens peer-to-peer!

Services available


Need anything else?

Contributors list

# 524
6 commits

WebRTC Scalable Broadcast

Scalable WebRTC peer-to-peer broadcasting demo.

npm downloads

This module simply initializes and configures it in a way that single broadcast can be relayed over unlimited users without any bandwidth/CPU usage issues. Everything happens peer-to-peer!

RTCMultiConnection v3 and Scalable Broadcast

RTCMultiConnection v3 now naively supports scalable-broadcast:

| DemoTitle | TestLive | ViewSource | | ------------- |-------------|-------------| | Scalable Audio/Video Broadcast | Demo | Source | | Scalable Screen Broadcast | Demo | Source | | Scalable Video Broadcast | Demo | Source | | Scalable File Sharing | Demo | Source |



Note: These (below) are old demos. Above (RTCMultiConnection-v3) demos are preferred (and up-to-dated).

  1. index.html
    - share video or screen or audio over unlimited users using p2p methods.
  2. share-files.html
    - share files with unlimited users using p2p methods!

Browsers Support:

| Browser | Support | | ------------- |-------------| | Firefox | Stable / Aurora / Nightly | | Google Chrome | Stable / Canary / Beta / Dev |

Browsers Comparison

means the browser that is used to forward remote-stream.

| Host | Streams | Receivers | Issues | | ------------- |------------- |------------- |------------- | | Chrome | Audio+Video | Chrome,Firefox | Remote audio tracks are skipped. | | Chrome | Audio | None | Chrome can NOT forward remote-audio | | Chrome | Video | Chrome,Firefox | No issues | | Chrome | Screen | Chrome,Firefox | No issues | | Firefox | Audio+Video | Chrome,Firefox | No issues | | Firefox | Audio+Screen | Chrome,Firefox | No issues | | Firefox | Audio | Chrome,Firefox | No issues | | Firefox | Video | Chrome,Firefox | No issues | | Firefox | Screen | Chrome,Firefox | No issues |

  1. First column shows browser name
  2. Second column shows type of remote-stream forwarded
  3. Third column shows browsers that can receive the remote forwarded stream
  4. Fourth column shows sender's i.e. host's issues

Chrome-to-Firefox interoperability also works!

Android devices are NOT tested yet. Opera is also NOT tested yet (though Opera uses same chromium code-base).

Currently you can't share audio in Chrome out of this big. In case of audio+video stream, chrome will skip remote-audio tracks forwarding. However chrome will keep receiving remote-audio from Firefox!


Firefox additionally allows remote-stream-forwarding for:

  1. Streams captured from
  2. Streams captured from
  3. Streams captured or generated by
    i.e. WebAudio API

Is stream keeps quality?

Obviously "nope". It will have minor side-effects (e.g. latency in milliseconds/etc.).

If you'll be testing across tabs on the same system, then you'll obviously notice quality lost; however it will NOT happen if you test across different systems.

WebRTC Scalable Broadcast

In the image, you can see that each NEW-peer is getting stream from most-recent peer instead of getting stream directly from the moderator.

npm install webrtc-scalable-broadcast

Now, goto

cd node_modules
cd webrtc-scalable-broadcast

and run the server.js file

node server.js


cd ./node_modules/webrtc-scalable-broadcast/
node ./server.js

Or install using WGet:

mkdir webrtc-scalable-broadcast && cd webrtc-scalable-broadcast
tar -zxvf webrtc-scalable-broadcast.tar.gz
ls -a
node server.js

Or directly download the TAR/archive on windows:


And now open:



fails to run:
# if fails,
lsof -n -i4TCP:8888 | grep LISTEN
kill process-ID

and try again

node server.js

How it works?

Above image showing terminal logs explains it better.

For more details, to understand how this broadcasting technique works:


WebRTC Scalable Broadcast

Assuming peers 1-to-10:

First Peer:

Peer1 is the only peer that invokes

. Rest of the peers will simply forward/relay remote stream.
peer1 captures user-media
peer1 starts the room

Second Peer:

peer2 joins the room
peer2 gets remote stream from peer1
peer2 opens a "parallel" broadcasting peer named as "peer2-broadcaster"

Third Peer:

peer3 joins the room
peer3 gets remote stream from peer2
peer3 opens a "parallel" broadcasting peer named as "peer3-broadcaster"

Fourth Peer:

peer4 joins the room
peer4 gets remote stream from peer3
peer4 opens a "parallel" broadcasting peer named as "peer4-broadcaster"

Fifth Peer:

peer5 joins the room
peer5 gets remote stream from peer4
peer5 opens a "parallel" broadcasting peer named as "peer5-broadcaster"

and 10th peer:

peer10 joins the room
peer10 gets remote stream from peer9
peer10 opens a "parallel" broadcasting peer named as "peer10-broadcaster"


  1. Peer9 gets remote stream from peer8
  2. Peer15 gets remote stream from peer14
  3. Peer50 gets remote stream from peer49

and so on.


Scalable WebRTC Broadcasting Demo is released under MIT licence . Copyright (c) Muaz Khan.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.