Receipts
Every claim on this site was executed
A backup tool that asks for your trust should show its work. Each row below is a real run against a real database, with the date, versions and timings. When a test contradicted our own docs, we corrected the docs — those rows are marked.
Compatibility, proven by execution
| Claim | Test | Result |
|---|---|---|
| Supabase via Session Pooler (5432) | 2026-09-04 · live Supabase project (PG 17.6, us-west-2) · full drill | ✓ dump 27 s, restore < 1 s, RLS + auth schema verified |
| Supabase direct host is IPv6-only | 2026-09-04 · DNS: no A record, AAAA only · connection from IPv4 network | ✓ confirmed unreachable — use the Session Pooler |
| Neon via the direct (non-pooled) string | 2026-09-04 · live Neon project (us-east-2) · full drill, scale-to-zero wake | ✓ passed |
| Self-hosted, no Docker required | 2026-09-03 · macOS, initdb throwaway clusters (Postgres.app 10–17) | ✓ 315-table / 1.8 M-row GIS database proven in 90 s |
| PostGIS, pgrouting, RLS-heavy databases | 2026-09-04 · 937 MB production-grade dev DB, 370 tables, 84 RLS policies | ✓ full cloud cycle: dump → AES-256-GCM → R2 → restore → verified, 5 m 40 s |
Old archives with no live source (pgproof verify) | 2026-09-03 · nightly AWS production dump, 249 tables | ✓ proven restorable in 19 s |
Claims our own tests corrected
We published two warnings based on well-known 2024-2025 behavior. Testing them in 2026 showed the ecosystem moved — so we fixed our pages:
- “Supabase's Transaction Pooler (6543) breaks pg_dump” — a small dump now succeeds (Supavisor gained prepared-statement support). Guidance unchanged — use 5432 — but the failure is no longer guaranteed. Updated page.
- “Neon's pooled string breaks pg_dump” — same story with modern PgBouncer. Direct string remains the recommendation. Updated page.
Hardenings earned in the field
- Real Supabase databases carry
supabase_vault, which cannot exist outside Supabase — pgProof excludes unrestorable platform internals from dump and manifest (Vault data is server-side encrypted and undecipherable in any dump anyway). - Platforms ship constraints that are
NOT VALIDby design — pgProof only flags constraints that were valid at the source and unvalidated after restore. - Backup roles need
BYPASSRLS: on an RLS-heavy production-grade database, pg_dump aborts without it. Our role script includes it.
The same drill, on your database, every night
Everything above is one command away: npx pgproof drill. The hosted service runs it on schedule, with encrypted storage and proof in your inbox.