Stephan Miller
Syncthing for Obsidian: Free, Private, and Genuinely Annoying

Syncthing for Obsidian: Free, Private, and Genuinely Annoying

I have recommended Syncthing in four separate posts on this site and I do not use it.

That is not a great look, so let me explain it, because the explanation is the whole point of this post. Syncthing is the best free way to sync an Obsidian vault. No account, no storage cap, no monthly anything, and your notes never sit on a server owned by a company that could get bought, breached, or bored. If you are still picking a method, my guide to syncing an Obsidian vault across devices is the page that compares all of them. This one assumes you already picked Syncthing and want to run it without hating it.

The reason I run Remotely Save over Dropbox instead comes down to one design decision, and it is not a bug. Syncthing has no server. That is the feature everyone likes. It is also the reason it stops working, and the good news is that it is fixable for about the cost of a Raspberry Pi.

There Is No Server, and That Is the Whole Point

Every other sync method in this series works the same way underneath. Your laptop pushes changes to a computer somewhere, your phone pulls them down later, and the computer in the middle holds your notes until both ends get around to showing up.

Syncthing doesn’t have the middle. Your devices find each other and talk directly, encrypted, peer to peer. There is no account to create or storage tier to blow through when your vault gets attachments. Nobody is holding a copy.

For a folder of markdown files this is close to perfect, and it is why Syncthing keeps winning the “best free option” argument in forum threads that have been running for years.

It also means that when neither device is awake, nothing happens. Hold onto that. It comes back later and it’s the whole reason this post has the word “annoying” in the title.

Setting Up Syncthing for an Obsidian Vault

Start with two desktops. Get that working before you bring a phone into it, because if you debug the mesh and the mobile client at the same time you will not know which one is lying to you.

On macOS:

brew install syncthing
brew services start syncthing

Linux has it in every package manager worth using. Windows has installers and a tray app on the downloads page.

Setting Up Syncthing for an Obsidian Vault

Then comes the part that throws most people. Syncthing has no window. It is a background service with a web UI, and the UI lives at http://localhost:8384 in your browser. That page is the entire application. People install it, look for an icon, do not find one, and conclude the install failed.

From there:

  1. Add the vault. Click Add Folder, point it at your vault directory, and note the Folder ID it generates. Both devices need the same Folder ID for the same folder, which Syncthing handles for you when you share it.
  2. Trade device IDs. Actions, then Show ID. You get a long string and a QR code. Paste that string into the other machine under Devices, then the plus button. The first machine throws a prompt asking whether it should talk to this new device. Accept it.
  3. Share the folder. Back on the first machine, edit the vault folder, open the Sharing tab, tick the other device. The other end gets a notification asking where to put the folder. That is where you choose the path.
  4. Walk away for ten minutes. The first pass has to hash every file in the vault before it moves a byte. Both ends show a percentage while it works. Watch the number move instead of deciding it is broken.

Two desktops, and you are done. It really is that quick, which is why the guides all end here and why everyone’s actual problems start at device three.

Three Devices Is Where People Give Up

Syncthing pairs devices, not networks. Add a third device the obvious way and you are not adding one connection, you are adding two. Every device has to know every other device.

The math gets ugly faster than you would think:

DevicesPairings you set up by hand
21
33
46
510

I sync five devices. Ten pairings, done by hand, each one needing a device ID pasted correctly and a share accepted on both ends. That’s a bad afternoon.

The fix is a setting that’s hard to find, because it is a checkbox on the device rather than on the folder. Mark one device as an introducer, and it hands out its own connection list. Per Syncthing’s docs, “when two devices connect they exchange a list of mutually shared folders and the devices connected to those shares.” Pick your most stable machine, mark it introducer on everything else, and new devices propagate through the mesh by themselves.

Three Devices Is Where People Give Up

Two things to know before you turn it on, both of which will confuse you at exactly the wrong moment:

  • Removal propagates too, and it is sticky. The docs are blunt about it: “if you manually remove an introduced device or unshare it from a folder, it will be automatically re-added as long as the introducer device is still marked as such.” You cannot kick a device out from the wrong end. Remove it on the introducer.
  • Never make two devices introducers for each other. The docs call this out directly, and the failure mode is exactly what you would guess: “the two devices will be constantly ‘re-introducing’ the removed device to each other.”

One introducer. On the machine that is on the most. That is all.

Best Practices for an Obsidian Vault Specifically

Syncthing does not know it is syncing a note app. Everything in this section is Obsidian-specific damage that a general Syncthing tutorial will never mention.

Ignore the workspace files, on every device separately

Add these to the folder’s Ignore Patterns tab:

.obsidian/workspace.json
.obsidian/workspace-mobile.json

These two files store which panes you have open and where your cursor is. They change constantly, on every device, which means they conflict constantly. Nothing else in .obsidian should be excluded. You want your plugins, hotkeys, and theme to ride along.

