…DTLS-SRTPMesh · chat · files · whiteboard

Video calls that go browser to browser. Nothing in between.

One page, no account, no app, no server in the middle. Share one small link — by SMS, QR, email or chat — and people connect straight to you with end-to-end encryption. Chat, whiteboard, screen and file sharing included.

If the bar moves when you speak, your microphone works. Your choices are remembered for the call.

Received a link? Just open it. Instant links (default) relay the 2 KB encrypted handshake through tracker servers so nobody types codes; choose "Zero third parties" in ⚙ Connectivity for manual codes and no outside services at all.

Drag to rotate · scroll to zoom · double-click to reset · shows your live call topology

Everything a meeting needs, nothing that watches you

Encrypted is a single web page. Your browser does all the work; the page never sends your media, messages or files to any server.

🔐

End-to-end encrypted

DTLS-SRTP for media, AES-GCM for the handshake, safety numbers to verify every pair of participants.

⚡

Instant links

Share one small link; guests connect automatically. The link holds only a room key. Optional passcode, waiting room and link rotation.

🕸️

Mesh conference

2–6 participants connect directly to each other. If the host leaves, the room elects a new host and carries on.

💬

Chat & reactions

Messages reach everyone, with reactions, edit and delete, history for late joiners and local export.

📁

File & folder sharing

Stream files to everyone or to selected people with pause, cancel and resume; large files can be written straight to disk.

🖥️

Screen share + system audio

Share a window or screen; system audio is mixed with your microphone.

🎨

Background effects

Blur or replace your background entirely on your device (WebGL), plus a privacy oval that needs no setup.

✏️

Whiteboard

Draw together with live cursors; late joiners get the full board; export as PNG.

⏺️

Local recording

Record the whole call to a file on your own computer. Everyone is notified while recording runs.

🛰️

Works on hard networks

Built-in NAT check, per-peer path diagnostics, automatic ICE restart and rejoin, TURN support with short-lived credentials minted in your browser.

🧹

Zero third parties if you want

One preset turns off every outside service. The settings always list exactly what is in use.

📱

Phones, tablets, TVs

Responsive layout, keyboard and remote-control navigation, installable as an app, available in four languages.

How it works

Conferencing products route every packet through their servers. Here the only "server" is you: two browsers describe how to reach each other, and that description is carried across — by a link, a QR code, or a tiny encrypted relay.

1

Host makes an offer

The browser starts the camera, builds a WebRTC offer (codecs, encryption fingerprint, network candidates) and either packs it into a manual code or hands it to the tracker relay, encrypted.

2

Guest answers

With an instant link the guest's browser answers automatically. With a manual code you paste or scan the reply.

3

ICE finds the path

Every candidate pair is tested in parallel; the best direct path wins, a relay only if nothing else works. DTLS keys are exchanged and encrypted media flows.

4

Mesh grows

Each new guest links directly to everyone else; the host only relays tiny signaling messages over its encrypted data channel. Chat, files and the whiteboard ride the same links.

Topology compare
Where does the video actually travel?

Every participant sends to every other participant. No central point, nothing to log or intercept.

Documentation

Plain-language guides. Docs are in English; the interface is translated.

Quick start — hosting a call
  1. Type your name. Optionally set a passcode and tick Waiting room. Press Start a call and allow camera and microphone.
  2. The People panel shows your instant link. Press Share… (phone) or Copy link, or show the QR for someone in the room. Send it by SMS, email, chat — one link serves every guest.
  3. Guests appear automatically. With the waiting room on, admit each one from the People panel.
  4. Use the bottom bar: microphone, camera, screen share, effects, raise hand, reactions, record, chat. The ⋯ menu has layout, whiteboard, captions and diagnostics.
  5. To end for yourself press ✕. The room keeps running for the others and elects a new host.
