Restic vs BorgBackup
Both are excellent: deduplicating, encrypted, snapshot-based backup tools that any homelab can rely on. The choice usually comes down to where your backups go. Restic speaks natively to cloud object storage like S3 and Backblaze B2 and runs as a single cross-platform binary, which makes it the easier pick for cloud targets. Borg gives you the tightest deduplication and compression but wants a local path or an SSH host with Borg installed on the other end. Pick by backend first.
Updated 2026-06-04 · by Jonathan Caruso
Side by side
| Restic | BorgBackup | |
|---|---|---|
| Deduplication | Yes, content-defined | Yes, very efficient |
| Encryption | Yes, by default | Yes, by default |
| Compression | Yes (zstd, since v0.14) | Yes, long-standing |
| Cloud object storage | Native (S3, B2, Azure, GCS, more) | Not directly; needs rclone or a Borg host |
| SSH/local target | Yes (SFTP, local, REST) | Yes; SSH needs Borg on the remote |
| Platform | Single Go binary, cross-platform | Python; Linux/macOS focus |
| GUI options | Backrest and others | Vorta |
| Hosted services | Any S3-compatible provider | BorgBase, rsync.net |
The backend decides it
The single most useful question is where the backups will live, because that narrows the choice fast. Restic was built with cloud object storage as a first-class target. It writes directly to Amazon S3, Backblaze B2, Wasabi, Azure Blob, Google Cloud Storage, plus SFTP, local disk, and its own REST server, with no helper needed. If your plan is to push encrypted backups to cheap object storage, Restic is the natural fit.
Borg does not talk to object storage directly. Its remote model is SSH to a machine that also has Borg installed, which it uses to do deduplication on the server side efficiently. That is powerful for a backup server you control, and hosted Borg providers like BorgBase and rsync.net exist precisely to be that endpoint. To push Borg to S3-style storage you bolt on rclone, which works but adds a moving part. So: object storage leans Restic, an SSH or local Borg repo leans Borg.
Deduplication and storage efficiency
Both deduplicate by splitting data into content-defined chunks and storing each unique chunk once, so backing up the same files repeatedly costs little extra space and unchanged data is never re-sent. In practice both are very space-efficient, and for most homelab data the difference is modest.
Borg has a long reputation for the tightest storage efficiency, with mature deduplication and compression that squeeze repositories hard. Restic historically lacked compression, which narrowed the gap in Borg's favor, but Restic added zstd compression in version 0.14, closing most of it. Today both compress and deduplicate well; if absolute minimum repository size is your priority, Borg still has a slight edge, but it is no longer a decisive one.
Platform and operations
Restic ships as a single static Go binary with no dependencies and runs on Linux, macOS, and Windows, which makes it trivial to drop onto any machine, including Windows clients that Borg does not target. Borg is Python-based and centered on Linux and macOS; running it on Windows is awkward. If you need to back up mixed operating systems with one tool, that alone can decide it.
Operationally both are command-line tools you wrap in a script and a scheduler, with snapshots you can list, mount, and prune by retention policy. Each has community front ends if you want a UI: Backrest is a popular web UI for Restic, and Vorta is a desktop GUI for Borg. Whichever you choose, set a retention policy, prune on a schedule, and test a restore, because an untested backup is a hope, not a backup.
Encryption and trust model
Both encrypt by default and are designed so the repository can live on storage you do not fully trust. Data and metadata are encrypted client-side before they leave the machine, so a compromised S3 bucket or backup host exposes ciphertext, not your files. This is what makes pushing either tool to cheap third-party storage reasonable.
The flip side of client-side encryption is that the key is everything. Lose the Restic key or the Borg passphrase and the backups are unrecoverable by design; there is no reset. Store the key or passphrase somewhere separate from the backups themselves, such as a password manager and a second offline copy, so a single failure does not take both your data and your only way back to it.
Following the 3-2-1 rule
Whichever tool you pick, the point is a real backup strategy, not just running a command. The 3-2-1 rule is the standard target: three copies of your data, on two different media, with one off-site. Both tools support this naturally, with one repository on a local disk or NAS for fast restores and another in the cloud or on a remote host for the off-site copy.
This is also where the backend choice and the tool choice meet. A common, dependable setup is Restic to Backblaze B2 for the off-site copy plus a local repository for speed, or Borg to a home backup server plus a hosted Borg provider off-site. Either pattern gives you the off-site protection that matters when the risk is fire, theft, or ransomware rather than a single failed drive.
Where Restic wins
- Native support for S3, B2, Azure, GCS, and other object storage.
- Single cross-platform Go binary, including Windows.
- Compression added in v0.14, closing most of the gap with Borg.
Where BorgBackup wins
- Among the most storage-efficient dedup and compression available.
- Efficient server-side deduplication over SSH.
- Long, proven track record with hosted options like BorgBase and rsync.net.
Which to pick, by situation
| Your situation | Pick | Why |
|---|---|---|
| Backups to S3, B2, or other object storage | Restic | Native object-storage support with no extra tooling. |
| Backing up to an SSH or local Borg server | BorgBackup | Server-side dedup over SSH is its core strength. |
| Mixed OS including Windows clients | Restic | A single cross-platform binary covers Windows too. |
| Minimum possible repository size | BorgBackup | A slight edge in deduplication and compression efficiency. |
| Want a hosted off-site target | Either | Any S3 provider for Restic, or BorgBase and rsync.net for Borg. |
The verdict
Choose by backend. Restic is the easier pick when backups go to cloud object storage like S3 or Backblaze B2, or when you need to cover Windows alongside Linux and macOS, thanks to its single cross-platform binary. Borg is the choice for backups to a local disk or an SSH host you control, where its server-side deduplication and slightly tighter storage efficiency shine. Both encrypt and deduplicate well; whichever you pick, follow 3-2-1 and test your restores.
Choose Restic if your backups go to cloud object storage, or you need one tool that also covers Windows clients.
Choose BorgBackup if you back up to a local or SSH-reachable Borg repository and want the tightest storage efficiency.
Official links
BorgBackup
FAQ
Should I use Restic or Borg?
Decide by where your backups go. For cloud object storage like S3 or Backblaze B2, or for backing up mixed operating systems including Windows, choose Restic. For backups to a local path or an SSH host you control where you want maximum storage efficiency, choose Borg. Both are excellent and reliable.
Can Borg back up to S3?
Not directly. Borg's remote model is SSH to a machine running Borg, not object storage. You can pair Borg with rclone to reach S3-style storage, but that adds complexity. If object storage is your target, Restic supports it natively and is the simpler choice.
Does Restic have compression?
Yes, since version 0.14 Restic supports zstd compression. Earlier versions did not, which is the origin of the old claim that Borg saved more space. With compression enabled, the storage difference between the two is now small.
Which deduplicates better?
Both deduplicate well using content-defined chunking. Borg has a slight edge in overall storage efficiency and a long reputation for it, but with Restic's added compression the gap is minor for most data. It is rarely the deciding factor.
Are my backups encrypted?
Yes, both encrypt by default, client-side, before data leaves your machine. That is what makes it safe to store either tool's repository on third-party or untrusted storage. Guard the key or passphrase carefully, because losing it means the backups cannot be recovered.
Do they have a graphical interface?
Both are primarily command-line tools, but community GUIs exist. Backrest is a popular web UI for Restic, and Vorta is a desktop GUI for Borg. Many people simply script the CLI and schedule it with cron or systemd timers.
What is the 3-2-1 backup rule?
Keep three copies of your data on two different types of media with one copy off-site. Both Restic and Borg support this, typically with one local repository for fast restores and one remote or cloud repository for the off-site copy that protects against fire, theft, or ransomware.