The trap is that ignore patterns never propagate. They live in a .stignore file in the folder root, and per the docs, “The .stignore file itself will never be synced to other devices.” Setting them on your laptop does precisely nothing for your phone. You have to do it on every device in the mesh, by hand. I covered this same trap from the Android side in how to sync Obsidian on Android for free, and it is the single most common reason a working Syncthing setup starts producing conflict files out of nowhere.

Turn on versioning, and know where it puts things

Syncthing can keep old copies of anything it overwrites or deletes, which is the closest thing you get to an undo button when a sync goes sideways. There are four types, and the docs name them as Trash Can File Versioning, Simple File Versioning, Staggered File Versioning, and External File Versioning.

For a vault, use Staggered File Versioning. It thins versions out over time on its own instead of either keeping a fixed count or keeping every copy until your disk fills.

Three of those four write into a .stversions folder inside your vault. External is the exception, since it hands the job to a command you supply.

Turn on versioning, and know where it puts things

If your first thought was that a folder full of old .md files inside the vault is going to wreck your search results, that was mine too, and it does not. Obsidian filters out any path starting with a dot before the file ever reaches the vault index, which is the same reason .obsidian and .trash never show up in the file explorer. Your versions are invisible to search, to the graph, and to backlinks. You do not need to add anything to Excluded Files.

What it does eat is disk. If you would rather keep the versions somewhere else entirely, Syncthing lets you move them: the folder’s versioning settings have a path option that “overrides the path where old versions of files are stored and defaults to .stversions if left empty.”

Use Receive Only for the devices you only read on

If a device only ever displays notes and never edits them, set that folder to Receive Only on that device. It cannot push a change back, so it cannot start a conflict. This is a good setting for a work machine or a media box, and a bad setting for anything you actually type on.

Never run two sync systems on one vault

This applies to every method and it eats more vaults than anything else on this list. Syncthing plus Dropbox on the same folder means two systems writing the same files on their own schedules, neither aware the other exists. Pick one.

What a Sync Conflict Actually Looks Like

Eventually you will get one, and Syncthing’s handling of it is more sensible than most.

When the same file changes on two devices and the contents differ, Syncthing does not overwrite anything. It renames the loser to this pattern:

<filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>

So daily-note.md edited in two places becomes daily-note.md plus something like daily-note.sync-conflict-20260910-071455-KJ3M7QP.md. Nothing is lost. Both versions are sitting there in your vault.

Which one keeps the original name comes down to timestamps. From the docs: “The file with the older modification time will be marked as the conflicting file and thus be renamed.” Newer wins the filename, older gets the long name. And conflict files propagate to every device, because the conflict is detected locally but everybody needs to know about it.

Find them with:

find /path/to/vault -name "*.sync-conflict-*"

Run that occasionally. Conflict files are valid markdown, so Obsidian indexes them exactly like real notes, and a vault that has been generating them for six months is a vault where search results have started coming in pairs.

Is There a Syncthing Plugin for Obsidian?

Yes.

It is Syncthing Integration by LBF38, it is in the community plugin browser, and version 2.4.0 landed in March 2026. Install it the usual way.

Is There a Syncthing Plugin for Obsidian?

It does not sync anything. That surprises people, so read it again. The plugin requires a Syncthing instance already installed and running on the device, and it talks to it over Syncthing’s REST API. Syncthing does the syncing. The plugin is a control panel.

What it actually gives you is a conflict resolution interface, a diff view for conflicting files, and a sync status readout in the status bar. Which, given the previous section, is genuinely worth having. Resolving conflicts by opening two files and eyeballing them is the worst part of running Syncthing, and this is a UI for exactly that.

The README volunteers its own limitations, which I always take as a good sign: “🚧 This plugin is still in development. The configuration might not yet be fully available. 🚧” and “Please backup your vault and use this plugin wisely.” An integrated configuration panel and ignore-pattern management are both listed as coming soon rather than done.

So: install Syncthing for sync, install the plugin for conflicts. Not the other way around, and not the plugin alone.

Phones Are a Separate Problem

Both mobile platforms have a wrinkle, and both have their own post in this series, so here is the short version.

On iOS, Syncthing does not run natively. You run a wrapper app. SyncTrain is free, open source, has no in-app purchases at all, and needs iOS 17 or later. Möbius Sync is free up to 20MB inside its sandbox, and lifting that cap is a one-time $4.99 purchase, which any vault with images will hit immediately. Start with SyncTrain. I compared both properly in syncing Obsidian on iPhone and iPad for free.

On Android, the official Syncthing app was discontinued, with its last release tied to the December 2024 version of Syncthing. If a tutorial tells you to install “Syncthing” from the Play Store, that tutorial is pointing you at an abandoned app. The maintained successor is Syncthing-Fork, which changed maintainers in 2026. The whole story, including which build to install and why F-Droid is the right source for it, is in how to sync Obsidian on Android for free.

