Don't trust your backups. Prove them.

RestoreProof restores your backups in a throwaway sandbox on your own servers, checks that the data is all there, and signs a report you can hand to an auditor. Automatically, on the schedule you choose.

  • Free plan, no credit card
  • Your data stays on your servers
  • Hosted in the EU
A RestoreProof run: the backup is fetched, restored in a sandbox, checked by two probes, and the result is signed.

Run #8c01fe7e

shop-db, nightly restore test

RunningCompleted
  1. Fetch backups3://backups/shop-db/2026-10-11.dump1.2 s
  2. Start sandboxpostgres:17-alpine, isolated3.2 s
  3. Restore the dumppg_restore, 2.3 GB47 s
  4. postgres probe42 tables, 10,000 rows sampledPass
  5. http probeGET /health returned 200 in 4 msPass

Proof report: Pass

Download

Ed25519 signature

salY1bqvZMMewcyTUBUwPQE18t7oC2ixh2/WYmimQJSpq8puYzAq4r8cehgPRnM5wkugs4rWstDjbKeoO4NTCw==

Restores and checks
PostgreSQLMySQLMariaDBMongoDBSQLitePocketBaseLDAPWordPressFile archives
Reads your backups from
Amazon S3S3-compatible storageLocal or NFS shareHTTP URL
Runs right after
ResticBorgVeeamDuplicatirclonepg_dumpyour own script

A green backup job proves nothing

Your backup tool tells you the copy was written. It can't tell you whether that copy restores. In Backblaze's State of the Backup 2024 survey, only 61% of restore attempts gave the expected result. Most teams find out on the day they need the data.

What your backup tool reports
  1. 02:00:01backup.sh started
  2. 02:00:02pg_dump shop > shop.dump
  3. 02:14:37upload s3://backups/shop-db/2026-10-11.dump (2.3 GB)
  4. 02:14:38exit code 0

Job completed successfully

What restoring the same file shows
  1. Fetch backups3://backups/shop-db/2026-10-11.dump
  2. Start sandboxpostgres:17-alpine, isolated
  3. Restore the dumppg_restore stopped at 81%: unexpected end of file
  4. postgres probe0 of the 42 expected tables

Run failed. You get an e-mail the same night.

What a green job can hide

None of these raise an alert in your backup tool. A real restore catches every one of them.

Why a successful backup proves nothing
  • The dump is truncated

    The file is there, but the restore stops halfway through.

  • A folder went missing

    A config change six months ago excluded a critical directory. Nobody noticed.

  • It depends on the old server

    The dump needs a role or an extension that only exists on the source server.

  • Nothing can read it

    The storage key was rotated: the job still writes, but the backups can no longer be read.

  • The key is gone

    The backup is encrypted, and nobody has the key any more.

  • The job quietly stopped

    The last backup is three weeks old. It restores fine, but the data is stale.

From backup to signed proof in three steps

No agent to write, no test environment to keep alive. The app guides you through each step and writes the commands for you.

app.restoreproof.io
RestoreProof deploy-a-runner wizard: the generated docker run command with the runner API key

The app writes the docker run command for you, API key included.

The evidence your auditor asks for

NIS2 and ISO 27001 expect you to test your restores, and to be able to show it. Every RestoreProof run leaves a signed report that says what was restored, which checks ran, what they measured and when.

  1. Every step, timedFetch, sandbox, restore: each step of the run with its duration and its outcome.
  2. Every check, with its numbersTables found, files counted, HTTP status returned. Not just a green light.
  3. A signature that can't be fakedThe runner signs the report with an Ed25519 key that never leaves your servers. Change one byte and the signature no longer matches.
  4. A file for your audit folderDownload the report and add it to your evidence. You can check the signature of any report from the app.
app.restoreproof.io
RestoreProof proof report: the steps of the run, the Ed25519 signature and each probe's result with its measurements

Your backups never leave your servers

The runner does all the work on your side. RestoreProof only receives the verdict: status, measurements and signature. No backup data, no database content, no password.

Your infrastructure

  1. Your backup storage

    S3 or compatible, local or NFS share, HTTP

  2. Runner

    Docker or Kubernetes, signs each report

  3. Throwaway sandbox

    Restore and probes, destroyed after the run

Stays with you: backups, database contents, secrets

Outbound only, over TLSStatus, measurements, signed report

RestoreProof

Hosted in the EU

  • Plans and schedules
  • Report history
  • Alerts
  • Signature checks

