postgresql.conf Diff Tool
A plain text diff is a poor way to compare two PostgreSQL configurations. It reports shared_buffers = 4GB and shared_buffers = 4096MB as a change, misses that checkpoint_timeout = 900 equals 15min, and says nothing about a setting that is about to stop your server from starting. This tool reads two postgresql.conf files the way PostgreSQL does, then compares the values. It converts memory and time units, treats on, true, yes and 1 as the same Boolean, ignores comments and case in names, and applies the rule that the last line wins. You can also paste the output of SHOW ALL or SELECT name, setting FROM pg_settings. Parameters found in only one file are compared with the default of the other side, so you can see which ones make a real difference. Choose a PostgreSQL version from 14 to 19 for each side and the tool checks every value against the parameter list of that version, using names, ranges, enum values and defaults exported from real servers. When the versions differ, it acts as an upgrade check: it lists parameters that no longer exist, such as io_workers in PostgreSQL 19, which stop the server at startup, and the defaults that change without any line in your file. Each changed parameter is marked if it needs a restart or a reload. The parser and the unit conversion were compared with real PostgreSQL servers. The PostgreSQL 19 data comes from RC1, because the final release is planned for November 19, 2026. Everything runs in your browser, so your configuration is not uploaded.
Do more than postgresql.conf diff tool — meet Chat2DB
Chat2DB is an AI-powered SQL client for Windows, macOS and Linux. Write SQL in natural language, format and optimize queries automatically, and manage MySQL, PostgreSQL, Oracle and 20+ other databases in one workspace.
How to use
- Paste the first configuration into box A and the second into box B. You can use postgresql.conf, postgresql.auto.conf, or the output of SHOW ALL or pg_settings.
- Choose the PostgreSQL version of each side. To test an upgrade, paste the same file into both boxes and choose the old version for A and the new version for B.
- Click Compare, then read the problems first, followed by the real differences and the defaults that change. Parameters are marked [restart] or [reload] where that applies.
Frequently asked questions
How do I compare two postgresql.conf files?
Paste both files into this tool, or run SELECT name, setting, unit FROM pg_settings WHERE source <> 'default' ORDER BY name on each server and compare the results. The second way shows what is really in effect, including ALTER SYSTEM settings in postgresql.auto.conf and included files. A plain diff is less useful, because the two files can use different units for the same value and because comments and ordering add noise. Remember that a file only shows what it sets: a parameter missing from one file still has a value, which is the default for that version. To see which values are not yet active, query pg_file_settings on a running server.
Why does PostgreSQL fail to start with "configuration file contains errors"?
PostgreSQL stops at startup if postgresql.conf has a syntax error, an unknown parameter name or an invalid value, and the log line just before that message names the file and line. After a major upgrade, the usual cause is a parameter that no longer exists. For example, io_workers from PostgreSQL 18 is gone in 19, where io_min_workers and io_max_workers replace it, and standard_conforming_strings = off is now rejected. Extension parameters with a dot in the name, such as pg_stat_statements.max, are the exception, because the server does not check them unless the extension is loaded. To find problems before you start the server, compare your old file against the new version here.
Which PostgreSQL settings need a restart?
Parameters with context postmaster in pg_settings need a full restart, such as shared_buffers, max_connections, wal_level and shared_preload_libraries. Those with context sighup need only a reload, which you can do with SELECT pg_reload_conf(), and those with context user can change per session with SET. Query SELECT name, setting FROM pg_settings WHERE pending_restart to see what is waiting for a restart. This tool marks each difference as [restart] or [reload]. To run these checks against several servers from one GUI, try Chat2DB: download it at chat2db.ai/download or open app.chat2db.ai.
