pgModeler - A PostgreSQL Database Modeler and Explorer, a DB Management Tool, an SQL Client and a Visual Query Tool - all in one

A full featured, almost complete software tool for PostgreSQL Database Management, SQL Query, Database Modeling, DB Relationships Edit and more - Open Source and Free source code.

Category: software, open source, free, devel, database, database tools, sql client

Stable Version: pgModeler 1.0.4

Release Date:

Runs on: windows, mac, linux, openbsd, freebsd

windows mac linux openbsd freebsd

 Download pgModeler / Install Binaries: Links on the Official Website
Disclaimer: We do not store any binary or executable file formats on this website to provide direct file downloads. All download links of binaries or executables presented on this website, for any software application without exception, are provided only from the application's publisher Official Website and no other locations. This website is not responsible for the accuracy or safety of the software applications presented here. In particular this website section is just a catalog with popular opensource software applications mainly addressed to software developers to easy the access to the open source code.

  Get the Source Code of pgModeler / Software Source Code Download
  • Project Developer: pgModeler Team
  • License: GNU General Public License (GPL) v3
  • OpenSource, Free: Yes
  • Written in: C++, Qt5
Building from Source: dependencies
  • QT5
  • LibXML2
  • LibPQ (pgsql)
  • CMake
  • LLVM or GCC compiler


0 5 4.1
pgModeler is a better alternative to PgAdmin4, the overall features available do not stand only on modeling and exporting. This software is full-featured and permits users to use the standard features of a database explorer and management tool but also offers to users a way to quickly create reliable database models and export them into several modes, from PNG images to SQL scripts and directly to a running server.
It reunites the concepts of entity - relationship diagrams which can be exported in different formats.
Pg Modeler supports all the features that PostgreSQL implements, including its extensions of the SQL standards. It really have a huge set of features so is capable of reverse engineering existing databases producing their conceptual representation into a visual schema diagram.
A very interesting feature is that it is capable to compares models and databases - generating SQL scripts that can be used to synchronize the database to the most recent model version.

