Why Syncthing Beats Cloud-Based File Sync
Most file sync services work by routing your data through a third-party server before it reaches your other devices. That means your files – personal documents, work projects, photos – pass through infrastructure you don’t control, stored under terms of service that can change without notice. Syncthing takes a different approach entirely: it syncs files directly between your devices over a peer-to-peer connection, with no cloud middleman and no account required.
Syncthing is free, open-source, and runs on Linux, macOS, Windows, Android, and more. It works on your local network when devices are nearby, and routes through relay servers (which see only encrypted traffic) when they’re not. You own every byte of the process.
Setting it up takes about 20 minutes.

Installing Syncthing on Each Device
Start with the two (or more) devices you want to sync. On Linux, Syncthing is available through most package managers. On Debian or Ubuntu, run sudo apt install syncthing in the terminal. On Fedora, use sudo dnf install syncthing. For macOS, the cleanest route is Homebrew: brew install syncthing. Windows users can download the installer directly from syncthing.net – there’s also a tray application called SyncTrayzor that wraps the interface into a more Windows-native experience and handles autostart without extra configuration.
Once installed, launch Syncthing on each device. On Linux, you can start it as a user service with systemctl –user enable syncthing –now, which ensures it runs automatically on login. Syncthing’s web interface opens at http://127.0.0.1:8384 by default – load that in your browser. On the first launch, it will prompt you to set up a username and password for the GUI, which you should do before connecting the device to a network. Don’t skip this step, particularly on shared machines or if you’re running Syncthing on a server where the port could be exposed.
Android users can find the official Syncthing app on F-Droid, or a maintained fork called Syncthing-Fork on the Play Store. iOS support is limited – there’s no native client, and workarounds involve third-party apps that use the Syncthing API. If iOS sync is a requirement, plan for that constraint early rather than after you’ve built out your folder structure.
Connecting Your Devices
Syncthing identifies each device by a unique Device ID – a long alphanumeric string generated during installation. To pair two devices, you add one as a “remote device” on the other. In the web GUI, click Add Remote Device in the bottom-right panel. You’ll be asked to enter the Device ID of the remote machine. The easiest way to find it: open the GUI on the second device, click Actions in the top-right corner, then Show ID. You can also scan the QR code if you’re adding a mobile device.
After you submit the Device ID, the second device will receive a pairing request – accept it from its own GUI. Once paired, both devices appear in each other’s device list and will show connection status. If they’re on the same local network, connection is typically near-instant. If they’re on separate networks, Syncthing will attempt to use global relay servers, which adds a bit of latency but still works without any port-forwarding or VPN setup on your end.
You can pair as many devices as you want. Each pairing is individual – Device A connects to Device B, Device B connects to Device C, and so on. Syncthing doesn’t assume a hub-and-spoke model, though you can build one. If you’re running a home server or always-on machine and want it to hold the canonical copy of your files, that machine simply gets paired with every other device.

Creating and Sharing Folders
A “folder” in Syncthing is any directory on your file system that you want to keep in sync. By default, Syncthing creates a sample folder at ~/Sync, but you can add any folder you want – documents, a photo archive, a code repository, a shared project directory. In the web GUI, click Add Folder, give it a label, and set the folder path on disk. The Folder ID is auto-generated but can be customized – it just needs to match exactly across devices when you share the folder.
After creating a folder, go to the Sharing tab within the folder settings and select which paired devices should receive it. On those devices, an incoming folder request will appear – accept it, and choose where the folder should live on that machine’s file system. The paths don’t need to match across devices. On your laptop it might live at /home/user/Documents/Work, and on your server at /mnt/storage/work – Syncthing doesn’t care, it tracks by Folder ID, not path.
Folder types give you control over sync behavior. Send and Receive is the default: changes on any device propagate to all others. Send Only turns a folder into a one-way broadcaster – useful for a camera upload folder where your phone pushes photos to your server but never receives deletions. Receive Only does the opposite, making a device a read-only recipient. These modes are set per-device, per-folder, so a single folder can behave differently depending on which machine is handling it.
Versioning, Conflicts, and Keeping Things Clean
Syncthing handles conflicts by keeping both versions of a conflicting file. If you edit the same file on two offline devices and then reconnect them, one version gets saved as a conflict copy with a timestamp in the filename. Neither copy is silently overwritten. For most use cases – documents, notes, configs – this behavior is exactly what you want. It’s less elegant for large binary files or databases, which shouldn’t be synced live anyway.
File versioning is available as an optional setting inside each folder’s configuration. You can enable Simple File Versioning, which keeps a set number of old file versions in a hidden .stversions folder. Staggered File Versioning is more sophisticated: it keeps more versions for recent changes and fewer as files age, similar to how time-machine style backups work. If disk space is a concern on any device, set a version cleanup interval or cap the number of versions. Syncthing won’t manage disk space automatically beyond what you configure.
One thing worth setting up early is the ignore patterns file. Each synced folder can contain a .stignore file in its root that tells Syncthing which files to skip – the syntax is similar to .gitignore. Add entries like .DS_Store, Thumbs.db, node_modules, or any build artifacts you don’t want propagating across machines. Doing this before the initial sync is faster than cleaning up thousands of ignored files after the fact.

Running Syncthing Without Thinking About It
Once your folders are set up and devices are paired, Syncthing genuinely fades into the background – but getting it to that point means making sure it starts automatically and runs persistently. On Linux servers without a desktop environment, enable it as a system service with sudo systemctl enable syncthing@username –now, replacing “username” with the account that owns the folders. On macOS, the Homebrew formula includes a plist for launchd, which handles autostart on login. For Windows, SyncTrayzor puts an icon in the system tray and handles startup through the Windows scheduler. Check the GUI dashboard occasionally – it will surface errors like “folder out of sync” or “device disconnected for X days” directly in the interface, without requiring any external monitoring tool. If you’re already running a self-hosted dashboard like Glances for system monitoring, the Syncthing process will show up in your resource overview alongside everything else, so you can catch runaway CPU or disk activity tied to a large initial sync.
The real question most people hit after a few weeks of use isn’t whether Syncthing works – it does, reliably – it’s how far to extend it. Do you add your password manager’s database folder and accept that SQLite files mid-write can cause sync issues? Do you sync your entire home directory and maintain an aggressive .stignore list, or keep folders narrow and intentional? Every expansion of scope requires a decision about what happens if a deletion on one device propagates instantly to six others before you notice it was accidental. Syncthing gives you the tools to recover – versioning, conflict copies, ignore rules – but not the guardrails to prevent you from making the mistake in the first place.





