pgAdmin 4

The pgAdmin Development Team·PostgreSQL.pgAdmin

Open Source administration and development platform for PostgreSQL

pgAdmin is designed to answer the needs of all users, from writing simple SQL queries to developing complex databases. The graphical interface supports all PostgreSQL features and makes administration easy. The application also includes a syntax highlighting SQL editor, a server-side code editor, an SQL/batch/shell job scheduling agent, support for the Slony-I replication engine and much more. Server connection may be made using TCP/IP or Unix Domain Sockets (on *nix platforms), and may be SSL encrypted for security. No additional drivers are required to communicate with the database server.

winget install --id PostgreSQL.pgAdmin --exact --source winget

Latest 9.18·September 17, 2026

Release Notes

The pgAdmin Development Team is pleased to announce the release of pgAdmin 4 version 9.18. This release of pgAdmin 4 includes 29 bug fixes and new features, including fixes for four security vulnerabilities (CVE-2026-86861 through CVE-2026-86864). For more details, please see the release notes. pgAdmin is the leading open-source graphical management tool for PostgreSQL. For more information, please see the website. Notable changes in this release include: Features:

  • Collapse and restore the Object Explorer by re-clicking the current workspace icon, in the manner of the VS Code side bar, remembering the choice across refreshes. A keyboard shortcut, Ctrl+Alt+B by default, does the same thing and can be changed through the new toggle_object_explorer preference.
  • Harden the default Content-Security-Policy so inline scripts run under a per-request nonce rather than a blanket 'unsafe-inline', and drop 'unsafe-eval'. style-src keeps 'unsafe-inline', because MUI and React inject runtime styles and inline style attributes that cannot carry a nonce, and development bundles have 'unsafe-eval' re-added automatically when DEBUG is set. Security Fixes:
  • Fix an authentication bypass in Webserver authentication mode, where get_user() fell back to reading the configured WEBSERVER_REMOTE_USER name from the inbound request headers when it was absent from the WSGI environment. Because a header is written by whoever sends the request, any client that could reach pgAdmin could assert any identity, including an administrator's, without presenting a credential. A header-asserted identity is now opt-in, restricted to a configured list of trusted proxies with an optional shared secret, and refused for accounts whose authentication source is not webserver (CVE-2026-86863).
  • Fix argument and connection-string injection in the Backup tool, where the client-supplied database name was appended to the pg_dump argument vector as a bare positional value. Because getopt_long permutes arguments, a value beginning with a dash supplied further options such as --file, overriding the storage-confined output path; and because libpq expands a database name containing an equals sign into a full connection string, the same field could redirect the connection, and the password exported in PGPASSWORD, to a host of the caller's choosing. The database name is now passed through the PGDATABASE environment variable, which libpq never expands (CVE-2026-86864).
  • Fix connection-string injection in the Restore and Maintenance tools, where the client-supplied database name was passed straight to --dbname and could likewise redirect the connection, and the exported password, to a server of the caller's choosing (CVE-2026-86862).
  • Fix a time-of-check to time-of-use flaw in the File Manager's save_file endpoint, which backs saving from the Query Tool and ERD: the requested path was validated with check_access_permission() and then opened with a plain open(), so a symbolic link planted in between was followed, writing outside the user's storage directory. This is the write sink that CVE-2026-7819's hardening of the separate upload path did not cover (CVE-2026-86861).
  • Refuse HTTP redirects on LLM API requests, rather than following a Location header on to a destination the ALLOWED_LLM_API_URLS check was never applied to. This is hardening rather than a fix for an exploitable flaw, since returning the redirect at all requires control of a host already on the allowlist.
  • Reject an empty or null Username when importing a non-shared server, which previously imported cleanly and left a server that libpq would silently authenticate as the OS account running pgAdmin rather than reject outright. Bugs/Housekeeping:
  • Fix login being impossible against Flask-Security-Too 5.8.2, which corrected a long-standing inversion in UserMixin.is_locked() that pgAdmin's own is_locked() had been written against.
  • Fix inherited columns in the Table dialog being editable and deletable, and the Data type dropdown on the expanded Definition tab offering every type rather than honouring the allowed-type restriction applied inline.
  • Reinstate dependency ordering of the script Schema Diff generates, which had been lost since the React port left dependLevel unset.
  • Fix Schema Diff reporting false differences for SERIAL and BIGSERIAL columns, duplicating any column that also differs when recreating a foreign table, losing a foreign table column's collation, injecting whitespace into an applied function or procedure body, generating SQL that PostgreSQL rejects when a sequence's MINVALUE is raised above its current value, and reporting a comparison that fails part way through as a success.
  • Share concurrent identical GET requests behind getNodeAjaxOptions() so a wide table's Columns tab no longer fires one duplicate get_types request per column row.
  • Fix the argument grid on the Definition tab of a user-defined function or procedure refusing to delete, or add, a row in edit mode.
  • Omit the redundant TABLESPACE pg_default clause from generated index SQL, which was invalid on a partitioned table.
  • Fix a crash when a per-server Password Exec Command is used with a service-only (pg_service.conf) connection, which leaves host, port and username unset.
  • Accept SharedUsername when importing a shared server from a servers.json definition, instead of insisting on Username for every server.
  • Render the Validate binary path dialog as HTML, instead of showing the raw markup.
  • Remove a trailing quote from the Windows installer's ProductVersion, and fix the existingSecret path in the Helm deployment template.
  • Skip importing and initialising the Kerberos, LDAP, MFA, OAuth2 and Webserver authentication providers unless SERVER_MODE is set, leaving desktop mode with internal authentication alone.
  • Bump JavaScript and Python third-party dependencies, and update the message catalogs, including a fix for the Korean catalog that had not been recompiled since November 2025. Builds for Windows and macOS are available now, along with a Python Wheel, Docker Container, RPM, DEB Package, and source code tarball from the download area.