No port to open

The runner opens the connection itself. Nothing on your network is exposed.

Secrets read on your side

Environment variables or mounted files. We store the reference, never the value.

Nothing left behind

Each sandbox is destroyed at the end of the run. No data persists between two runs.

Read the security model

Set it up once, then let it run

Tests start on their own, alerts arrive when something breaks, and one screen tells you where you stand.

Starts right after your backup

Restic, Borg, Veeam, Duplicati, rclone or your own script: paste the snippet after your backup command and the test runs as soon as the backup is written.

app.restoreproof.io
RestoreProof connect wizard: the webhook URL and the Restic integration snippet

Or on a schedule

Every night, every week, every month or your own cron. The app shows the next run before you confirm.

app.restoreproof.io
RestoreProof scheduling wizard: how often to test a backup, with the next run date

One screen to know where you stand

The restorability score, your runners and your latest results, side by side.

app.restoreproof.io
RestoreProof dashboard: restorability score, active runners and successful runs

Catches the backup that stopped

Set a maximum age. If the newest backup is older, the test fails, even when the old one still restores.

Maximum age
26 h
Newest backup
21 days
Test
Fail

Ten probes included

Every plan, the free one included, gets all of them.

  • PostgreSQL
  • MySQL
  • MongoDB
  • SQLite
  • PocketBase
  • LDAP
  • X.509 certificate
  • HTTP
  • Archive integrity
  • Filesystem canary

Alerts where your team works

E-mail and signed webhooks on every plan. Discord and Telegram from Starter, Slack, Microsoft Teams and Matrix on Pro.

One runner per site or customer

Install a runner per site, environment or customer, label them, and choose which one runs each test. An audit log and a REST API come with every plan.

See it in sixty seconds

A backup runs, RestoreProof restores it in a sandbox on the customer's side, and the signed report arrives. Silent video, on-screen text in French.

restoreproof.io

Simple pricing, free to start

About €10 excl. VAT per proven workload per month on annual billing — your data never leaves your infrastructure.

MonthlyAnnual Save ~17%

Prices exclude VAT. The tax applicable to your country is added at checkout.

Free

Perfect for trying out RestoreProof

0 €/month

Free, with no time limit

Start for free
  • 1 restore plan
  • 1 backup source
  • 1 runner
  • 10 tests per month
  • Reports readable for 7 days

Starter

For growing teams with multiple environments

49 €excl. VAT /month

billed 588 € excl. VAT per year

Get started
  • 5 restore plans
  • 5 backup sources
  • 3 runners
  • 500 tests per month
  • Reports readable for 90 days
Best for audits

Pro

For organizations with advanced compliance needs

249 €excl. VAT /month

billed 2,988 € excl. VAT per year

Get started
  • 25 restore plans
  • 25 backup sources
  • 10 runners
  • 5,000 tests per month
  • Reports readable for 1 year

Business

For MSPs and enterprises with compliance requirements

Contact us

Contact us
  • Plan, source and runner counts to fit
  • Report retention to fit
  • All notification channels
  • Unlimited notification e-mails
  • SLA & priority support

Every account starts on the Free plan, no card needed. Move to a paid plan from the app whenever you need more, and cancel at any time.

Compare every plan

Questions before you start

Another question? Write to us at hello@restoreproof.io, a person answers.

No. RestoreProof doesn't take backups: it tests the ones you already make, with Restic, Borg, Veeam, Duplicati, rclone, pg_dump or any tool that writes to S3, a local or NFS share or an HTTP URL.

What's next

Here is what we are working on. We announce no date, and none of it is sold in today's plans.

  • Coming soon

    Standalone runner binary

    Install the runner without a Docker image, on a plain Linux machine or as a systemd service.

  • Coming soon

    Google Cloud Storage and Azure Blob

    Read backups straight from GCS and Azure Blob Storage, the way the runner already reads S3, a local or NFS share and an HTTP URL.

  • Coming soon

    Backups from the Windows world

    Restore and verify a SQL Server backup, read network shares, and prove the freshness and completeness of the exports business applications produce.

  • Coming soon

    Virtual machine and container backups

    Prove a backed-up VM image is usable without booting it: full extraction, healthy filesystems, a coherent system, and the databases it holds brought up in a sandbox.

Find out today whether your backups restore

Create a free account, install the runner with the command the app gives you, and your first signed report comes with the first run.

  • Free plan, no credit card
  • Your data stays on your servers
  • Hosted in the EU