# Nextcloud Desktop Client: the official sync client for Windows, macOS and Linux

> The Nextcloud Desktop Client keeps a local folder in step with a Nextcloud Server. This review covers what it does, how to build it from source, and where it stops being the right tool.

**nextcloud/desktop** — 💻 Desktop sync client for Nextcloud

- Repository: https://github.com/nextcloud/desktop
- Website: https://nextcloud.com/install/#install-clients
- Stars: 3,882 · Forks: 1,018
- Language: C++
- License: GPL-2.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/nextcloud-desktop

## What the Nextcloud Desktop Client is for

The README describes it in one line: an app to synchronize files from Nextcloud Server with your computer, available for Windows, macOS and Linux. That is the whole scope. It is not a general purpose backup tool, not a mount, and not a web client wrapper. It is the official client from the same project that ships the server, which matters because the sync protocol and the server side features are developed together rather than reverse engineered by a third party.

The audience is narrow and specific. You need a Nextcloud Server instance already running, either your own or one you have an account on. If you are evaluating self hosted file sync as a category and have not picked a server yet, this client is not the entry point; it only makes sense downstream of that decision. For people who have already deployed the server, the client is the recommended way to get files onto a laptop or desktop, and the official download page is where the project points for the latest stable version.

## How synchronization and the codebase fit together

The client is written primarily in C++, with Qt as the application framework and additional platform specific code. The topics list includes Objective-C, Objective-C++ and Swift alongside the C++ core, which reflects the macOS integration work, and the repository carries a Nextcloud Desktop Client.xcworkspace for that platform. The shell_integration directory at the top level holds the pieces that hook into the operating system file manager, which is what produces overlay icons and context menu entries outside the client's own window.

The build depends on Qt6 since version 3.14, with Qt5 for earlier versions, plus OpenSSL, QtKeychain and SQLite. QtKeychain is the credential store abstraction, so passwords do not live in the client's own configuration. SQLite backs local state, which is what lets the client track what has already been synced without asking the server every time. Sync exclusions are not hardcoded: the repository ships a sync-exclude.lst file at the top level, and the client applies that pattern list when deciding what to ignore.

There is also a systemd directory in the repository, indicating that the project maintains unit files for Linux deployments. The presence of translations and a .tx directory shows localization is handled through Transifex. None of this tells you how fast a sync will run; the README makes no performance claims, and the repository layout does not either.

## Installing the client and pointing it at a server

For normal use, the project does not ask you to build anything. The README's Downloads section says to refer to the official download page at nextcloud.com/install/#install-clients for the latest stable and recommended version. If you want a release other than the current one, the README lists all releases on the nextcloud-releases GitHub organization and daily builds on download.nextcloud.com. Pick the package for your platform from there, install it the way your system normally installs software, and launch the client.

If you are developing against the client, the build path is different. The README gives this sequence: clone the repository, create a build directory, enter it, then run cmake with the dependency prefix and a debug build type.

```bash
git clone https://github.com/nextcloud/desktop.git
mkdir build
cd build
cmake -S ../desktop -B . -DCMAKE_PREFIX_PATH=<dependencies> -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=. -DNEXTCLOUD_DEV=ON
```

The README notes that NEXTCLOUD_DEV lets you run your own build alongside an installed version of the client, which is the reason to set it if you are working on the code rather than just using it. You need cmake and clang, gcc or g++ available, plus Qt6, OpenSSL, QtKeychain and SQLite. On macOS the README points to a separate macOS development guide in doc/macOS-development.md, and Xcode is listed as a requirement there.

To have something to sync against, the README suggests the Nextcloud Docker image as the easiest local test server. This command starts one on port 8080 and removes it when interrupted.

```bash
docker run \
    --rm \
    --publish 8080:80 \
    --env SQLITE_DATABASE=nextcloud.sqlite \
    --env NEXTCLOUD_ADMIN_USER=admin \
    --env NEXTCLOUD_ADMIN_PASSWORD=admin \
    nextcloud
```

The README states that this simple test server suffices in most cases, and points to a Docker Compose based development environment for more advanced deployments. Once the server is up, you point the client at its address and sign in with the admin credentials you passed in.

## Where the client is the wrong tool

The most obvious limitation is the one the README states by omission: this client talks to Nextcloud Server. It is not a generic WebDAV sync client you can aim at any storage backend, and there is no documentation in the README for using it against a non Nextcloud server. If your organization runs a different file sync product, this repository has nothing for you.

The second limitation is the build. Qt6, OpenSSL, QtKeychain and SQLite are all listed as requirements, and the README does not describe a fallback path or a bundled dependency set. Building on a machine without those libraries already present means installing them first, and the README defers the details to the KDE Craft blueprints repository rather than documenting them here. That is a real gap for anyone expecting a self contained build recipe in the README.

