4 min read

Syncthing: Sync Folders Between Your Devices, No Cloud (GitHub, Scanned)

Keep folders in sync across your own computers and phones, directly and encrypted, with no cloud.

Syncthing logo
✅
Scan: safe. Nothing to worry about in the code. Your files never leave your devices, but by default it uses the project's public discovery and relay servers to find peers, and sends automatic crash reports, both of which can be turned off. Scanned Oct 26, 2026; the full report is below.

Syncthing keeps folders identical across two or more devices. Install it on each one, exchange device IDs, share a folder, and every change on one side appears on the others, continuously and in the background. There is no central copy: files go straight between your devices over TLS, so it works like Dropbox without anyone else holding your data.

It has been around since 2013 and the project's stated goals put not losing data first and security second, which shows in how conservative it is. You get file versioning, ignore patterns, send-only and receive-only folders, and a web interface on localhost:8384 for everything. It runs on Windows, macOS, Linux, BSD and Android (through community apps), and it handles very large folders well.

About 89,800 stars and 398 contributors, MPL-2.0, written in Go, at v2.1.7 when scanned. The honest limits: there is no web access to your files from a browser elsewhere, and two devices only sync when both are online at the same time, so a small always-on machine helps.

  • Repository: github.com/syncthing/syncthing
  • Licence: MPL-2.0 (Mozilla Public License 2.0)
  • Language: Go. Stars: 89.8K. Forks: 5,542. Last push: Oct 26, 2026.
  • Scan: safe, Oct 26, 2026, commit 70b5bc7

Who it is for

People who want their documents, photos or notes on every device without paying for or trusting a cloud service, and anyone who needs to keep a folder in step between a laptop, a desktop and a home server.

Getting started

1. macOS or Linux (Homebrew)

brew install syncthing

2. Start it as a background service

brew services start syncthing

3. Run it with Docker instead

docker run -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -v /wherever/st-sync:/var/syncthing syncthing/syncthing

Then open http://127.0.0.1:8384 to add devices and folders. Windows and macOS users who want a tray app can use one of the community wrappers listed in the docs; Debian and Ubuntu users can add the project's own apt repository.

Safety scan

We cloned syncthing/syncthing at commit 70b5bc7 on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • The one secret hit is a test key in lib/signature/signature_test.go, used to check release-signature verification. No suspicious code patterns, no committed binaries; the bare-IP URLs are in tests and use documentation addresses such as 192.0.2.42.
  • The Syncthing hosts in the code are its own infrastructure: global discovery and relays.syncthing.net help devices find each other across networks, upgrades.syncthing.net serves signed updates, and crash.syncthing.net receives crash reports. Relayed traffic stays end-to-end encrypted, and each service can be disabled in Settings.
  • 3 known advisories, all unrated: two in the AWS SDK's S3 encryption client and one flagging the deprecated openpgp package in golang.org/x/crypto. None is high or critical.
  • 8 workflows, all 22 third-party actions pinned to commits. One uses pull_request_target (pr-metadata.yaml), but only to label pull requests with a pinned action and read-only contents permission; it does not check out the contributor's code.
  • Security policy, contributing guide and Dependabot present. Release binaries are GPG-signed and the built-in updater checks an ECDSA signature. OpenSSF Scorecard 5.8.

What the scanner counted

CheckResult
Secrets1 candidate found and read; see the notes above.
Suspicious codeNone found.
Install-time codeNone: nothing runs at install beyond the package manager itself.
Committed binariesNone.
CI workflows8 workflows. 1 uses pull_request_target, none check out the pull request head. 0 of 22 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often mozilla.org, github.com, relays.syncthing.net, docs.microsoft.com. 5 URLs to a bare IP address, listed under the raw findings.
Known vulnerabilities3 advisories across 97 pinned packages: 0 critical, 0 high, 0 moderate, 0 low, 3 unrated. go.mod: 97 packages, 3 advisories.
Project hygieneHas security policy, automated dependency updates, licence file, contributing guide. Missing CodeQL.
OpenSSF Scorecard5.8 out of 10, as of Oct 19, 2026.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Secret candidates (1, redacted)
WhereRuleMatch
lib/signature/signature_test.go:18private-key-----B…--- (30 chars)
URLs to bare IP addresses (5)
WhereRuleMatch
lib/config/config_test.go:767ip-literal-url{"192.0.2.42:8080", "http://192.0.2.42:8080/"},
lib/connections/connections_test.go:161ip-literal-url{mustParseURI("http://1.2.3.4:5678"), false, false, false}, // generally bad
lib/discover/global_test.go:62ip-literal-urlif _, err := NewGlobal("http://192.0.2.42/", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil {
lib/discover/global_test.go:66ip-literal-urlif _, err := NewGlobal("http://192.0.2.42/?insecure", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil {
lib/discover/global_test.go:70ip-literal-urlif _, err := NewGlobal("http://192.0.2.42/?noannounce", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil {
Worst known vulnerabilities (3 of 3)
AdvisorySeverityPackageSummary
GHSA-7f33-f4f5-xwgwunknowngithub.com/aws/aws-sdk-go@1.55.8In-band key negotiation issue in AWS S3 Crypto SDK for golang in github.com/aws/aws-sdk-go
GHSA-f5pg-7wfw-84q9unknowngithub.com/aws/aws-sdk-go@1.55.8CBC padding oracle issue in AWS S3 Crypto SDK for golang in github.com/aws/aws-sdk-go
GO-2026-5932unknowngolang.org/x/crypto@0.57.0The golang.org/x/crypto/openpgp package is unmaintained, unsafe by design, and has known security issues
Workflows worth a look

By the numbers

Stars89.8K
Forks5,542
Contributors398
Commits8,220
Open issues374
Open pull requests17
Releases490
Latest releasev2.1.7
LicenceMPL-2.0
Main languageGo
Project age12 years
Last pushOct 26, 2026
Tracked files945
Lines of code164.2K
Checkout size14 MB

Lines by language: Go 121.3K, JSON 26.7K, JavaScript 4,951, HTML 3,897, YAML 2,056, Shell 1,991.

Questions

Is Syncthing free?

Yes. Syncthing is free and open source under MPL-2.0, with no paid tier, no account and no storage limit beyond your own disks.

Is Syncthing a backup?

Not on its own. It mirrors changes, so a deleted or overwritten file is deleted or overwritten everywhere. Turn on file versioning for a safety net, and keep a real backup of anything important.

Can Syncthing sync over the internet?

Yes. Devices on different networks find each other through global discovery and connect directly, falling back to an encrypted relay when a direct connection is not possible. Your data is never stored on those servers.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.