Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it's transmitted over the internet.

Private. None of your data is ever stored anywhere else other than on your computers. There is no central server that might be compromised, legally or illegally.

Encrypted. All communication is secured using TLS. The encryption used includes perfect forward secrecy to prevent any eavesdropper from ever gaining access to your data.

Authenticated. Every device is identified by a strong cryptographic certificate. Only devices you have explicitly allowed can connect to your other devices.

Powerful. Synchronize as many folders as you need with different people or just between your own devices.

Portable. Configure and monitor Syncthing via a responsive and powerful interface accessible via your browser. Works on macOS, Windows, Linux, FreeBSD, Solaris, OpenBSD, and many others. Run it on your desktop computers and synchronize them with your server for backup.

Simple. Syncthing doesn't need IP addresses or advanced configuration: it just works, over LAN and over the Internet. Every machine is identified by an ID. Give your ID to your friends, share a folder and watch: UPnP will do if you don't want to port forward or you don't know how.

What's New

  • Devices and folders can now be grouped in the GUI by setting the new group attribute.
  • HTTP and HTTPS proxies with support for CONNECT can now be used, in addition to the existing support for SOCKS proxies (the environment variable all_proxy=https://...).
  • Block indexing can be turned off for folders where it's more desirable to optimize for reduced database size and overhead than minimal transfer size (the blockIndexing attribute on folder configuration).
  • GUI login session duration can be configured to be longer or shorter than the default one week, or set to infinitely long. The cookie path can also be adjusted. (The sessionCookieDurationS and sessionCookiePath attributes in the GUI configuration.)

Fixes

  • fix(ignore, fs): allow loading ignore patterns behind symlink (fixes #10785) by @calmh in #10786
  • fix: avoid warning on does-not-exist scan error (fixes #10465) by @calmh in #10791
  • fix(strelaypoolsrv): locking correctness by @calmh in #10801
  • fix(model): properly health-check up-to-date folders (fixes #10546) by @calmh in #10773
  • fix(gui): fix expanding one folder not collapsing others in group by @tbodt in #10809
  • fix(gui): add bottom margin to folder action buttons for wrapped spacing by @rohitanwar in #10728
  • fix(upnp): guard against out of index string access by @calmh in #10834
  • fix(ignore): handle pattern resulting in empty string by @calmh in #10835
  • fix(versioner): handle invalid empty command by @calmh in #10836
  • fix(api): handle empty path in static request by @calmh in #10837
  • fix(db, model): better handle db connections, puller concurrency, avoid deadlock (fixes #10841) by @calmh in #10842

Other

  • chore(fs): use x/sys/windows where possible by @greatroar in #10766
  • chore(model): simplify FileInfoBatch size computation by @calmh in #10776
  • build: allow inotify on Android amd64 (ref #8710) by @chenxiaolong in #10783
  • chore: fix a couple of unclosed http connections by @calmh in #10806
  • chore(gui): lazy-render collapsed panels to reduce watcher count by @Finomosec in #10772
  • build(deps): update dependencies by @calmh in #10824
  • chore: new code contribution guidelines by @calmh in #10821
  • chore: remove ignore file caching entirely by @calmh in #10813
  • chore: slightly optimise rename detection (ref #10777) by @calmh in #10819
  • chore(gui): better describe when a pending folder/device notification will reappear by @tbodt in #10808
  • chore: deflake TestRecvOnlyRevertNeeds by @calmh in #10827
  • chore(model): don't check existing file twice in rename detection by @imsodin in #10833
  • chore(fs): optimise casefs caching performance by @calmh in #10830
  • chore(model): optimise fsync calls by @calmh in #10831
  • chore(syncthing): include local db entries in perfstats by @calmh in #10839