I built a free desktop GUI app that recovers n8n workflows and credentials directly from database.sqlite

Hi everyone,

I built a desktop GUI app, not a CLI, as this is already in place. This graphical application solves the cross-instance migration problem in a few clicks.

The killer use case (and why I built it)

You have a copy of database.sqlite from an n8n instance, but you don’t have a running n8n you can point the CLI at. Maybe the box died, maybe it’s a Docker volume snapshot, maybe it’s a backup from six months ago, maybe you just never ran n8n export:workflow because you didn’t realise you’d need it. Either way, you now have a SQLite file in front of you and no obvious path back to your flows.

The app reads that database directly. Pick the file in a dialog, get a list of every workflow and credential it contains, click Export. Done. You don’t need to spin up an n8n to read your own data back out.

What it does, exactly

Two source modes that the app can flip between without disconnecting:

  • SQLite database file — read directly. Required if you want credentials, since n8n’s Public API doesn’t expose a credential read endpoint.
  • Remote n8n via Public API — URL + API key. Workflows only.

What you can do per source:

Operation from a SQLite DB file from a connected remote n8n
List / search workflows yes yes
Export workflows to JSON files yes yes
Push workflows to a remote n8n via API yes yes
Import local workflow JSON files into the connected instance yes (dedicated Import tab)
List / search credentials yes (no credential read endpoint in the n8n Public API)
Export credentials to JSON (encrypted blob) yes
Export credentials to JSON (decrypted, with the source encryption key) yes
Push decrypted credentials to a remote n8n via API yes

Workflow JSON is written in the n8n editor’s “Download” format, so files paste straight into the canvas, import via the GUI’s “Import from File”, or work with n8n import:workflow. Server-managed fields (parentFolderId, activeVersionId, etc.) are stripped automatically so cross-instance imports don’t break.

Credential JSON has two shapes:

  • Encrypted blob — same as n8n export:credentials produces. Useful for restoring onto an instance that shares the same encryption key.
  • Decrypted — the app decrypts in-process with the source encryption key you supply. The plaintext JSON imports cleanly with n8n import:credentials on the target, which re-encrypts with its own key on the way in. This is the path for cross-instance migration.

Stuff that’s properly built

  • Windows binaries are code-signed via Microsoft’s Azure Trusted Signing — SmartScreen and standard antivirus tools recognise the signature on first run. Cert chain ends at the verified identity “David Soden”.
  • In-app auto-update from GitHub releases. The app downloads and applies the new version directly; no browser bounce.
  • Built-in Logs button surfaces the application log file for support requests.
  • macOS builds will be code-signed and notarized.

Where to get it

Landing page with download buttons: https://n8n-export-wizard.davidsoden.com/

Releases: Releases · dtsoden/n8n-export-app · GitHub

What I want from you

  • Bug reports — especially around credential decryption on different n8n versions or unusual workflow shapes.
  • Edge cases I haven’t thought of (folders, archived workflows, workflow_history, credential schemas added in newer versions).
  • “I wish it also did X” feedback before I lock the v1.x feature surface.

Reply here, open an issue on GitHub, or DM me. Thanks for taking a look and I hope is help someone…

2 Likes

Thanks @Miliaga

Thanks for your effort. I will look at

Hey everyone - I just added support for Postgres now!

You can truly migrate between n8n instances or same instance to same instance where you may be going from SQLite to Postgres.

Dropping version 1.0.3 now…