The Toolbelt

Everything else — built on the same backups

Six tools, one backup file. Each one works because the backup keeps your workspace's full structure.

Coverage Report — what's actually in this backup

Free

Counts and named exceptions for every backup — databases, rows, pages, views, relation links, files, comments, and the scope you picked. No percentages: a skipped file gets its name, its size, and its reason, because "99.8%" hides the one thing you needed to see. Anything that wasn't checked reads unknown, never a green check.

What's in your latest backup
Data 47 databases · 12,904 rows · 119 pages · 267 views
Relations 1,204 relation links — all resolvable inside this backup.
Files 79 captured · 1 over your 150MB limit isn't here: Quarterly Review.mp4 (312.4MB).
Comments Not included — this connection had no comment access when the backup ran.
Scope Everything shared with Restora.

Below it, the Restore Simulator answers the next question without touching your workspace: how many pages this backup would rebuild, how many relations it would relink, and how long it would take — as a range anchored to real measured runs, not a made-up number.

Drift Auditor — see exactly what changed

Free

Compares your backup to the live workspace and flags every structural difference — deleted or emptied databases, removed properties, retyped fields. Read-only; it never touches your live data. Run it anytime from the Restore screen.

What changed since this backup
Deleted "2025 Project Archive" — gone from your workspace, a restore rebuilds it.
Emptied "Clients" — all rows are gone; your backup still has every row.
Changed "Tasks" — "Status" changed type: Select → Text (backup has the original).
In sync "Products" — matches your backup.

Automatic backups, direct to your own cloud

Free & open source

The MIT-licensed CLI runs locally, on your schedule, and streams backups straight to your Google Drive, any S3-compatible bucket (R2, B2, Wasabi, Spaces), or a folder — your files never touch our servers. Setup takes about two minutes:

npx @restora/cli setup

Prefer hands-off? Restora Pro runs these same backups server-side — even when your laptop's off, and integrity-checks every one on arrival — files present and decodable, relations resolving. Same store-nothing model: your files still land only in your own Drive or S3.

🔒 View Google Drive & CLI Security Blueprint

🛡️ Privacy-First CLI Architecture

🔑 Non-Expiring Notion Token

Uses Notion's internal-integration token instead of OAuth. It never expires, meaning scheduled backups never hit the 30-day reconnect wall, and the token never leaves your local machine.

📁 Restricted Google Scope

Uses Google's strict drive.file OAuth scope. The Restora CLI can only see and manage files and folders that it created. It cannot read any other files in your Google Drive.

💻 100% Local Streams

Your credentials are encrypted and stored locally in ~/.restora/config.json (owner-only permission 0600). Backups stream directly from Notion to your storage; no intermediate server is ever involved.

💻 Full Command-Line Reference

Command Description
npx @restora/cli setup Launches the interactive setup wizard: link Notion, connect Google Drive, and schedule daily backups.
restora status Displays connection status, storage destination, local schedule, and last backup status.
restora backup Triggers an immediate backup and streams it to your configured Google Drive.
restora backup --databases <id1>,<id2> Backs up a specific subset of Notion databases (remembered for subsequent scheduled runs).
restora backup --to local --dir ./bk Performs an instant backup directly to a local directory instead of cloud storage.
restora connect s3 Launches the wizard to connect a custom AWS S3, R2, B2, Wasabi, or DigitalOcean bucket.
restora backup --to s3 Runs a manual backup streaming directly to your custom S3-compatible bucket.
restora backup --keep 30 Retention policy: maintains only the newest 30 backups in your target storage.
restora backup --keep-weeks 8 Retention policy: prunes backups older than 8 weeks (the absolute newest is always retained).
restora schedule --daily 02:00 Configures or removes (--remove) the local system daemon for daily backups at the specified time.
🐘

Built for large workspaces — no size cap

The CLI streams your workspace straight to disk as it's fetched — each database and file is written out and released, so even multi-GB workspaces back up without eating your RAM (it also raises Node's memory automatically as a safety net). Because it paces itself to Notion's rate limit (~3 requests/sec), a big workspace simply takes a while — that's normal, just let it run.

Want to back up only part of it? List your databases and pick a subset — the selection is remembered for scheduled runs too:

restora databases                    # list your databases + ids
restora backup --databases id1,id2   # back up just those

⚠️ CLI Limitations & Stated Disclaimers

  • Scheduled backups execute only when the host machine is powered on and awake at the scheduled time.
  • Scheduling registers a lightweight background runner with your OS scheduler (Windows Task Scheduler or system cron daemon). Local logs are saved in ~/.restora/backup.log.
  • Individual files larger than your plan's capture cap (20MB per file on Free, 150MB on Pro) are skipped and named in the backup's warnings — the link to the file is kept. Restoring files over 20MB uses Notion's multi-part upload, which Notion permits only on paid Notion workspaces; Notion's upload API also restricts some file extensions and content types, and a rejected file costs only that file — the restore names it and continues.
  • Notion's internal integrations have no workspace-wide grant — share a page with the integration in Notion (••• → Connections → add Restora) before its databases are visible. Share one top-level page once and every database nested under it is covered automatically — new databases you add later don't need to be re-shared individually.
