WebRTC connections,
signaled by QR code

Two devices exchange a WebRTC offer and answer by scanning each other's QR codes, then talk over a direct data channel. It runs on the browser's native WebRTC with a Vue.js interface — there is no signaling server; public STUN servers are used to discover network addresses.

What it does

What the web app implements today, and where its limits are.

No signaling server

The WebRTC offer and answer travel as QR codes (or copy-paste), so no signaling server is involved in setting up the connection.

Encrypted in transit

WebRTC always encrypts data channels with DTLS; the browser does this, not app code. The QR payload itself (the SDP offer and answer) is not encrypted.

Runs in the browser

Needs a modern browser with WebRTC. A camera is used to scan codes; without one, the offer and answer can be pasted as text.

Direct data channel

Data flows peer to peer over an RTCDataChannel. The app configures no TURN relay today, so no server relays your data.

NAT traversal via STUN

STUN servers (Elveris's own, with Cloudflare's as fallback) discover each device's public address. Without a TURN relay, some restrictive networks and NATs cannot connect.

Works offline on a local network

When the browser reports it is offline, no ICE servers are used and the devices connect with local host candidates only.

How it works

The QR codes replace the signaling server; everything else is standard WebRTC.

  1. 1

    Host shows an offer

    The host creates a WebRTC offer, gathers ICE candidates and shows the offer as a QR code.

  2. 2

    Guest scans and answers

    The guest scans the offer, creates an answer and shows it as a QR code.

  3. 3

    Host scans the answer

    The host applies the answer, ICE finds a path and the data channel opens. The app reports "connected" only when the channel is open.

Technical flow

  1. SDP offerRTCPeerConnection
  2. ICE candidatesup to 300 ms
  3. QR codeJSON payload
  4. SDP answerQR code back
  5. Data channelDTLS

Try it

Screens in this app that open a real connection between two devices.

Chat

Text messages between two devices over the data channel.

File transfer

Send a file directly to the other device in chunks over the data channel.

Demo

Step through the offer and answer exchange and watch the connection state.

Connect two devices

Open the demo on two devices, or in two browser tabs, and follow the steps.