Private Chat · PIN
Create a chat with a permanent 6-digit PIN, or enter the PIN shared by the other participant. Connection starts only when you tap the button.
On this device
DEVICE + OFFLINE QUEUELive messages stay on the two devices. Only messages that need offline delivery are temporarily queued on the server. Unseen offline messages expire after 24 hours; Seen messages are deleted immediately.
Only offline pending messages are stored server-side. Seen messages are removed immediately; unseen pending messages expire after 24 hours. Inactive PIN rooms expire after 3 days.
Messages
No room selected📞 Private calls
Audio and video calls are peer-to-peer through WebRTC. Up to two devices can be connected to the same PIN chat at a time. Allow camera and microphone access.
Camera preview is shown only during a call. Some browsers or networks may not connect without a TURN relay; this test build uses STUN only. Camera and microphone access require HTTPS.
Status labels: Sent = Realtime accepted the event; Delivered = recipient client acknowledged it; Read = recipient rendered it in the open chat (not proof a person read it).
Privacy & reliability notes
Text messages, photos and voice notes are encrypted in the browser with AES-GCM before broadcast. Photos are resized/compressed in the browser and limited to a small Realtime-safe payload; one photo can be sent at a time. Voice notes are limited to 10 seconds, sent live through Realtime, and are not saved to local history or uploaded to Storage. Only offline pending messages are stored briefly by the server; live messages are not archived.
This remains an unaudited prototype. The hosting page's JavaScript could be changed by a compromised account/site. Anyone with the room code can join. No identity verification or forward secrecy. Supabase receives encrypted payloads and connection metadata. Use only a publishable/anon key in frontend code—never a service-role key. Realtime handles live delivery. Encrypted server queue is used only if the recipient does not acknowledge the live message. Voice notes use encrypted, size-limited Broadcast payloads rather than file uploads, so long recordings are intentionally unsupported.