🪣

Bring your own cloud

Free & Open Source

Don't want to use Google Drive? Restora seamlessly connects directly with any S3-compatible storage provider. All authorization keys, access credentials, and database backups are stored completely locally. Your data remains completely under your control, even if restora.cc vanished tomorrow.

Amazon S3 Cloudflare R2 Backblaze B2 Wasabi DigitalOcean Spaces
📋 View technical connection parameters for R2 / B2 / S3

What you'll need to connect

When you run restora connect s3 in your terminal, the wizard will ask for these 5 standard parameters. Your keys are encrypted locally and never transmitted to a Restora server.

Provider Target Endpoint URL Required IAM Bucket Permissions
Amazon S3 https://s3.<region>.amazonaws.com PutObject, ListBucket, DeleteObject
Cloudflare R2 https://<account-id>.r2.cloudflarestorage.com Read / Write (API Token)
Backblaze B2 https://s3.<region>.backblazeb2.com Read and Write (Application Key)
Wasabi https://s3.<region>.wasabisys.com s3:PutObject, s3:ListBucket
DigitalOcean https://<space-name>.<region>.digitaloceanspaces.com Full Control / Custom Token

📖 Quick-Link Connection Blueprints

📦 Amazon S3

Generate a standard IAM user key inside your AWS Console. Ensure your policy restricts access strictly to your backup bucket target to follow zero-trust best practices.

Region Example: us-east-1
View AWS Bucket Guide
Cloudflare R2

Navigate to your R2 Dashboard and click "Manage R2 API Tokens". Create a new token scoped to your target backup bucket with Edit access. Restora uses your custom Cloudflare Account ID to route the encrypted local stream.

Region Example: auto
View R2 Token Guide
🐝 Backblaze B2

Log into your Backblaze dashboard, go to "App Keys", and generate a new Application Key restricted to your specific your-backups-bucket bucket. Restora will automatically prompt you for your S3-compatible gateway credentials.

Region Example: us-east-005
View B2 Key Guide

Required inputs: Endpoint, Region, Bucket Name, Access Key ID, and Secret Access Key.

Security Best Practice: We highly recommend using access keys scoped strictly to a single bucket with only PutObject, ListBucket, and DeleteObject privileges active.

AI agents on your backups — never your live Notion

Read-only

A local, read-only MCP server lets Claude Desktop, Cursor, Cline, Continue, or Zed read your backup files — instant, offline, no API calls. Restora makes no AI calls and holds no API key; your agent can never modify, delete, or even see your live Notion. "What was in Projects last week?" · "What changed since this backup?"

restora mcp --print-config
Starter prompt — paste into any AI
You now have access to my Notion backups via the Restora MCP server.

Available tools:
• list_backups       — list local backup files with dates and sizes
• describe_backup    — full workspace map: databases, schemas, relations, views
• query_database     — rows of a database with resolved relations
• get_page           — a page's content rendered as Markdown
• search             — find pages by keyword across titles, properties, and content
• read_id_map        — old→new id map from a restore (for fixing broken links)
• run_drift_audit    — compare a backup against your CURRENT Notion (deleted/changed items)

Everything is read-only. You cannot change my Notion or my files.

Start by calling describe_backup to show me what's in my latest backup.

Letting an AI agent loose on your Notion? Snapshot first.

Agent insurance

Agents and bulk-edit scripts can rewrite your whole workspace in seconds. restora guard is the seatbelt: one command before the agent runs takes a full snapshot, one command after diffs everything it touched — rows added, edited, removed, schema changes — entirely offline. Broke something? The snapshot is a full backup: restore it. For pipelines, --json and --fail-on-changes make it a CI gate.

restora — guard
$ restora guard --label "before-cleanup-agent"
✓ Guard snapshot saved — 9 databases, 329 objects.
# … let the agent run …
$ restora guard --report
Comparing workspace to guard snapshot…
~ Tasks — 1 row added, 2 rows edited ("Ship v1 build", "Design homepage")
− Clients — property "Priority" removed from schema
= Projects, Meeting Notes — unchanged
Broke something? Restore the "before" snapshot at app.restora.cc.

Know the moment your data starts disappearing

Early warning

A backup protects you; an alert tells you when to use it — before Notion's 30-day trash window empties permanently. Restora registers deletion events via Notion's webhooks the moment they happen (e.g. "A bulk deletion just ran against the database 'Tasks'") and emails you a direct link to restore. Privacy-centric: we're notified that a deletion occurred, never the contents.

Restore

An export isn't a recovery plan.

A Notion export gives you files you can keep and read. But files alone don't recreate how your workspace worked — relations, rollups, views, and connected structure still need to be rebuilt.

Restora rebuilds databases, reconnects relations, restores views and hierarchy, and tells you what couldn't be recreated.

A completed restore in Restora: “Restore complete — created 2 databases in a new page in your Notion”, tiles for 2 databases, 10 relations, 5 of 5 views and 0 skipped blocks, a downloadable verification report, and one warning about a unique-ID prefix already in use.
The end of a real restore of the test workspace — including the warning it produced. Every count is engine output, not an estimate. What an export leaves behind →
Honest Scope