Pros +
  • it includes some main features that are strategically organized within the main window to provide quick access and to improve productivity
  • user can find some quick actions to start working with model design ; there are some toggle buttons that can activate some advanced widgets
  • canvas area can be used in a creative way to draw model objects like tables, views, text boxes, and relationships
  • process of validating a model will ensure that when exporting it to a database server no error will be returned due to conflicts or references breaking
  • there is an object finder which can be very useful when have to deal with large database models
  • the model objects widget permits the user to see (hierarchy tree or list) all the database model objects
  • layers management allows the user to move graphical objects to multiple layers to create an optimized visualization of the model when the set of objects is too large to fit the entire canvas
  • this software includes a widget that works as a regular data grid for dealing with SQL query data directly
  • when generating the SQL code it offers a special dialog used to append and prepend arbitrary DML or DDL commands
  • it can handle all the PostgreSQL objects like: schemas, tables, relations, constraints, roles, permissions, squences, views, materialized views, etc.
  • the connection settings are made easy, connections can be pre-tested before saving
  • a model can be saved as XML or SQL format ; it also can be exported in SVG or PNG format
  • the application`s help is very well structured, information is easy to find
Cons -
  • it does not offer free binary releases (aka community versions) - it could offer at least one for the Linux platforms
  • the source code have some glitches - compiling with some QT versions throws some errors, with other QT versions it compiles just fine
  • the application have some random crashes, mostly when compiled with unstable QT versions - perhaps that could be fixed in the nearest future by refactoring the source code in a manner to be more easy to audit
  • some menu items are not very suggestive, sometimes the user discover some features after a long time of using the application
  • the connection dialog is a bit tricky, after testing a connection a user can forgot to "save" the connection ...


The name pgModeler is an acronym of PostgreSQL Database Modeler and refers to an open source database modeling tool specially designed for PostgreSQL Relational Database Management System.


  • One of the most important features available in this software is code generation - translating the database model into SQL or XML thus it can support to different PostgreSQL syntaxes from the series 9.x and 13.x
  • it implements an internal schema micro language that is exclusively used to generate code from templates or schemas
  • Create different types of objects with an easy interface: supports the creation of the most basic object like a simple column as well advanced objects like user-defined languages, functions, operators, and many others with easy-to-use forms
  • When have to deal with critical models it is possible to protect objects from accidental modifications by using the Protect menu
  • It includes an operation history widget that registers all operations done over the objects - changes can be rolled back easily
  • Object metadata handling - can copy all the metadata of an input model and applies it to another model
  • Automatic generation of columns and constraints: with the column propagation mechanism, automatically creates columns and constraints as the user links tables using the available relationships
  • Generate models from existing databases: with the reverse engineering process, can create reliable models based upon existing databases
  • XML-based files: as an open source tool, it gives complete access to its source code as well to the contents of any generated file ; all created files are XML-based, which means the user can handle these files in third-party softwares
  • Export models in five different ways: it is capable of exporting the models to a SQL script file, to graphical format file (PNG and SVG), to a data dictionary in HTML format, or directly to a PostgreSQL server.
  • Customizable features: with an extensive set of configurations, the application gives the user the freedom to customize most of its behavior with an intuitive interface
  • Generate SQL scripts to synchronize both model and database: through the diff feature, the user can generate SQL scripts based on the differences between model and database - the script contains the needed commands to keep synchronized both database and model
  • Manage existing databases: provides a simplistic database management module where it is possible to run SQL commands, explore the objects and handle data
  • Model structure validation and automatic fixes: to avoid breaking references or rules during design time and when exporting the model to PostgreSQL, pgModeler validates models from time to time - this validation process creates an almost error-free model
  • Restore previous work in case of failure: in case of unexpected quit, the user doesn't lose all the work because it stores temporary models and will recover them on the next startup
  • Command-line interface to automate processes: the CLI offers a good set of operations that do not require the GUI to be running ; one of these features is the export process that can be integrated into third-party scripts to automate deployment processes
  • Another useful feature is the model file fix, which consists of repairing a model's structure to make it loadable again (this feature is also available in the GUI) and much more
  • Additional features: some other essential features are object finder for large models, the plugin development interface, support to geospatial data types (as implemented by PostGiS 2.x extension), translatable user interface, and many others as detailed throughout this documentation
  • offers a simplistic structure to provide a form to create third-party plug-ins ; also the documentation for these plugins can be created using doxygen

Screenshot: Main Screen
pgModeler - Main Screen

Changelog Highlights

2023-05-20 : version 1.0.4

notable changes

  • Now pgModeler selects the UI element colors based upon the system's default colors set (light/dark)
  • Restores the default settings in case of some configuration file is corrupted/incompatible and causes the initialization to fail
  • Allowing sequences to be assigned to columns with numeric type
  • Removed the deprecated attribute partial-match from configuration files in conf/defaults
  • SyntaxHighlighter when in single-line mode will strip any line break char in the input field
  • Minor adjustment in SyntaxHighlighter to force no line wrap in the parent input when single_line_mode is activated
  • Fixed a false-positive diff result when comparing numeric columns
  • Fixed a bug in reverse engineering that was happening during the creation of object permissions
  • Minor fixes in the catalog queries for cast, collation, and role
2023-04-24 : version 1.0.3

notable changes

  • The pgmodeler-cli now logs objects that fail to be recreated in the fix process into a log file stored in pgModeler's temp directory
  • Added a progress bar to the model fix form and a cancel button which allows aborting the fix operation without closing that form
  • Adjusted the behavior of hide and close events of model fix form
  • Refactored TriggerWidget to use an instance of ColumnPickerWidget
  • Fixed the database model file header validation for huge models in pgmodeler-cli
  • Fixed a bug in BaseRelationship::canSimulateRelationship11 that was wrongly returning true
2023-03-14 : version 1.0.2

notable changes

  • Fixed a bug related to importing referenced tables of FKs in partial import mode
  • Fixed the attributes toggler item border style in partition tables
  • Fixed a regression that was preventing the canvas color to be changed
  • Fixed the generation of DROP command for policy, trigger, and rule
  • Fixed a bug that was causing objects to be selected in the sample model at appearance settings
  • Forcing the usage of Qt 6.x due to problems on Windows when compiling with Qt 5
  • Saving/restoring the painter settings after drawing the background in ObjectsScene
2023-02-17 : version 1.0.1

notable changes

  • AppearanceConfigWidget now adjusts the drop shadows on tool buttons according to the current theme
  • pgModeler will now ask for PK columns uncheck when removing a primary key in the Constraints tab at TableWidget
  • Disabling catalog query for transform objects in PG9.x
  • Improving the visibility of some elements in QMenu and AboutWidget
  • Fixed the assignment of layer colors when loading the model in compatibility mode
  • Fixed the disable state change for delimiter scale lock action when changing the current main window view
2023-02-01 : version 1.0.0

notable changes

  • Added PostgreSQL 15 as the default version for code generation
  • Added an option to lock the page delimiters resize during zoom out (<100%) to allow the user to place more objects on one page
  • Added the ability to print models with a specified scale factor
  • Added a new implementation of CSV file loading based on RFC4180
  • Added the file themes/light/extra-ui-style.conf that holds extra style for the light theme
  • Added data dictionary entry for indexes, triggers, and sequences
  • Added split SQL code generation modes to export form
  • Add support for custom UI scaling and UI icons size selection in AppearanceConfigWidget
  • Replaced QtCompat classes with Qt 6 specific code
  • Added extra constants to ObjectsTableWidget to control the coloring of items in DataManipulationForm according to the theme in use
  • Added an extra tab in Messagebox stack trace info called "Extra info" that displays only error's extra info to quickly help to identify any problem
  • AppearanceConfigWidget now switches between light/dark themes on-the-fly
  • Added custom appearance config files in conf/themes for each theme color
  • Added support for customizing objects' shadow color
  • Added the class CustomMenuStyle that configures a custom size for QMenu icons
  • Many other changes and bug fixes (see the official changelog)
2021-12-17 : version 0.9.4

notable changes

  • Changed the way XML code for enum types is generated and loaded
  • Minor refactor in the reconstruction of XML related to enum types in CLI
  • Minor improvement in reverse engineering to import enum types in the new format
  • Minor adjustment in permission id generation - now the object's signature is used instead of name
  • Minor Fix - in order to set read/write permissions when copying configuration files with read-only permissions
  • Fix a bug in file selectors on ModelExportForm that was not allowing to select output folders on Windows and MacOS
  • Added extra PostGiS data types to PgSQLType
  • Added the built-in type pg_lsn in order to make databases using timescaledb extension to be imported correctly
  • Adjusted the catalog query filters in ModelDatabaseDiffForm to retrieve system and extension objects according to the checkboxes "Import system objects" and "Import extension objects"
  • Allowing importing pg_lsn attributes in usertype.sch (schema file)
  • Improved the output of model fix operation in CLI
  • The constants DataSeparator, UnescValueStart$4, UnescValueEnd, WildcardChar, FilterSeparator, FilterWildcard, FilterRegExp were moved from CoreUtilsNs to UtilsNs in order to be used in the parsers module
  • inside SchemaParser the meta char $ds (dollar sign) was renamed to $ms (money sign)
  • Fixed a segfault when importing domains with long expressions
  • Fixed the broken SQL generation for tables with columns/constraints disabled
  • Added a new shortcut: Alt+C to trigger the cancel action in DatabaseImportForm ModelDatabaseDiffForm and ModelExportForm
  • Added support for the generation of GRANT/REVOKE commands to control roles memberships via the diff process
  • Implemented support for included columns on indexes
  • Two new buttons were added aside the date input fields in partial diff tab (ModelDatabaseDiffForm) in order to allow the quick assignment of the first and last modification dates
  • Allow swap cluster level object ids in SwapObjectsIdsWidget when the objects are of the same kind
  • Improvements in pgmodeler-se in such a way to control syntax highlighting settings per open editor
  • Added new metacharacter to SchemaParser: hs for #, $ps for %, $at for @, $ds for
  • Renamed all icons that were in Portuguese to English
  • Fix a malformed SQL code when configuring timestamptz in PgSqlType
  • Solve a bug in SyntaxHighlighter that was wrongly highlighting the entire document when a multiline group had a line break as the final expression
  • Support for configuration parameters and transform types on functions and procedures.
  • Minor adjustments on Messagebox resizing during first display
2020-12-30 : version 0.9.3

notable changes

  • Added support for deterministic and provider attributes in collations
  • The warning message about the unchecked option related to drop missing objects now pops up only when there are partial diff filters configured
  • Minor refactoring in DatabaseModel::addChangelogEntry in order to use new attributes to define changelog operations
  • Fixed a crash when trying to select children objects of a schema that has no rectangle defined
  • Fixed the data dictionary generation in such a way to include nextval(sequence) calls in the "default value" column
  • Added the version descriptor for PostgreSQL 13
  • Added support for procedures and transforms in design, import and diff processes
  • The ModelExportHelper will abort the export process if the SQL code of the database object is disabled
  • Fix a bug in constraint.sch that was avoiding the correct importing of exclude of constraints
  • Fix a bug on MainWindow that was wrongly showing the main menu bar in certain cases at startup
  • Fixed a bug in Parameter class that was causing default values to be ignored
  • Make the source code more clear to avoid some deprecated warnings with GCC version 9
  • Improvement on CLI to accept the value "all" for the paramenter --force-children in order to force all table children at once
  • Solve some crashes related to ModelDatabaseDiffForm and LayersWidget
  • The CLI is now capable of using the objects filtering in reverse engineering
  • Add support for AppImage building for Linux
  • Implement support for importing PostgreSQL 12 generated columns
  • Minor improvement on DatabaseImportHelper in order to display the correct message while assingning sequences to columns ; avoiding the diff process to generate default value changes for generated columns
  • Minor fix in OperationList in order to update FK relationships related to FKs that contains the column being handled by the list
  • Fixed a bug that was causing global name patterns for relationships to never be used even if they were properly configured
  • Use the CRTP (Curiosly Recurring Template Pattern) approach to create a template type based on BaseType in such way that the static member from that template but used on all derived classes of TemplateType can be unique for each derived class
  • Added the ability to remove owners from objects from Quick Actions > Change owner
  • Isolate the default language names into a namespace called DefaultLanguages and removed any reference to LanguageType in the code
2019-12-26 : version 0.9.2

notable changes

  • Add support for data dictionaries generation in HTML format in ModelExportForm
  • Implement options to control data dictionary generation in CLI
  • Removing the plugins from core code
  • Avoiding applying fillfactor to gin indexes
  • Added an additional checking during relationship creation in order to avoid the creation of 1-* or n-n relationships involving partition tables
  • Disabling the SQL statment ALTER...OWNER TO in the object`s SQL when the owner role has its SQL disabled but the object itself not - this will avoid reference errors when validating/exporting code
  • Add support for foreign tables in newer PostgreSQL versions
  • Avoiding the usage of "Generate ALTER commands" option when the table is a partition or partitioned
  • Restricting the usage of "Default partition" option for partitioning relationships when the partition table is a foreign table
  • Isolated the code common to Table and ForeignTable classes in a parent class named PhysicalTable
  • Changed the way temp source file is handled by the tool in order to solve a sharing violation problem on Windows
  • Fixed an bug in SQL generation of columns that was wrongly removing a comma from decimal data types
  • Fixed the generation of XML code of partitioning relationships
  • Additional fix to the extension import to correctly indetify it as a data type handler
  • Added a new action on DataManipulationForm to clear the selected items by pressing Ctrl+R
  • Added support for table children multiselection by using Ctrl+Shift+Click on them
  • Generic SQL objects now support dynamic references to objects which can be used in the definition code
  • Added the WRAPPER, SERVER and MAPPING key words to sql-highlight.conf.
  • Adding a column labeled "Comment" in TableWidget and ViewWidget to hold comments of children objects
  • Renamed PgModelerNS to PgModelerNs
  • fix disabling of some actions related to design when switching to manage view.
2018-05-14 : version 0.9.1"

notable changes

  • The validator now checks if the model has columns referencing spatial data types and creates the postgis extension automatically when fixing the model.
  • PgModeler will not try to create the plugins path anymore
  • Fix an issue in diff process that was generating a malformed DROP command for extensions
  • Added support for GROUP BY/HAVING clauses in Views by adding a new kind of reference ; proper changes done in ViewWidget to allow configuring those clauses
  • Fix import of exclude constraint