BorgBackup vs Restic vs Kopia

Updated June 2026
BorgBackup delivers the best storage efficiency and compression options, Restic offers the broadest platform and backend support with mandatory encryption, and Kopia provides a built-in web interface with per-directory policies and centralized server mode. All three are excellent tools, and the right choice depends on your operating system, storage backend, and whether you need a graphical interface.

Architecture and Language

BorgBackup is written in Python with performance-critical sections implemented in C and Cython. This gives it excellent compression performance and low memory overhead during deduplication, but it requires a Python runtime on the machine where it runs. Installation is straightforward on Linux and macOS where Python is standard, but it is not available on Windows.

Restic and Kopia are both written in Go, which compiles to a single static binary with no dependencies. You download one file, make it executable, and it works. This makes deployment trivially simple, especially on minimal server environments or containers where installing a Python runtime would be unwelcome overhead. Both tools produce native binaries for Linux, macOS, Windows, and FreeBSD.

The Go-based architecture of Restic and Kopia also means they handle concurrency differently from Borg. Go's goroutines allow parallel chunk processing and upload, which can improve performance on multi-core systems and high-bandwidth network connections. BorgBackup is single-threaded for most operations, though it parallelizes compression when using certain algorithms.

Deduplication and Compression

All three tools use content-defined chunking (CDC) for deduplication, but their implementations differ in ways that affect storage efficiency and performance.

BorgBackup uses the Buzhash rolling hash algorithm for chunking, with configurable minimum, maximum, and target chunk sizes. Its default chunk size settings produce chunks averaging around 2 MB, which provides a good balance between deduplication ratio and metadata overhead. Borg also applies compression before deduplication, which means similar content compressed with the same algorithm produces identical chunks more reliably.

Restic uses the Rabin fingerprint algorithm with a fixed polynomial for content-defined chunking. Its chunks average around 1 MB, which is smaller than Borg's default. Smaller chunks improve deduplication at the cost of more metadata overhead. In practice, the difference between Borg and Restic deduplication ratios is typically 5-15%, with Borg slightly ahead on most workloads, particularly on large files with small changes like database dumps or virtual machine images.

Kopia uses a content-defined chunking approach similar to Restic's, with configurable chunk sizes. It applies compression (zstd by default) and deduplication in a pipeline that is efficient for most workloads. Kopia's per-directory policy system lets you set different compression algorithms for different directories, which is useful when you have mixed content types.

For compression specifically, BorgBackup has the most options: lz4 (fastest), zstd (balanced), zlib (compatible), and lzma (maximum compression). You can even set compression on a per-file basis using pattern matching. Restic added zstd compression in version 0.16 and also supports no compression. Kopia defaults to zstd and supports several compression algorithms through its policy system.

Encryption

Restic takes the strongest stance on encryption: every repository is encrypted, always. There is no option to create an unencrypted backup. Restic uses AES-256-CTR for data encryption and Poly1305-AES for authentication. The encryption key is derived from a user-provided password using scrypt, which makes brute-force attacks computationally expensive. This approach means there is zero risk of accidentally creating an unencrypted backup, but it also means you cannot inspect backup contents without the password, even on a trusted server.

BorgBackup offers three encryption modes: authenticated encryption (AES-256-CTR with HMAC-SHA256), authenticated-only (data integrity verification without encryption, useful for trusted local storage), and no authentication (not recommended). Borg also supports keyfile-based authentication, where the encryption key is stored in a separate file rather than derived from a password. This is more secure for automated systems because the key does not need to be stored in a script.

Kopia supports AES-256-GCM encryption and derives keys from a user password. Like BorgBackup, encryption is optional but strongly recommended. Kopia also supports connecting to a central server with authentication, which provides an additional layer of access control beyond repository encryption.

Storage Backend Support

This is the category with the largest practical difference between the three tools.

BorgBackup supports only two storage targets: local filesystems and SSH remotes. If you want to store backups on an SSH-accessible server, Borg works perfectly. If you want to back up directly to Amazon S3, Backblaze B2, or any cloud object storage, Borg cannot do it natively. The common workaround is to use rclone to mount cloud storage as a local filesystem, but this adds a dependency and can introduce reliability issues. For the Linux server backup use case where SSH access is standard, this limitation rarely matters.