Third, the README does not document rollback behaviour. If you upgrade the client and something regresses, the README says nothing about downgrading, and it does not describe how local sync state survives a version change. The releases page is where you would look for an older build, but the README itself is silent on the procedure. Treat that as unknown rather than solved.

Finally, the system requirements are explicit: Windows 10 or Windows 11, macOS 13 Ventura or newer, or Linux. Older macOS versions are not listed as supported. If you are maintaining machines below that line, the current client is not aimed at them.

## How it compares with rclone and other sync tools

The natural alternative for people who want file sync from the command line is rclone, and the difference in approach is structural rather than cosmetic. rclone is a command line tool that speaks to many storage backends through a common interface, and you drive it with subcommands and flags in scripts or cron jobs. The Nextcloud Desktop Client is a GUI application with a tray icon, a settings dialog and file manager integration, and it is built for one server product.

That means the trade is control against fit. With rclone you choose the schedule, the direction, the filters and the logging, and you are responsible for running it. With the desktop client, the project owns the sync loop, the conflict handling and the OS integration, and you get a window that shows what is happening. If you need to sync a headless server to Nextcloud on a timer, the desktop client is the wrong shape; if you need a user on a laptop to see their files appear in Finder or Explorer, rclone is the wrong shape.

A second comparison is with the Nextcloud web interface and mobile apps. Those are separate clients for separate contexts, and the desktop client's distinguishing feature is the local folder that stays in step. The README does not claim feature parity across clients, so do not assume a setting you see in the web interface has an equivalent in the desktop client.

## Maintenance, releases and the GPL-2.0 licence

The repository is not archived, and the most recent push recorded is 2026-09-23. Releases are frequent: v34.0.4 on 2026-09-16, v34.0.3 on 2026-08-26 and v34.0.2 on 2026-08-19. That cadence is what you are buying into. Upgrading means tracking point releases, and the README does not describe a long term support branch or a backport policy for older major versions, so the practical upgrade path is to move forward with the release line rather than stay behind.

The licence is GPL-2.0, stated in the README text and in the repository's COPYING file, with REUSE.toml and a LICENSES directory indicating the project follows the REUSE specification for licence metadata. The README's licence section is the standard GPL preamble: redistribution and modification are permitted under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 or later, with no warranty. If you ship the client inside a product, or modify it and distribute the result, the copyleft terms apply to that distribution. That is a description of what the licence says, not legal advice; if your situation is complicated, the question is for a lawyer, not this article.

One practical note on contributions: the README asks contributors to sign off commits with git commit -sm, which is the Developer Certificate of Origin convention rather than a contributor licence agreement. That affects people sending patches, not people using the client.

## Conclusion

Adopt the Nextcloud Desktop Client if you already run a Nextcloud Server and want the vendor's own sync client on Windows 10 or 11, macOS 13 Ventura or newer, or Linux. Do not adopt it if you need a client for a different server product, or if you want to build it without Qt6, OpenSSL, QtKeychain and SQLite already in place. Verify first that your server version matches the client you download, and read the desktop client manual at docs.nextcloud.com before filing an issue about sync behaviour.

## FAQ

### Where do I download the Nextcloud Desktop Client?

The README points to the official download page at nextcloud.com/install/#install-clients for the latest stable and recommended version. It also lists all releases on the nextcloud-releases GitHub organization and daily builds on download.nextcloud.com.

### Which operating systems does the Nextcloud Desktop Client support?

The README lists Windows 10, Windows 11, macOS 13 Ventura or newer, and Linux. Older macOS releases are not in the supported list.

### What do I need to build the Nextcloud Desktop Client from source?

The README lists cmake and clang, gcc or g++, Qt6 since version 3.14 (Qt5 for earlier versions), OpenSSL, QtKeychain and SQLite, plus Xcode on macOS. It also points to the KDE Craft blueprints repository for system requirements and build instructions.

### How do I run a local Nextcloud server to test the client against?

The README recommends the Nextcloud Docker image and gives a docker run command that publishes port 8080 and sets SQLITE_DATABASE, NEXTCLOUD_ADMIN_USER and NEXTCLOUD_ADMIN_PASSWORD. It notes the container is removed when the command is interrupted.

### What licence is the Nextcloud Desktop Client released under?

The README states GPL-2.0, with the standard preamble permitting redistribution and modification under the GNU General Public License version 2 or later and providing no warranty.

## Sources

- [License: GPL-2.0](https://github.com/nextcloud/desktop/blob/master/LICENSE)
- [nextcloud/desktop on GitHub](https://github.com/nextcloud/desktop)
- [Project website](https://nextcloud.com/install/#install-clients)
- [README](https://github.com/nextcloud/desktop/blob/master/README.md)
- [Releases](https://github.com/nextcloud/desktop/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nextcloud-desktop
