Syncthing is a free, open-source file synchronization tool that syncs files directly between your devices using TLS encryption — no cloud service, no company servers, no subscription. Your files go straight from your laptop to your NAS to your home server without passing through anyone else’s infrastructure. This guide covers setting up Syncthing between two devices and configuring it for reliable, secure sync.
How Syncthing Works
Unlike Dropbox or OneDrive, Syncthing operates peer-to-peer. Each device has a unique cryptographic Device ID. You connect devices by exchanging these IDs, and Syncthing negotiates a direct encrypted connection. If a direct connection isn’t possible (e.g., both devices are behind NAT), it uses a relay server temporarily — but the data is still end-to-end encrypted.
- No central server — files never pass through a third party unless relays are needed
- TLS encrypted — all transfers use TLS with device certificate pinning
- No registration — Syncthing doesn’t know who you are or what you’re syncing
- Open source — code is audited and available on GitHub
Installing Syncthing
Linux (Debian/Ubuntu)
# Add Syncthing's official repository
curl -s https://syncthing.net/release-key.txt | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update && sudo apt install syncthing
Enable as a user service:
systemctl --user enable syncthing
systemctl --user start syncthing
Access the web UI at http://127.0.0.1:8384.
Windows
Download the installer from https://syncthing.net/downloads/. SyncTrayzor is a recommended Windows wrapper that adds a system tray icon and auto-starts Syncthing.
winget install Syncthing.SyncTrayzor
macOS
brew install syncthing
brew services start syncthing
Or download the official macOS app from syncthing.net.
Android
Available on F-Droid (privacy-preferred) or Google Play as Syncthing or Syncthing-Fork.
Initial Setup
When you open the Syncthing web UI (http://127.0.0.1:8384), you’ll see:
- Your Device ID (a long alphanumeric string) — share this with devices you want to connect
- A default
Default Folderpointing to~/Sync - No connected devices yet
Setting a Web UI Password
Go to Actions (top right) → Settings → GUI tab → set a GUI Authentication User and Password. This prevents other apps on your machine from accessing the Syncthing interface.
Connecting Two Devices
Device A (e.g., your laptop):
- Copy your Device ID from the web UI (Actions → Show ID)
- Note it for use on Device B
Device B (e.g., your NAS/home server):
- Click Add Remote Device
- Paste Device A’s Device ID
- Give it a friendly name (e.g., “Laptop”)
- Click Save
Back on Device A:
Syncthing detects an incoming connection request from Device B. A notification appears: “New Device wants to connect: [Device B ID]”. Click Add Device and confirm.
Both devices are now connected and will show in each other’s “Remote Devices” list with a green status.
Sharing a Folder
On Device A:
- Click Edit on the folder you want to share (or Add Folder to create a new one)
- Go to the Sharing tab
- Check the box next to Device B
- Click Save
Device B receives a prompt: “Device A wants to share folder ‘Documents’”. Accept and choose where to store it locally.
Syncthing immediately begins syncing. The first sync transfers all files; subsequent syncs only transfer changed blocks.
Folder Types
| Type | Behavior |
|---|---|
| Send & Receive | Full bidirectional sync |
| Send Only | Folder is the master; remote changes don’t sync back |
| Receive Only | Read-only mirror of the other device |
Use Send Only for a “source of truth” device (e.g., your main laptop). Use Receive Only for a backup destination that shouldn’t push changes back.
Ignoring Files
Create a .stignore file in any synced folder to exclude files:
# .stignore
*.tmp
.DS_Store
Thumbs.db
node_modules/
.git/
*.log
Patterns are gitignore-compatible. Ignored files aren’t synced and don’t cause conflicts.
Conflict Resolution
If two devices modify the same file before syncing, Syncthing creates a conflict copy named like filename.sync-conflict-20260419-143022.ext. You need to manually review and merge conflicts — Syncthing doesn’t auto-merge.
For text files and code, use the Syncthing GTK UI or periodically run:
find ~/Sync -name "*.sync-conflict-*" -type f
Relays and Discovery Servers
By default, Syncthing uses:
- Global Discovery — finds your devices’ current IP addresses when they change
- Relay Servers — assist with NAT traversal when direct connection isn’t possible
For maximum privacy, you can disable both and use only local discovery (LAN sync) and direct IPs:
Settings → Connections:
- Disable “Global Discovery”
- Disable “Enable Relaying”
- Add devices by direct IP in Advanced → Addresses field:
tcp://192.168.1.50:22000
This prevents Syncthing’s discovery servers from knowing your devices exist, but requires both devices to be reachable at known addresses.
Syncthing vs. Nextcloud
| Feature | Syncthing | Nextcloud |
|---|---|---|
| Architecture | P2P, no server needed | Server-client |
| Web access to files | No | Yes |
| File browser UI | No | Yes |
| Setup complexity | Low | High |
| Mobile client | Good | Good |
| Privacy | Excellent | Good (self-hosted) |
Choose Syncthing for pure sync without web access. Choose Nextcloud if you want to access files via browser from anywhere.
Syncthing is one of the most reliable and privacy-respecting file sync tools available. Once set up, it runs silently in the background and keeps everything in sync without any intervention.