Textunnel transfer guide: Wi-Fi sharing, limits and recovery

Textunnel is a free browser tool for sharing files and text between devices, with direct WebRTC preferred. Online discovery needs internet; TURN and MQTT content relay require explicit permission. File limits and clipboard access depend on the route and browser.

Maintained by Textunnel maintainers. Guide updated . Physical test record: .

Understand privacy and internet relay permission

Browsers encrypt WebRTC data-channel transport, including when TURN forwards it. Public-room MQTT payloads need a room password for application-layer encryption against the broker. Share links use their own secret. Treat codes, passwords and links as private.

TURN and MQTT content relay require explicit permission in each tab. Permission resets after reload or tab closure, and can be revoked. Revocation stops new relay work, but cannot recall bytes already sent. The Direct only preference can persist; it does not remove the internet dependency of online discovery and signaling.

History, preferences, optional temporary recovery and system-share handoff data use device storage. Third-party analytics and advertising scripts run on the site. Browser and device security matter as well; see the privacy policy for data handling.

Connect devices on the same Wi-Fi

Open Textunnel on both devices, use the same room code and wait for File channel ready in the device panel. Presence alone does not mean the file channel is ready. Choose a file, accept it on the receiver if prompted, then wait for the receiver completion receipt.

DIRECT means a selected non-relay WebRTC route. It does not prove a shared Wi-Fi network: VPNs may change routing. Online discovery and signaling need internet. For a local connection without online signaling, load/cache the site first and use Offline Connect: the guest scans the host Offer QR, then the host scans the guest Answer QR.

Room codes and links should be shared only with intended recipients. Reopen the same room to reconnect; do not assume a remembered room guarantees permanent pairing or background availability.

Save received files and use automatic saving

A completed receipt means the receiving app verified the file. It does not mean a download was saved to disk. Use the completed card download action, then the browser or system save flow. On iPhone, save to Files before selecting the file again to send it back.

Automatic directory saving depends on a supported browser disk-saving API and permission to choose a destination. Where unavailable, use the browser download flow. Default received file bytes live in the open page; after refresh a card can be history only, with an unavailable-file explanation.

Send multiple files, folders and dropped files

Use the attachment/file picker to select files, or drag files into the desktop transfer area. Folder selection and drag-and-drop availability depend on the browser. Folder packing runs locally, preserves relative paths and produces a downloadable archive; it is limited to 256 MiB and uses browser memory.

Check each file receipt and save received content before closing or refreshing the page. The open room keeps a bounded 512 MiB received-download cache; save and clear the receiving stream when it is full.

Copy, paste and sync text between devices

For manual sharing, paste text into the composer and press Send. On the receiver, use Copy on the message. For Auto-Sync, enable it on both devices, grant browser clipboard permissions where requested and keep the pages active.

Browser focus, user gestures and operating-system background rules can prevent automatic reading or writing. A sent/shared notice does not prove the other system clipboard changed. If automatic copying is unavailable, use manual copy and paste.

Recover after lock screen, background or network interruption

Keep both browser pages in the foreground. Wake lock is best effort; iPhone lock-screen or background transmission can stop. Return to Safari, wait for File channel ready, then ask the sender to Retry and accept the retry if prompted. Reconnection alone does not restart a failed file automatically.

Eligible verified prefixes can resume within 10 minutes, up to 256 MiB. To retain checkpoints across refresh, enable Recover interrupted files after refresh in receiver Preferences before transfer. It temporarily stores incomplete bytes locally, unencrypted at rest. After refresh, reselect the original source on the sender and the destination on disk receivers as needed. Larger interrupted files retry from the beginning.

If a device is missing, first confirm the room code and password. Check VPN local-network routing, guest Wi-Fi/AP isolation and firewall rules. Do not assume a DIRECT badge means traffic stayed on your LAN. Direct only prevents content relay but still allows online discovery/signaling.

Configure an optional custom TURN relay

TURN is optional for networks where a direct route cannot be established; it is not needed for every same-Wi-Fi transfer. In Preferences, open Advanced: Custom TURN Server, enter a valid TURN URL and the provider-issued username and password, then save. Never publish credentials in a page or repository.

Saving a TURN address does not authorize relay. Both peers must explicitly allow relay in the current tab; Direct only disables it. TURN forwards encrypted WebRTC transport, while MQTT is a separate fallback. A public TURN deployment is not part of the physical LAN acceptance, and no public relay availability or speed guarantee is made.

File limits by route