The Reason People Quit

Now the thing I have been circling since the second paragraph.

Two devices sync when both devices are awake and reachable at the same time. There is nothing in the middle holding your changes until the other end wakes up, because you specifically chose the option that has nothing in the middle.

The Reason People Quit

Play that out on a normal day. You write on your laptop in the morning and shut it. You open your desktop that evening. The laptop is closed in a bag. Nothing syncs, because there is nobody to sync with. You open your laptop three days later and it finally catches up, except you also wrote on the desktop in the meantime, and now you are looking at a .sync-conflict- file and wondering what you did wrong.

You did nothing wrong. This is what a mesh with no always-on member does.

Even the Obsidian plugin’s README says it out loud: “The synchronization is done in real-time, using peer-to-peer connections. Therefore, all the devices you want to synchronize must be connected at the same time.”

This is why forum threads describe Syncthing as flaky when it is working perfectly. And it is why I run Remotely Save against Dropbox instead. Dropbox is a computer that is awake all the time. That is the only thing I am paying it for.

Fix It With One Always-On Node

The fix is to put something in the mesh that never sleeps. Not a service, a device you own.

A Raspberry Pi is the classic answer and it is enough. Any always-on machine works: a NAS, a home server, an old laptop with the lid closed and sleep disabled, a $5 VPS. Install Syncthing on it, share the vault with it, mark it as your introducer while you are in there, and the whole problem disappears. Every device now syncs to something that is always home, and the other devices catch up whenever they show up.

One important disambiguation, because the docs use a confusing word. Syncthing has public “relay servers,” and they are not this. Relays forward encrypted traffic between two devices that cannot reach each other directly through NAT. They do not store anything, and per the FAQ, “Relays do not and can not see the data transmitted via them.” A relay does not hold your changes while your laptop is in a bag. Only a node you run does that.

If your always-on node is a rented VPS, there is one more trick worth knowing. Syncthing supports untrusted devices: you set a password on the folder share for that device, set the folder type to Receive Encrypted on the VPS itself, and it stores your vault as ciphertext. It cannot read your file contents, filenames, metadata, or directory structure. What is still visible, in the docs’ own words, is “Folder ID and label, File sizes.”

Fix It With One Always-On Node

So you get an always-on relay point on hardware you do not physically control, holding notes it cannot read. That is a legitimately great setup for the person who picked Syncthing for privacy reasons in the first place. The docs still describe the feature as being in testing, so keep a backup that does not depend on it.

Frequently Asked Questions

Is there a Syncthing plugin for Obsidian?

Yes, Syncthing Integration by LBF38. It does not perform the sync. It requires Syncthing to be installed and running separately, and it adds conflict resolution, file diffing, and a status bar readout inside Obsidian.

Does Syncthing work with Obsidian on iOS?

Yes, through a wrapper app. SyncTrain is free and open source and needs iOS 17 or later. Möbius Sync is free up to 20MB and $4.99 once after that.

Is Syncthing free for Obsidian?

On desktop and Android, completely. It is open source with no accounts, no storage limits, and no paid tier. On iOS it depends on which wrapper you pick, and SyncTrain is genuinely free.

Why is my Obsidian vault not syncing with Syncthing?

Nine times out of ten, both devices were not awake at the same time. Syncthing has no server holding changes for you. The other common causes are ignore patterns set on only one device, or a folder set to Receive Only on the device you are editing on.

What should I add to Syncthing ignore patterns for Obsidian?

.obsidian/workspace.json and .obsidian/workspace-mobile.json, set on every device individually. Leave the rest of .obsidian alone so plugins and settings sync.

Is Syncthing better than Obsidian Sync?

It is free and private, and Obsidian Sync is neither. Obsidian Sync is a server that is always awake, first-party support, and no setup. Syncthing costs you a device that never sleeps and an afternoon. Pick based on which of those you have more of.

My Verdict

Syncthing is the best free Obsidian sync, and the qualifier that everyone leaves off is that it is the best free Obsidian sync if you own something that stays on.

With a Pi or a NAS in the mesh, it beats every other method in this series on price, privacy, and speed, and it is not close. Without one, it is a tool that works brilliantly in a two-laptop demo and then generates conflict files for a month while you decide sync software is unreliable.

I do not have that always-on node running yet. I have a Dropbox account that does the same job, badly, for money I was spending anyway, and an iPad that made the decision easy at the time. Writing this post has more or less talked me into the Pi, which was not the plan when I opened the editor.

Set up the two desktops first. Add the node before you add the phone. And go check for conflict files right now, because you have some.

Stephan Miller

Written by

Kansas City Software Engineer and Author

Twitter | Github | LinkedIn

Updated