Fix
pg_restore: unsupported version in file header
Your dump is fine. Your pg_restore is just older than the pg_dump that produced the file.
The error
pg_restore: error: unsupported version (1.16) in file header
The rule
Postgres client tools read dumps made by their own version or older, never newer. Two rules keep you safe:
- Restoring: use a
pg_restoreat least as new as thepg_dumpthat made the file. - Dumping: use a
pg_dumpat least as new as the server you dump from. Server 17 with the Ubuntu-default client 14 is exactly how these files get made and then fail elsewhere.
The quick fix without touching your system
Docker gives you any client version in one line:
# restore with modern tools, no local install
docker run --rm -v "$PWD:/b" --network host postgres:17 \
pg_restore --no-owner -h localhost -p 5432 -U postgres -d mydb /b/backup.dump
Or install a specific client alongside your system one — on Debian/Ubuntu with the PGDG repository, apt install postgresql-client-17, then call it explicitly: /usr/lib/postgresql/17/bin/pg_restore.
Find out what made the dump
pg_restore -l backup.dump | head -3
; Archive created at 2026-09-01 03:00:12 UTC
; dbname: postgres · Dumped by pg_dump version: 17.2
If even -l fails with the header error, run it from a newer image as above.
Why this bites during disasters
Version mismatches are the classic silent backup failure: the nightly dump works for months, then the restore happens on a different machine, with older tools, at 2 a.m. The only reliable vaccine is restoring every backup with pinned, version-matched tooling — the drill.
Version-matched drills, automatically
pgProof restores every backup in a container matching your Postgres major version (13–17) and reports the result. A mismatch shows up the same day, not during the outage.
Join the early-access waitlist