# ShareTexts > ShareTexts is a free web app for moving text, links, photos, videos, and files between any two devices — phone to laptop, iPhone to Windows, Android to Mac — directly in the browser. No app, no account, no cable. Just open ShareTexts on both devices. Transfers run peer-to-peer over WebRTC: data moves encrypted between the two browsers and the server never sees file contents. Connect two ways: nearby device discovery (your other device appears in the Nearby list while ShareTexts is open on it with Nearby visibility on) or, when it doesn't appear, a six-digit live code, a QR code, or a shareable link — those work over any internet connection. Rooms are temporary and close when you're done. ## How to use 1. Open https://sharetexts.online on both devices. 2. Tap your other device in the Nearby list — or use Use another way: a 6-digit code, a QR code, or a share link. 3. Type, paste, or attach anything — it appears on the other device, encrypted. ## Common questions ### Why can't I see my other device in the Nearby list? Your other device appears in the Nearby list when ShareTexts is open on it with Nearby visibility turned on. If it doesn't appear, connect with a 6-digit code, QR code, or link instead — these work over any connection. ### Do I need to install an app or create an account? No. ShareTexts runs entirely in the browser on any device with a modern browser: iPhone, iPad, Android, Windows, macOS, Linux, Chromebook. ### What can I send? Text, links, photos, videos, audio, documents — any file type. Links render as tappable cards. Transfers are end-to-end encrypted and never stored on a server. ## Pages - [About ShareTexts](https://sharetexts.online/about): what ShareTexts is, what it transfers, supported devices. - [Docs](https://sharetexts.online/docs): full documentation — pairing, transfers, privacy, developer API. - [How It Works](https://sharetexts.online/guides/how-it-works.html): the signaling + WebRTC architecture explained. - [Privacy](https://sharetexts.online/privacy): the privacy model — no accounts, no stored content. - [Security](https://sharetexts.online/guides/security.html): encryption and transport details. ## Facts - Free, no sign-up; runs in any modern browser with WebRTC (Chrome, Safari, Firefox, Edge). - Works across platforms: iPhone ↔ Windows, Android ↔ Mac, iPhone ↔ Android, any combination. - Transfer types: text, links, photos, videos, audio, documents, any file. Files up to 1 TB stream to disk; quality and bytes are never altered. Links render as rich preview cards (server-side Open Graph fetch, SSRF-guarded). - End-to-end encrypted via WebRTC (DTLS) with an additional AES-GCM layer; the signaling server relays connection metadata only and never sees content. - Nearby discovery shows a device only while ShareTexts is open on it, and you can set yourself Hidden; it is never a global user list. - Stay Connected keeps a room alive until you disconnect it yourself; rejoining is one tap from the landing page, and refreshes/network drops recover automatically. - Operated at https://sharetexts.online. ## UI reference (for agents driving the app) - Command palette: Ctrl/⌘+K on every screen. Actions: Send (create room), Receive (join), Show QR, Reconnect, Copy link, Copy All, Copy pairing code, Disconnect, theme, language, transfer stats, connection diagnostics, Docs/About. - Connection states shown in the room header: Connected (green), Reconnecting… (amber), Disconnected + Reconnect button (red). The browser tab mirrors this while the room is open: pill favicon green/amber/red + "● Connected — · ShareTexts" title; the landing tab identity is untouched. - Room creation: POST /api/push with Authorization: Bearer and JSON { roomId, text } pushes a text message into the room from scripts/agents (see the connect screen's curl command). - Link previews: GET /api/preview?url= returns { url, title, description, image, siteName } or { url, unavailable: true }. SSRF-guarded (public hosts only), cached 10 min, 30 req/min per IP. - Diagnostics ring for debugging: window.__sharetextDiag.snapshot() in the browser console records the full connect/transfer journey, including unhandled errors.