Restic natively supports local filesystems, SFTP, Amazon S3, Backblaze B2, Microsoft Azure Blob Storage, Google Cloud Storage, OpenStack Swift, and any S3-compatible provider (including MinIO, Wasabi, and DigitalOcean Spaces). It also supports rclone as a backend, which opens up access to virtually every cloud storage service in existence. This breadth makes Restic the default choice when cloud storage is part of your backup strategy.

Kopia matches Restic's backend support almost exactly: local, SFTP, S3, B2, Azure, GCS, and S3-compatible providers. Kopia additionally supports its own server mode as a backend, where a central Kopia server handles storage and client machines connect to it over HTTPS. This server mode is unique among the three tools and is particularly valuable for managing backups across multiple machines without giving each machine direct access to the storage backend.

Performance Benchmarks

Performance varies significantly depending on the workload, hardware, and storage backend. The following observations reflect typical real-world usage patterns rather than synthetic benchmarks.

Initial backup speed: Restic and Kopia are generally faster than BorgBackup for initial full backups because they can parallelize chunk processing and upload. On a 100 GB dataset over a gigabit network, Restic typically completes in 20-30% less time than Borg. Kopia performs similarly to Restic on most workloads.

Incremental backup speed: All three tools are fast for incremental backups because they only process changed files. BorgBackup has a slight edge here because its file change detection is very efficient, and its compression pipeline is highly optimized. For daily backups of a workstation with 1-2 GB of changes, all three complete in under a minute.

Memory usage: BorgBackup is the most memory-efficient, typically using 200-400 MB for repositories up to several terabytes. Restic's memory usage scales with repository size and can reach 1-2 GB for large repositories with millions of chunks. Kopia falls between the two. If you are backing up on a memory-constrained system like a small VPS, Borg's lower memory footprint is a meaningful advantage.

Restore speed: All three tools restore at roughly the same speed, which is primarily limited by storage backend throughput and disk write speed. Restoring from local storage is fast across the board. Restoring from cloud storage depends on download bandwidth and the number of chunks that need to be fetched.

User Interface and Management

BorgBackup and Restic are command-line tools with no built-in graphical interface. Both have clean, well-documented CLIs that experienced users find efficient. Third-party frontends exist for both: borgmatic wraps BorgBackup with configuration-file-driven management, and resticprofile does the same for Restic. Neither provides a real-time GUI for browsing or managing backups.

Kopia includes both a CLI and a built-in web UI. The web UI lets you create and manage repositories, define snapshot policies, browse backup contents, and restore files, all from a browser. For users who are not comfortable with command-line tools, this is a significant advantage. Kopia's server mode extends this further by providing a centralized web interface for managing backups across multiple machines.

Community and Development Activity

Restic has the largest community by most metrics: over 27,000 GitHub stars, an active forum, and frequent contributions from a broad developer base. It has a conservative release cadence focused on stability and correctness.

BorgBackup has a dedicated community and stable development pace. Its GitHub repository has over 11,000 stars. The project has been under active development since 2015 (building on the earlier Attic project from 2010), making it one of the more mature options. The companion tool borgmatic has its own active community.

Kopia is the newest of the three, started in 2019. It has over 8,000 GitHub stars and a growing community. Development activity is high, with frequent releases adding new features and improvements. Version 0.23, released in early 2026, focused on maintenance improvements and stability.

Which Should You Choose?

Choose BorgBackup if you are on Linux or macOS, you store backups over SSH (your own server, a VPS, or a storage provider like rsync.net), and you want maximum storage efficiency with the most flexible compression options. Borg is the right tool when you control your storage backend and prioritize minimizing storage costs.

Choose Restic if you need cross-platform support, you want to back up directly to cloud object storage, or you want mandatory encryption with no configuration required. Restic is the best default choice for new users and mixed-platform environments.

Choose Kopia if you want a graphical interface, you need centralized backup management for multiple machines, or you need per-directory snapshot policies. Kopia is ideal for small teams that want self-hosted backup management without the complexity of enterprise tools like Bacula.

Key Takeaway

All three tools produce reliable, encrypted, deduplicated backups. The deciding factors are platform support (Borg is Linux/macOS only), storage backend (Borg is SSH only), and management needs (Kopia has a GUI and server mode). If none of those constraints apply, Restic is the safest default.