What Restora does — and doesn't

A disaster recovery tool is only worth trusting if it's completely transparent about its limits. Here are ours, up front.

Backs up

All databases (properties, relations, rollups, views, filters), standalone pages & wikis with their nesting hierarchy, and attachments (up to 20MB per file on Free, 150MB on Pro).

Doesn't back up

A page's edit history — Notion's API doesn't expose it to any backup tool. Files over your plan's per-file cap (20MB on Free, 150MB on Pro) are skipped and named in the Coverage Report, alongside any whose download failed — counted separately, because only one of the two is a limit. Page comments are captured, and replayed on restore as new comments with the original author named — resolved threads and comments anchored to selected text can't be re-anchored.

Good to know

Restored databases generate new page IDs in Notion, meaning edit history and authorships reset.

Restora protects you going forward. It cannot recover data you never backed up. No tool can once Notion's 30-day trash window closes. We prefer to tell you this upfront rather than surprise you later.

Comparison

Backup is easy. Restore is the hard part.

What a Notion export gives you, what most backup tools give you, and what Restora rebuilds. The figures in the Restora column are from our own July 4 validation run on a test workspace, not customer data.

Databases & Pages

Notion export
Exported
Other tools
Stored
Restora
Backed up & restored

Relations after restore

Notion export
Lost
Other tools
Relink by hand
Restora
Reconnected (138/138 in our test)

Rollups & Formulas

Notion export
Empty
Other tools
Not rebuilt
Restora
Recalculated (incl. rollup-of-rollup)

Views, Filters & Sorts

table, board, list, calendar, timeline & gallery — page layouts named in the report

Notion export
Lost
Other tools
Not restored
Restora
Rebuilt (9/9 in our test)

Page hierarchy

Notion export
Flattened
Other tools
Varies
Restora
Restored 15 levels deep

Recovery effort

Notion export
Days of manual re-linking
Other tools
Days of manual re-linking
Restora
One click — minutes, not days

Backup verification

Notion export
Other tools
Restora
Pro backups self-checked on every run; check any backup free

Drift detection

Notion export
Other tools
Restora
Free Drift Auditor

AI-agent snapshot guard

Notion export
Other tools
Restora
restora guard

Ask-your-backup (MCP)

Notion export
Other tools
Restora
Local & read-only — your AI reads backups

Open-source CLI

Notion export
Other tools
Rarely
Restora
MIT-licensed

Where your data lives

Notion export
Your ZIP
Other tools
Their servers, usually
Restora
Your disk / your cloud — we store nothing
Security & Privacy

Your data stays yours

Store-nothing by design. We can't read, sell, or lose what we never hold — and the CLI is free, MIT-licensed, and runs entirely on your machine, so you can verify it yourself.

Your token stays yours

For manual backups it lives only inside an encrypted, http-only session cookie — never written to a database, disk, or our logs. Turn on automatic scheduled backups and we keep one encrypted copy (AES-256-GCM, its own key) so runs can happen while you’re away — decrypted in memory for the run, and deleted the moment you disconnect. Everyone gets their own connection; there’s no shared key sitting on a server.

We never keep your pages — you hold the backup

No backups or page content sit on our servers: the web app downloads straight to your device, the CLI writes to your own cloud. If you turn on automatic scheduled backups, that's the one exception: your content still never touches our servers — the backup streams through and lands only in your Google Drive or S3 — but to run it while you're offline, we store your Drive/S3 connection keys encrypted (AES-256-GCM), plus schedule and run metadata (when it ran, how many rows, nothing about what's in them). Outside of that opt-in feature, the only thing we store is an optional alert opt-in — your email, a workspace ID, a plan reference. Your data never depends on our uptime.

Air-gapped, MIT-licensed CLI

Prefer zero middleman? npx @restora/cli runs entirely on your machine — Notion straight to your disk, Google Drive, or S3, never touching our infrastructure. Backups are plain, open JSON you keep — and if Restora ever went dark, your data doesn’t go with it: the MIT-licensed npm package still reads, searches and verifies every backup from your own disk. Converting one to Markdown, CSV/Excel or an Obsidian vault runs in your browser with our free tools — nothing uploaded. No lock-in.

Real files, not just text

Images, PDFs, attachments, icons and covers are captured as actual bytes (up to 20MB each on Free, 150MB on Pro) — so a restore rebuilds your workspace, not just the words in it.

The one thing we won't hide: when a backup or restore runs in the web app, your content passes through our server's memory for that moment before it streams to you — never saved, never logged, but in-flight. That's true of any hosted tool. Your content is never stored on our servers — scheduled backups stream through and land only in your Drive/S3. To run backups while you're offline we store your connection keys encrypted (AES-256-GCM), plus schedule/run metadata. If even the in-flight moment is past your line, the CLI keeps everything on your own machine. Same engine, zero middleman.

Proof

Real numbers or nothing.

No invented testimonials, no stock-photo customers. Here's what you can verify yourself, right now.

"I built Restora after watching Notion users lose database schemas that no export could put back. So this is the tool that puts them back."

— Founder of Restora