Source: https://wealthfolio.app/docs/guide/data-export/

# Export & Backup

Export data to CSV or JSON, create profile backups, and restore a portable backup on another device.

* * *

Last updated October 14, 2026

Open **Settings → Backup & Export** in the profile you want to back up. The **Backup** tab manages saved snapshots, portable exports, and restores; the **Export** tab exports data for use elsewhere.

* * *

## 1 · Run an export

1.  Open **Settings → Backup & Export → Export**.
2.  Choose **CSV** or **JSON**, then select **Accounts**, **Activities**, **Holdings**, **Goals**, or **Portfolio History**.
3.  Save the file offered by your platform. For a restorable copy of the whole profile, use the **Backup** tab instead.

![Wealthfolio Exports](https://assets.wealthfolio.app/images/docs/export.webp)![Wealthfolio Exports](https://assets.wealthfolio.app/images/docs/export-dark.webp)

* * *

## 2 · Pick the right format

| Format | When to use |
| --- | --- |
| **CSV** | Loading one table into a spreadsheet or another tool. |
| **JSON** | Programmatic processing; preserves nested structures that CSV flattens out. |
| **Password-protected `.wfbackup`** | Keeping a restorable profile copy outside the installation or moving it to another one. |
| **Encrypted `.wfrec`** | A downloaded cloud restore point, opened with your recovery code or a linked device. |
| **Unencrypted `.db`** | An advanced, unprotected database export. Anyone with the file can read its contents. |

For a **backup before a big change**, create a snapshot on the **Backup** tab, then export it as a password-protected `.wfbackup` and save it outside the installation. CSV and JSON exports cannot restore a complete profile.

* * *

Exported activity amounts use the saved final total, including fees and taxes. Do not subtract those charges again in a spreadsheet. Splits and security transfers have special meanings; see [Activity Fields](https://wealthfolio.app/docs/concepts/activity-fields/).

## 3 · Round-trip restore

### Create a backup

Open **Settings → Backup & Export → Backup** and select **Back up now**. The snapshot appears in the list for the current profile. Select **Export** on that snapshot to save a portable copy. Choose a backup password and keep it with your recovery information; Wealthfolio cannot reset it. You can also export an unencrypted `.db` if you need one.

The initial snapshot stays in the current installation. Desktop and iOS use native file handling for the exported copy; web downloads it through the browser. Check that the export was saved somewhere independent of the device or server. In web mode, **Save original snapshot** is an advanced option: it downloads the original database with its existing encryption, which may require the original server master key to read.

Desktop and iOS support restore in the app. Web restore uses an offline server command. Each profile has its own database; repeat the backup for every profile you need to protect.

### Back up multiple profiles

Profiles keep their portfolio data separate. Switch to each profile and create and export its own backup. Restoring a backup replaces only the **selected destination profile**; it does not recreate every profile in the installation. Keep the backup password for each protected export. If you also back up the installation files, include the profile registry and every profile directory, as described [below](https://wealthfolio.app/docs/guide/data-export/#4--where-the-database-files-live).

### Database encryption and backup passwords

In **Settings → General**, native apps can optionally encrypt the current profile’s local database using a key stored on the device. App lock and database encryption are separate settings. Saved snapshots retain the database’s encryption state when they were created, so an older snapshot may still be unencrypted after you enable encryption.

A password-protected `.wfbackup` uses the password chosen during **Export**, separate from the profile password and installation key. Keep that password: Wealthfolio cannot reset it. An unencrypted `.db` export can be read by anyone with the file, even if the live database is encrypted. For self-hosted servers, database encryption is configured [offline](https://wealthfolio.app/docs/guide/self-hosting/configuration/#wf_db_require_encryption).

### Restore in the app

On desktop or iOS, open the **Backup** tab in the destination profile. Select **Restore from file** for a `.wfbackup` or unencrypted `.db`, or **Restore** on a saved snapshot. Enter the export password if prompted, review the backup preview, then confirm the replacement.

Restoring replaces your current database with the backup; it does not merge the two. Save a current backup before proceeding. CSV and JSON exports cannot be used for a full restore.

Wealthfolio saves a snapshot before replacing the destination profile and reopens the app after restoration. Check your accounts and latest activities, then reconnect external services as needed.

### Restore a self-hosted instance

Web mode has no restore upload action. Stop Wealthfolio (or its container) and run `wealthfolio-server db restore <file>` with the same storage settings, master key, and encryption policy used by the server. Without `--yes`, the command validates the backup and shows a summary without replacing data. Add `--yes` after reviewing it; use `--profile <UUID>` to select a profile other than the default. A protected `.wfbackup` requires `--password-stdin` with the password supplied through a pipe or redirected file. The command saves a pre-restore snapshot. Preserve the complete installation directory and master key, then verify the restored profile after restarting. See [Storage configuration](https://wealthfolio.app/docs/guide/self-hosting/configuration/#wf_data_dir).

* * *

## 4 · Where the database files live

Use the **Backup** tab for restores on desktop or iOS. If you are recovering installation files manually, close Wealthfolio first and preserve the **whole data directory**, including `profiles.json`, `profiles/`, and any legacy `app.db`. Include `profiles.json.bak` if present. New profiles store their database at `profiles/<uuid>/app.db`. The Personal profile migrated from an earlier version may still use the original root-level `app.db`. Replacing that root file will not restore a newer profile. Default desktop data directories are:

-   **macOS:** `~/Library/Application Support/com.teymz.wealthfolio/`
-   **Windows:** `%APPDATA%\com.teymz.wealthfolio\`
-   **Linux:** `~/.local/share/com.teymz.wealthfolio/`

Keep the existing installation files until you have verified the recovery. Encrypted database files also need their original installation key. For moving data to another installation, export a password-protected `.wfbackup` and use **Restore from file** instead of copying the live database.

* * *

## 5 · Automatic backups without Connect

CSV/JSON exports and local snapshots are manual. Connect provides automatic encrypted cloud backups, described below. For an automatic copy managed by your own backup tools instead:

-   **Self-hosted:** snapshot the data volume with your container/host’s backup tool (e.g. `restic`, `borg`, Proxmox snapshots, Unraid backup plugins).
-   **Desktop:** include the Wealthfolio data directory in your normal backup tool (Time Machine, Windows File History, Restic).

Both approaches give you point-in-time recovery without trusting any cloud, and they keep working even if Wealthfolio’s export UI changes.

* * *

## 6 · Encrypted cloud backup

Cloud backup is in **Settings → Backup & Export → Backups** in Wealthfolio 3.10 and later. It is included in Connect Basic and higher and is off until you enable it. Local snapshots and manual exports remain available without Connect.

1.  On the device or server that should run backups, sign in to Connect in the profile you want to protect.
2.  Choose **Set up cloud backups** and save the recovery code outside this installation.
3.  Confirm that you saved the code, then choose **Turn on backups**. This installation and profile become your backup source, and the first upload starts right away.
4.  For automatic daily backups, keep Wealthfolio open and online with that profile unlocked; a self-hosted server only needs to be running. Wealthfolio saves a complete encrypted cloud copy when a backup is due. After downtime, the next backup runs when the source becomes available. On mobile, open or return to Wealthfolio and keep it open while the backup uploads.

Each Connect account has one backup source: one profile on one installation (desktop, mobile or self-hosted server). Backups are not kept per device. If you turn on backups from another installation, it becomes the source; the previous one stops backing up, and its earlier restore points stay in the same list. Without device sync, data that exists only on other devices is not backed up. To back up another profile, sign it in to its own Connect account; within one installation, a Connect account can be signed in to only one profile. Your household members cannot see your backups. Cloud backup covers the selected profile’s complete database, including settings and configuration. Device credentials, API keys from the secret store, other profiles, and the profile registry are excluded.

Up to 30 restore points are retained over 30 days. The latest successful point is kept while your paid access continues, even if the source has been offline longer. An encrypted point may be at most 256 MiB, and its decoded database at most 512 MiB. The **Cloud backups** card shows the **Last backup** and, when one is scheduled, the **Next backup**. Each restore point contains a complete copy, including prices and settings. An offline or locked source cannot upload; mobile backups run while the app is open.

After the first backup, the source can also back up on demand: choose **Back up now** in the cloud backup menu. You can make up to 3 manual backups a day, and each one counts toward the 30 restore points.

### Recovery and restore

The backup key is independent of device sync and the installation’s database key. Linked trusted devices can obtain it using an encrypted key envelope. If access is not available yet, open a linked device that already has backup access and retry. You need your recovery code whenever no accessible device can provide backup access, including when you choose not to link a replacement device. Wealthfolio cannot recover the key for you if both the code and all unlocked devices are lost. Reissuing a recovery code preserves existing cloud points, but older **downloaded** `.wfrec` packages still need the code embedded in their original recovery envelope. New downloads use the new code. Replacing the code does not revoke previously obtained backup keys or copied recovery envelopes.

Download a point as one encrypted `.wfrec` file for storage outside Connect. On desktop, cloud restore uses the same preview, confirmation, safety backup, and rollback flow as a local portable restore. Only the selected destination profile is replaced. After restoring, reconnect Connect rather than replaying historical sync state. If another trusted device exists, link to it and review the replacement confirmation. If this was your only sync device, use the confirmed sync reset flow to start a new baseline. Restore does not automatically replace data on other devices.

Mobile supports backup capture while open, setup, recovery-code entry and encrypted package download. Cloud portfolio restoration is currently available in the desktop app; mobile users should restore on a computer. No backups run while mobile is suspended.

For a self-hosted server, download the package and stop the server before running the existing offline restore command against a healthy, initialized destination:

```bash
wealthfolio-server db restore /safe/path/wealthfolio-backup.wfrec --profile <PROFILE_ID> --recovery-code-stdin
```

Select the destination profile explicitly. Review the command’s validation output, then repeat with `--yes` only when you are ready to replace that profile. Pipe the code from a protected source on standard input; the command rejects terminal input. Do not put it in command arguments or shell history. The server retains its own database encryption key. Online database replacement is unavailable in the web app.

Choose **Pause backups** to stop new backups for your Connect account. Saved copies still follow the retention policy; your latest backup is kept while your subscription is active. To resume, turn backups on again from the device you want as the source. Canceling renewal keeps paid features available until the subscription ends. When paid access ends, uploads stop and existing points remain downloadable for 30 days before scheduled deletion. Download any `.wfrec` copies you want to keep before that period ends; local data and downloaded packages remain yours. If backups were on when paid access ended, renewing resumes them from the same source. Renewing cannot bring back deleted cloud copies. The encrypted recovery key record remains until account deletion. Deleting points requires a valid Connect session and explicit confirmation, and removes their listing before storage cleanup. Replacing a recovery code requires a recent sign-in.

* * *