Quick start — joining a call
  1. Open the link you received (or paste it under Join with a code, or scan the host's QR with your camera app).
  2. Type your name, enter the passcode if asked, press Join with camera. Keep the tab open; the call connects by itself. If the host is not there yet you simply wait.
  3. If the host uses the waiting room you will see "waiting to be admitted".
  4. On phones keep the tab in the foreground — iOS suspends background tabs.
Instant links vs manual codes

Instant (default): the link holds only a random room key. Both browsers connect to public BitTorrent WebSocket trackers (the ones WebTorrent uses) which hand the ~2 KB offer/answer across. Everything they carry is AES-GCM encrypted with a key derived from the room key and passcode; trackers see ciphertext, never media. One link serves every guest; guests can arrive before the host; links can be locked or rotated.

Manual: no outside service at all. The host sends a one-time code (link or QR), the guest sends a reply code back, the host pastes it (paste anywhere on the page, use the clipboard button, or scan the reply QR). One code per guest.

Switch in ⚙ Connectivity, or pick the Zero third parties preset.

Which outside services are involved, and how to use none

By default: public STUN servers (Google, Cloudflare — they learn only your public IP:port) and public trackers for instant links. A TURN relay only if you add one. Captions, if you enable them, use your browser's speech service (Google or Apple servers) and are off by default. The ⚙ dialog and the landing tag always list what is in use.

Zero third parties: manual codes, no STUN, no trackers. Direct connections then succeed on the same network, with IPv6 on both sides, or when one side has a public IPv4. Self-hosted everything: point STUN/TURN at your own coturn and trackers at your own bittorrent-tracker — all conveniences, no public services.

Networks & NAT — what works where
Your situationDirect P2P?What to do
Home router, single NAT (cone types)YesNothing — STUN discovers your mapping, hole punching works.
Double NAT, CGNAT, mobile carrierUsuallySTUN sees the outermost mapping. Some carrier NATs are symmetric — then TURN.
Same LANYesLocal candidates connect directly, even without hairpinning.
Symmetric NAT (enterprise / some carriers)Only if the other side is cone-typeAdd TURN. Guests get it through the link.
UDP blocked (corporate firewall, hotel Wi-Fi, proxies)NoTURN over TCP/TLS on 443: turns:host:443?transport=tcp.
IPv6 on both sidesYesNo NAT at all; the IPv6 pair wins.
Hide my IP from peers—Tick Force relay — all media goes via your TURN.
Troubleshooting
  • Nothing happens after joining. Look at the People panel: "n/m trackers online". 0/n → your network blocks WebSockets to the trackers (corporate proxy, captive portal). Ask the host for a manual code, or use your own tracker on port 443.
  • "Connecting…" forever / failed. Both sides run 🛰 Check my network. "Symmetric NAT" or "UDP blocked" on either side → the host adds a TURN server once (⚙ Connectivity). Confirm it with 🛰 Test; add a turns:…:443?transport=tcp line for strict firewalls.
  • Audio works, video black. The small label on the tile tells which stage fails: "↑ not sending video" = your camera is not encoding (another app holds the camera, the tab is in the background, or a device switch failed); "↓ no video arriving" = delivered nothing (try TURN); a ▶ overlay = the browser blocked autoplay, tap it.
  • Echo or feedback. Someone has speakers and microphone close together; use headphones or let the browser's echo cancellation work (turn Music mode off).
  • Choppy video with 4+ people. Mesh uploads one copy per peer. Lower Quality in Settings, close other uploads, or ask people to turn cameras off while presenting.
  • Screen share has no audio. Choose a Chrome tab or "entire screen" with "share audio" ticked; macOS shares tab audio only; Firefox does not share system audio.
  • Guest removed after a network change. Instant-link guests rejoin automatically within seconds; manual-code guests need a fresh code.
  • Link older than ~10 minutes does not connect. NAT mappings expire — press New / Rotate and resend.
  • "Reply already used". A manual code answers exactly one guest; send the current one.
  • iPhone: call drops when switching apps. iOS suspends background tabs; return to the tab, it reconnects. Add the page to the Home Screen for better reliability.
  • Brave, Tor Browser, strict privacy settings. Brave Shields' fingerprinting protection adds noise to canvas/audio and can hide device labels; if the camera list is empty or QR scanning fails, allow fingerprinting for this site (Shields → Advanced). Browsers that disable WebRTC entirely cannot connect at all.
  • Firewall checklist for IT. Outbound UDP 3478 (STUN/TURN), UDP 49152–65535 for direct media, TCP 443 for TURN-over-TLS and tracker WebSockets.
  • Still stuck? Settings › Diagnostics › Download report and send it with your question to [email protected]. The report contains no secrets and no media.
Self-hosting STUN / TURN / tracker (2 minutes each)
apt install coturn
# /etc/turnserver.conf
listening-port=3478
tls-listening-port=443
realm=turn.example.com
use-auth-secret
static-auth-secret=CHANGE_ME_LONG_RANDOM
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem
fingerprint
no-multicast-peers
# open UDP/TCP 3478, TCP 443, UDP 49152-65535

# tracker (instant links) — behind TLS so HTTPS pages can use wss://
npx bittorrent-tracker --ws --port 8000

In ⚙ Connectivity choose Self-hosted everything, fill turn:turn.example.com:3478, turns:turn.example.com:443?transport=tcp, the shared secret, and wss://tracker.example.com. The page mints 24-hour TURN credentials with HMAC-SHA1 exactly as coturn expects; the secret never leaves your browser.

Recommendations for a good call
  • Use headphones; keep the camera at eye level with light in front of you, not behind.
  • For 4+ people set Quality to Medium and let the host keep the tab in the foreground — the host relays signaling for everyone.
  • Set a passcode and the waiting room for anything sensitive; rotate the link after the meeting if it was posted somewhere public.
  • Compare safety numbers (People › 🔐) out loud once per contact when confidentiality matters.
  • Prefer Chrome / Edge for the full feature set (disk streaming of files, speaker selection, captions). Firefox and Safari handle calls, chat, files and whiteboard.
  • On a laptop plugged into a monitor, pick the right camera and microphone in Settings — the page remembers nothing between sessions except your connectivity settings and chat history.
  • Record only with consent; everyone sees the ⏺ indicator while you record.
Optional ML background segmentation (self-hosted, no service)

The built-in effects use background subtraction (capture an empty background first) or the privacy oval. For Zoom-style person segmentation without any setup, the page can load MediaPipe's selfie-segmentation model from your own site — a one-time static download of about 2 MB, cached by the browser, no outside service involved. Install once on the server:

npm pack @mediapipe/tasks-vision          # Apache-2.0
# copy from the package:  vision_bundle.mjs, wasm/vision_wasm_internal.js, wasm/vision_wasm_internal.wasm
#   → /vendor/mediapipe/
# model (Apache-2.0): selfie_segmenter.tflite from the MediaPipe models bucket → /vendor/mediapipe/selfie_segmenter.tflite

Then Settings › Background effects › ML segmentation. If the files are missing the button simply reports it and the classic effects keep working. If people appear blurred and the room sharp, tick "Mask inverted".

Host controls, notifications, rollout links
  • Host controls (People panel): mute everyone, remove a participant, waiting room, lock/rotate the link, a room topic shown to all, and a maximum number of participants — the room locks itself when it is reached.
  • Notifications (Settings): unread count in the tab title, optional desktop notifications for chat while the tab is in the background, and join/leave/message sounds. All synthesized on your device; no assets, no permissions beyond the one you grant.
  • Offline handling: a banner appears when your connection drops; links are restarted (mesh) or rejoined (instant) automatically when it returns. Closing the tab during a call asks for confirmation.
  • Rollout links for IT: ⚙ Connectivity › Copy setup link produces …/?cfg=… carrying STUN/TURN/tracker settings; users who open it are shown the servers and asked to confirm before anything is saved. Export/Import does the same with a JSON file.
  • Theme: follows your system (light/dark) with a 🌓 override in the header.
Meeting tools: private chat, polls, spotlight, bandwidth saver
  • Chat: pick a person in the "Send to" box for a private message (delivered only to them, never replayed to late joiners); **bold**, _italic_ and `code` formatting; search box filters the history; "… is typing" indicator.
  • Host tools (People panel): ask a muted person to unmute, lower all hands, spotlight someone for everyone (or clear it), start a poll (2–8 options, live results, late joiners see the open poll), end the meeting for everyone. Raised hands are numbered in the order they went up.
  • Your view (Settings): hide your own tile, mirror on/off, per-person volume sliders in People, connection-quality bars on each tile (▂▄▆ from round-trip time, packet loss and frame rate).
  • Bandwidth saver: "receive audio only" asks every other participant to stop sending you video (their tiles show an audio-only badge); switch it off to get video back. Useful on mobile data or when the mesh gets large.
  • Push to talk: when enabled, hold Space while muted to talk; release to mute again.
  • Calendar: every invite can be downloaded as an .ics file (opens in Outlook, Google Calendar, Apple Calendar) with the link in the event.
Breakout rooms, shared notes, attendance
  • Breakout rooms (host, People panel): choose 2–6 rooms, auto-assign or pick a room per person, optional countdown, then Open rooms. Everyone sees and hears only their own room; video and audio to other rooms are stopped at the sender, so no bandwidth is wasted and nothing leaks. Chat is scoped to the room. The host can switch which room it views, send a message to all rooms, and close the rooms — everyone returns to the main room. Guests can Ask host for help. People who join while rooms are open land in the main room. Rooms close automatically if the host leaves.
  • Shared notes: a notepad everyone can edit (last edit wins, late joiners receive the text, export as Markdown).
  • Per-person host controls: mute one person, stop one person's video, remove, ask to unmute, spotlight, volume. Anyone can rename themselves from the People panel.
  • Attendance: a CSV of who joined and left, with durations, from your own view of the call.
  • Whiteboard: text tool and image insert (paste, drop or pick; downscaled on your device).
  • Transcript: captions received so far can be downloaded as text (captions remain opt-in and use the browser's speech service).
Keyboard shortcuts & accessibility
  • M mute · V camera · S screen share · H raise hand · C chat · B whiteboard · P people · L layout · F fullscreen · Esc close panel/menus · ? help
  • All controls are real buttons with labels, reachable by Tab or a TV remote; focus is clearly visible. Reduced-motion preference pauses the animations.
Files, chat and recording — limits
  • Files are sent in 16–64 KB chunks to each recipient; a 100 MB file to 3 people uploads 300 MB. Receivers keep files in memory unless they press Save as it arrives (Chrome/Edge). Transfers survive a reconnect: the receiver asks the sender to resume from the last byte.
  • Chat history is stored only in your browser (IndexedDB) per room and can be exported or cleared from the Chat panel.
  • Recording composes all tiles at 1280×720, 15 fps, with mixed audio, into a WebM file on your computer. Browser tabs must stay open while recording.
Browser support

Chrome / Edge 103+, Firefox 113+, Safari 16.4+ on macOS, iOS and iPadOS; Android Chrome; smart-TV browsers based on Chromium (Tizen/webOS browsers vary). Feature notes: captions and speaker selection are Chrome/Edge; QR scanning uses the browser's detector where present and a built-in decoder elsewhere (clean, well-lit codes).

Privacy model in one paragraph

The page is static. It stores your connectivity settings and chat history in your own browser only. It makes no requests of its own except the optional services you choose (STUN, trackers, TURN, captions). Links contain a room key and, unless you untick it, your display name. Peers see each other's IP addresses unless Force relay is on. There are no cookies, no analytics, no accounts.

FAQ

Does Encrypted use any servers?
No server of ours ever carries your call. Media, chat, whiteboard and files travel directly between browsers over WebRTC with mandatory DTLS-SRTP encryption. Optional public STUN servers only tell your browser its public address, and optional tracker relays carry a few kilobytes of encrypted handshake for instant links. Both can be switched off (Zero third parties preset) or replaced with your own.
Do I need an account or an app?
No. Open the page, type a display name, start a call and share the link. Guests open the link in any modern browser. The page can be installed as a Progressive Web App.
How many people can join?
Calls are a full mesh: every participant sends to every other participant. That works well for 2 to 6 people on normal connections; bitrate per peer is capped automatically. Larger meetings need a server, which Encrypted deliberately does not have.
Is it really end-to-end encrypted?
Yes. WebRTC always encrypts media with DTLS-SRTP keys negotiated between the two browsers. Instant-link handshakes are additionally AES-GCM encrypted with a key that exists only in the link. Each pair of participants can compare a safety number to confirm no one substituted keys.
What if it will not connect?
Run the built-in network check. Symmetric NAT or blocked UDP on either side needs a TURN relay, which the host configures once; guests receive it through the link. Links older than a few minutes should be regenerated.
Does it work on phones, tablets and TVs?
Yes. The interface adapts from phones to 4K TVs, supports keyboard and remote-control navigation and can be installed as an app.
Can I use it offline or on a private network?
Yes. Host the single file on any web server inside your network (HTTPS or localhost for camera access), pick Zero third parties, and use manual codes or your own tracker. The service worker keeps the page available offline once visited.
00:00
1 / 1