Installer type: inno

x64userCA82B9A07007308A70A9AF55192F5CA826C9CE839FE716CEA465E2CFC4529245
x64machineCA82B9A07007308A70A9AF55192F5CA826C9CE839FE716CEA465E2CFC4529245

Details

Homepage
https://www.pgadmin.org/download/pgadmin-4-windows/
License
PostgreSQL
Publisher
The pgAdmin Development Team
Support
https://www.pgadmin.org/support/
Privacy Policy
https://www.pgadmin.org/privacy_policy/
Copyright
Copyright © 1996-2026 The PostgreSQL Global Development Group
Moniker
pgadmin

Tags

pgsqlpostgrespostgresqlsql

Older versions (27)

9.17
x64userF152AB1666D4B4182F5E550D05840C7A05123C77FB992591086AB5E73758300F
x64machineF152AB1666D4B4182F5E550D05840C7A05123C77FB992591086AB5E73758300F
9.16
x64user06A0E2F2586099E038D7DC34DA20F94F86465696C0238E9C86032BC933D00067
x64machine06A0E2F2586099E038D7DC34DA20F94F86465696C0238E9C86032BC933D00067
9.15
x64userBBEFD88E62CE9D8C51588E24BF7234C3002116925519CBB94DE16C287657A0CA
x64machineBBEFD88E62CE9D8C51588E24BF7234C3002116925519CBB94DE16C287657A0CA
9.14
x64user2B9FA4E4279965232156758AEAF12F05FD1DE834146DCC397FB0D8DB756AE949
x64machine2B9FA4E4279965232156758AEAF12F05FD1DE834146DCC397FB0D8DB756AE949
9.13
x64user1EE9F0963BE95628FDA855A99511519720F7E528914221D7CC27353E0A5FA33B
x64machine1EE9F0963BE95628FDA855A99511519720F7E528914221D7CC27353E0A5FA33B
9.12
x64user0B62B11140DD958C377215245C13EBB629E2F287DAB9241CACE25074BE5E5E02
x64machine0B62B11140DD958C377215245C13EBB629E2F287DAB9241CACE25074BE5E5E02
9.11
x64user9FDE3C8AFCCEE3C21803A41E1C38CEB7E64C0D9C7138C6A9F5B0825A163D6F7F
x64machine9FDE3C8AFCCEE3C21803A41E1C38CEB7E64C0D9C7138C6A9F5B0825A163D6F7F
9.10
x64user3CE0188926637EBB74056A8DBB8B871A5D336341F0DE86DAA56B2F09DCC3E8B9
x64machine3CE0188926637EBB74056A8DBB8B871A5D336341F0DE86DAA56B2F09DCC3E8B9
9.9
x64userB4A7EE807225AB73CE5CE4F0BDA6597C35D69991FEA07188AF97C3983D4E2D43
x64machineB4A7EE807225AB73CE5CE4F0BDA6597C35D69991FEA07188AF97C3983D4E2D43
9.8
x64user35B1154E2087B7C6AE28A2F95FB31816FAAA2A28E769C9D2CCB48BB1928453EC
x64machine35B1154E2087B7C6AE28A2F95FB31816FAAA2A28E769C9D2CCB48BB1928453EC
9.7
x64user025821FCA449B511F84E595FEB7B597331D7C903A2C891C194AA3F137938D475
x64machine025821FCA449B511F84E595FEB7B597331D7C903A2C891C194AA3F137938D475
9.6
x64userEAE7E014E2F65B89523D96579B307C7D119C8668B73EF45046739C0833CAB44C
x64machineEAE7E014E2F65B89523D96579B307C7D119C8668B73EF45046739C0833CAB44C
9.5
x64user03F23D837D7F98A0169FCD170A960A7ED156F4CFF9ED19A0D797D5340F380BCE
x64machine03F23D837D7F98A0169FCD170A960A7ED156F4CFF9ED19A0D797D5340F380BCE
9.4
x64userA74ED1DCA474CE3E71180D5F017CB3FD8717FD9F8C121425121CE5CD6FFB1B77
x64machineA74ED1DCA474CE3E71180D5F017CB3FD8717FD9F8C121425121CE5CD6FFB1B77
9.3
x64user53EA30E9F23B4F954AB79F96A980E58E3C53822C2FA15EBC86C39D309E802770
x64machine53EA30E9F23B4F954AB79F96A980E58E3C53822C2FA15EBC86C39D309E802770
9.2
x64user50C5DF2C90A4308CF54A756314FCE31DA5E4296AB7141CAD52A03904095E7186
x64machine50C5DF2C90A4308CF54A756314FCE31DA5E4296AB7141CAD52A03904095E7186
9.1
x64user729C88032303F848CF8EECC673896C896904F138F13103A4B12B689D4369E181
x64machine729C88032303F848CF8EECC673896C896904F138F13103A4B12B689D4369E181
9.0
x64user04A1A4ADF93DAAA810D80B8493DD4BC7DD3166F3B65D86F0E2985B80664FED87
x64machine04A1A4ADF93DAAA810D80B8493DD4BC7DD3166F3B65D86F0E2985B80664FED87
8.14
x64user5F1BB9E6F382964ACBB90156C2F38B7800B02D77CF6934F73B826240ED004110
x64machine5F1BB9E6F382964ACBB90156C2F38B7800B02D77CF6934F73B826240ED004110
8.13
x64userFC7FA00B0B3B7CD60E40548BC0ADE10C632D4A474A9D61A6E05694196F1A15C0
x64machineFC7FA00B0B3B7CD60E40548BC0ADE10C632D4A474A9D61A6E05694196F1A15C0
8.12
x64user2B28B9A70B1E26AC3834FC3118888B3138C31C49100FFE11134CEB0142A13D5E
x64machine2B28B9A70B1E26AC3834FC3118888B3138C31C49100FFE11134CEB0142A13D5E
8.11
x64user217F4DB69CA7C4D869BBBB120F583DDED7FC0F0E7F43DBFB498FB7868891DCF8
x64machine217F4DB69CA7C4D869BBBB120F583DDED7FC0F0E7F43DBFB498FB7868891DCF8
8.10
x64userAD581A8AAF33043EF0FC8FF11A8C90E6518421E6CA4FED0A3922361C513C217C
x64machineAD581A8AAF33043EF0FC8FF11A8C90E6518421E6CA4FED0A3922361C513C217C
7.8
x64user995AAC7D870B5E9DE4F9A6F5D1FC336B5E3CB7D07381EF38126A7B12622CF5CD
x64machine995AAC7D870B5E9DE4F9A6F5D1FC336B5E3CB7D07381EF38126A7B12622CF5CD
6.21
x64machine71D44EB4AC1710F6B8F78206E71279980E8AFC7BDFADF202DC580DA25D2DE794
x64user71D44EB4AC1710F6B8F78206E71279980E8AFC7BDFADF202DC580DA25D2DE794
5.7
x64machineEDF0BAB6031FC06D6B875CB1B76B06BB616D6431373726CC58775F769EDB88B9
x64userEDF0BAB6031FC06D6B875CB1B76B06BB616D6431373726CC58775F769EDB88B9
4.30
x64—4248FFAC1564685C7460FEC88D5FA8E8473401E648B56B7BD293F654304FAE77