RouteLimitConditions
Text and clipboard messages64 KiB encoded message limitUse a file for larger content. Clipboard permissions and foreground access still apply.
MQTT file fallback25 MiB per fileBoth peers must explicitly allow relay in their current tabs.
Share links and folder packing256 MiBKeep the source page open. Browser memory, storage and network limits apply.
Room reception above 256 MiBSupported disk-saving API requiredNot an unlimited multi-gigabyte iPhone browser path; no 50 GB transfer is claimed.
Interrupted-file checkpointsUp to 256 MiB for 10 minutesReturn to the page, reconnect, then sender Retry. Cross-refresh recovery requires opting in before transfer; four temporary records maximum, unencrypted at rest.

Physical test results and scope

The following physical sessions were recorded on October 18, 2026. Exact browser and OS versions were not recorded, so these results are not a browser-version certification.

Physical device checks — dates, conditions, outcomes and failures
Date / devicesRoute and conditionsFile sizeResult

iPhone Safari ↔ Mac browser
Same Wi-Fi, native WebRTC; at least one VPN enabled1 MiB / 64 MiBPassed

Saved and returned; SHA-256 matched. 64 MiB rejection reached sender.


iPhone Safari ↔ Mac browser
WebRTC, lock screen / background64 MiBInterrupted; recovery passed

Uninterrupted transfer failed. Return to Safari, reconnect and manual sender Retry resumed retained prefixes; return hashes matched.


iPhone Safari ↔ Mac browser
WebRTC after ~20 seconds without Wi-Fi or cellular64 MiBRecovery passed

After restoring network, reconnect and sender Retry resumed retained data; return hash matched.


iPhone Safari ↔ Mac browser, both real cameras
Offline Offer/Answer QR; host ↔ host; desktop online signaling blocked1 MiBPassed

Saved and returned with matching hash. Site was loaded first; not an uncached offline first visit.

Scope and unverified environments

These are functional acceptance observations from the October 18, 2026 test record, not speed benchmarks or proof for every browser, VPN or router. Desktop reads were deliberately slowed for interruption tests. In-flight refresh recovery, iOS process eviction and physical Android/Windows coverage remain unverified.

iPhone Safari ↔ Mac on the same Wi-Fi, at least one VPN enabled
1 MiB and 64 MiB saved and returned over WebRTC; returned SHA-256 matched the source. A 64 MiB rejection also reached the sender correctly.
iPhone lock screen and background
Uninterrupted transfer did not pass. Returning to Safari reconnected; manual sender Retry resumed verified prefixes, and complete 64 MiB return hashes matched.
Physical network interruption
After Wi-Fi and cellular were disabled for about 20 seconds and restored, reconnection plus manual Retry resumed a retained prefix; the full 64 MiB return hash matched.
Offline QR connection
Both real cameras exchanged Offer/Answer QR codes. With desktop WebSocket signaling blocked from context creation, a native host-to-host channel transferred a 1 MiB file with matching return hash. This does not prove an uncached offline first visit.

Evidence basis: repository acceptance reports for modules 67 and 68; source reports include receiver receipts and SHA-256 checks. Acceptance report sources. This guide summarizes a dated test scope, not an independent certification.

Cloud Windows browser test — October 22, 2026

Windows Server 2025 Datacenter (10.0.26100, x64), Chrome 155.0.8059.85. Published October 23, 2026.

GitHub-hosted Windows virtual machine, two isolated browser contexts on one host. Native WebRTC host-candidate route; ICE servers were cleared in the test harness. This verifies the recorded OS/browser workflow, not default STUN traversal, a physical Windows PC, Windows 11, iPhone-to-Windows, Android, or a same-Wi-Fi phone/PC session.

Six completed checks on a Windows virtual machine
CheckResultDownload verification
Text delivered between isolated contextspassedApplication delivery / rejection status checked
os-1MiB.binpassed1048576 bytes; SHA-256 c0978704744126c3999901381b5bbd1bb2a0ab5b20be30ed82816118643de894
os-return-1MiB.binpassed1048576 bytes; SHA-256 c0978704744126c3999901381b5bbd1bb2a0ab5b20be30ed82816118643de894
64 MiB rejection is not reported as successpassedApplication delivery / rejection status checked
os-64MiB.binpassed67108864 bytes; SHA-256 e3f94a7cf5e4223ed571fd220888bd5037140aa8298eecc51eee8adac4cbd58f
os-return-64MiB.binpassed67108864 bytes; SHA-256 e3f94a7cf5e4223ed571fd220888bd5037140aa8298eecc51eee8adac4cbd58f

The 1 MiB and 64 MiB files were downloaded and sent back with matching hashes. The 64 MiB refusal reached the sender without a success receipt. This is a maintainer-run functional test, not an independent security audit.

Original workflow attachment SHA-256: 6c846f6de0f4f2dc825040779d3dc2abe5c97924b6e4e108e6dc8c1f2428d09f

Download the published Windows result as JSON

Related instructions

Open Textunnel