pgModeler is an multi-platform PostgreSQL schema engineering tool — locally installed,
Git-friendly, and built with a deep PostgreSQL specialization. Design schemas visually,
reverse-engineer production databases,
diff and sync across environments, and automate deployments through a powerful CLI.
No cloud dependency. No telemetry. No lock-in. Your schemas live in open files on your machine. Offered as community and commercial editions — both with the same core features.
Buy pgModeler Plus and fund Nullptr Labs,
ensuring you save time while keeping the project independent and evolving.
Changes since: v1.2.2
This patch release for pgModeler 1.2.x brings the following improvements and fixes:
* [New] Added the method TaskProgressWidget::setNoProgressState.
* [Change] Refactored MainWindow initialization by moving startup timers to a new startOtherTimers method.
* [Change] Improved MainWindow initialization control by overriding the showEvent method.
* [Change] Updated AboutWidget and WelcomeWidget UI layouts.
* [Change] Updated GlobalAttributes with new site URL.
* [Fix] Fixed a bug in DatabaseModel::loadObjectsMetadata that was causing crashes in some circumstances.
* [Fix] Fixed a bug in NumberedTextEditor that was copying all text when hitting Ctrl+C when there was only a portion of the text selected.
* [Fix] Fixed a bug in ModelValidationHelper that was not properly swapping ids between table children objects and their dependencies (e.g., trigger -> function).
* [Fix] Fixed a bug in the Connection class that was creating an invalid connection string when other params were manually specified.
*Changes since:* ***v2.0.0-beta***
**Summary:** pgModeler 2.0.0-beta1 is a focused stability and feature refinement release building on top of beta. The core application receives important fixes for crashes and data integrity issues, gains support for PostgreSQL 18's new temporal keys, along with a set of targeted UI improvements. The star of this release, however, is the versioning plugin for pgModeler Plus: it has been significantly expanded with a complete set of day-to-day Git workflow features, making it a practical tool for teams and individual developers who manage their database models under version control. The SSH tunnel plugin, also part of pgModeler Plus, received a smaller but welcome rework of its own.
**Stability and crash fixes:** Several issues that could cause crashes in specific situations have been resolved. A crash that occurred during model validation when a column was restored through an undo operation is now fixed. A use-after-free race condition in the model close and reload flow, caused by deferred object destruction timing, has been eliminated. Stale pointers in the export tool that could crash the application after model changes were also addressed. This release also closes a batch of memory leaks found across relationship handling, the undo/redo history, copy-and-paste, and model loading, which should help keep memory usage in check during long editing sessions with several models open at once. Exporting to PNG or SVG images now happens in a single, uninterruptible step instead of running in the background, working around a limitation in how the underlying graphics engine handles multi-threaded rendering. In total, this release brings well over a dozen targeted bug fixes across editing forms, export, SQL completion, and the debug output panel — including two annoying UI quirks: the model objects panel no longer clears the current selection when it loses focus, and editing a column from a relationship's tab attributes now correctly opens the column editor instead of the constraint editor.
**FK naming convention change (breaking):** The default column naming pattern for foreign key relationships has been updated to follow a table-first convention. The source column pattern changed from `{sc}_{st}` to `{st}_{sc}`, and the destination column pattern for many-to-many relationships changed from `{sc}_{dt}` to `{dt}_{sc}`. If you have models that rely on the previous defaults, review your `relationships.conf` after upgrading.
**Temporal keys support:** pgModeler now supports the temporal keys introduced in PostgreSQL 18. Primary and unique keys can be defined with the `WITHOUT OVERLAPS` clause, and foreign keys can reference them using `PERIOD`, letting you properly model time-bound data — such as validity periods or scheduling ranges — instead of relying on ad-hoc check constraints. A new "Temporal key" option is available wherever these constraints are configured.
**View editing improvements:** The View editing form now shows the SQL preview in a dedicated tab that is generated on demand when you navigate to it. The tag selector and references panel were repositioned into a cleaner layout, and the minimum form size was reduced to better fit smaller screens.
**Layer and command-line enhancements:** The Layers panel gained a new option to select all objects belonging to the currently selected layers directly on the canvas, speeding up bulk operations on layered models. On the command-line side, `pgmodeler-cli` now supports the `--no-escape-comments` option giving finer control over how object comments are escaped during SQL generation.
**Visual consistency polish:** Checked menu items that carry an icon now display a highlighted background consistent with checked toolbar buttons, providing clearer visual feedback across all built-in themes. Split-button controls (buttons with an attached dropdown arrow) are now rendered as a single unified shape with a clean shared border, fixing a double-line artifact at the junction. The disabled state for hint-colored frames and buttons now preserves the color identity of the hint instead of falling back to a generic gray. A new accent-color frame hint follows the system palette's accent color, adapting automatically to different themes.
**Plugin API additions:** The model reload flow has been updated to go through a signal (`s_modelLoadRequested`) rather than directly into `addModel()`, allowing plugins to intercept and handle reload requests. The `s_modelClosed` signal is now emitted when a model is closed, giving plugins a reliable hook. Several `CustomTableWidget` additions — scroll bar access, cell font control, double-click signal, and multi-row selection retrieval — expand the toolkit available to plugin developers. The former `FileSelectorWidget` was renamed to `PathSelectorWidget` across the codebase to better reflect its ability to select both files and directories; plugins using the old class name will need to update accordingly.
**pgModeler Plus — Versioning plugin:** This release brings a major leap forward for the versioning plugin. The scope of work covered in this cycle effectively transforms it from a basic history viewer into a full Git client embedded in pgModeler. Here is what is new:
- **Repository cloning:** Clone remote repositories directly from the plugin interface. The clone dialog shows live progress as data is transferred, supports HTTPS credentials and SSH keys, and can automatically open the models found in the cloned repository once cloning completes.
- **Remote management:** Add, edit, and remove Git remotes from the Repository Settings panel. Multiple push URLs per remote are supported. SSH key paths are stored and reused automatically for subsequent operations, and the configuration panel now shows all active Git configuration parameters in a dedicated tab.
- **Commit staging and diff:** The new commit widget gives you fine-grained control over what goes into each commit. Files can be staged or unstaged individually; filters let you focus on specific file types; and a side-by-side diff view lets you review changes before committing. Split-model files are fully supported.
- **Push, pull, and sync:** Push and pull operations are available directly from the toolbar, with a combined sync action for convenience. The pull reconcile strategy (merge, rebase, or fast-forward only) is configurable in Repository Settings. Upstream tracking is displayed in the branch indicator and can be set up from the interface.
- **Conflict resolution:** When a merge or pull produces conflicts, the plugin enters a dedicated conflict mode that disables potentially destructive actions. You can inspect each conflicting file in three versions (base, local, and remote), resolve it by choosing one of the versions or using the built-in editor, and then finalize or abort the merge.
- **Branch merge:** Merge any branch into the current one from the branch manager. The merge widget shows the target and source branches clearly and confirms the operation before executing.
- **Cherry-pick:** Select any commit from the history and cherry-pick it onto the current branch. Merge commits are handled correctly by automatically applying the needed flags for each case.
- **Commit amend:** The last commit can be amended directly from the commit panel — useful for quick message corrections or adding a forgotten file without creating a new commit entry in history.
- **Reset to commit:** Reset the repository state to any historical commit, with support for the different Git reset modes (soft, mixed, hard).
- **Revert commit:** Create a new revert commit that undoes the changes introduced by any selected commit, without rewriting history.
- **Tag management:** Create, remove, and sync tags from a dedicated tag manager. Tags can be annotated and pushed to or fetched from the remote repository.
- **Stash management:** Save uncommitted work to the stash at any time, browse the stash list with timestamps and diff previews, and apply, pop, or drop individual stash entries. Full stash clearing is also available.
- **SSH agent support:** The plugin now sets `GIT_SSH_COMMAND` when running Git operations so that keys loaded in an SSH agent are picked up automatically, eliminating repeated passphrase prompts.
- **Git credential manager:** Support for configuring the Git credential manager directly from Repository Settings, streamlining authentication setup for HTTPS remotes.
**pgModeler Plus — SSH tunnel plugin:** The SSH tunnel plugin has been reworked to give you more granular control over your tunnels. Automatic startup on launch is now configured per tunnel instead of being a single all-or-nothing switch, so you can choose exactly which connections should come up automatically when pgModeler starts. The toolbar button now shows a dedicated icon reflecting whether any tunnels are currently running, with a tooltip summarizing how many are active and how many are stopped at a glance. The tunnels menu was also redesigned to list every configured tunnel individually, so each one can be started or stopped on its own, in addition to the existing options to start or stop all of them at once. A bug that could cause the shutdown of a running tunnel to be silently skipped was also fixed.
**Looking ahead:** With 2.0.0-beta1, pgModeler Plus's versioning plugin is now feature-complete for the initial 2.0.0 release. The focus until the final release will be on stability testing across platforms, addressing community feedback on the core application, and fine-tuning any remaining rough edges identified during this beta phase.
Feature highlights From schema design to production deployment
Visual schema construction
Design any PostgreSQL object visually — from simple tables to custom types, domains, operators, and procedural languages. The engine generates precise, production-grade DDL for every object.
Reverse engineering PLUS
Connect to any PostgreSQL server and reconstruct a full schema model from your live database. Recover legacy designs, document production schemas, or baseline a system for ongoing lifecycle management.
Incremental diff & sync PLUS
Compare your model against a live server. pgModeler generates the exact ALTER, DROP, and CREATE statements needed to synchronize the two states — no manual diffing required.
Validation & fixes
Catch broken references and rule violations at design time, before deployment. The validation engine checks cross-object dependencies and suggests automatic fixes.
Relationship-driven design
Link tables and pgModeler propagates columns, constraints, and indexes automatically. The column propagation engine handles inheritance and complex relationship chains.
Database management PLUS
Browse schemas, execute SQL, and manage data directly in the built-in module. Your model and your live database stay in the same workspace — no tool-switching required.
CLI for pipeline integration
Export DDL, run diffs, and push schemas to any environment — all from the command line, no GUI required. Fits naturally into any CI/CD workflow.
SSH tunneling PLUS
Connect securely to remote PostgreSQL servers over SSH tunnels. No VPN configuration needed — just your key and the host.
Git-friendly format PLUS
Save your schema as individual XML files — one per object. Each table, view, function, and policy becomes a separate file — making branches, diffs, and code reviews work naturally with any version control system.
Model versioning PLUS
Powered by Git, the version control for your models is built directly into the interface, keeping the entire model lifecycle in one single place.
No Saas lock-in
pgModeler runs entirely on your machine. Your schemas are never hosted on our infrastructure, so stop using pgModeler tomorrow and your work remains fully yours.
No proprietary format
Model files are open, human-readable XML. Inspect them in any text editor, transform them with standard tooling, and store them anywhere — forever.
Built specifically for PostgreSQL Designed around PostgreSQL-native schema engineering workflows
Fully local PostgreSQL modeling and engineering workflow with offline-capable usage and no mandatory cloud infrastructure. Commercial editions use periodic license validation without requiring cloud-hosted workflows.
With the column propagation mechanism, pgModeler automatically creates all columns and constraints as the user links tables using the available relationship objects avoiding repetitive tasks and improving productivity.
pgModeler can export the models to a SQL script, to a PNG image, to an SVG file, in the form of a data dictionary in HTML format, or directly to a PostgreSQL server.
Model files are stored in open, human-readable XML. You can diff them line-by-line in Git, process them with standard tooling, or inspect them in any text editor — no proprietary format, no vendor dependency.
In case of unexpected quit, the user doesn't lose all the work because pgModeler stores temporary models with the most recent changes and will restore them in the next startup.
The validation engine checks cross-object references and constraint rules at design time, surfacing errors before deployment. Most issues can be fixed automatically.
Export DDL, run diffs, and automate schema deployments without launching the GUI. Designed to integrate cleanly into CI/CD pipelines and scripted workflows.
Connect to any live PostgreSQL server and reconstruct a full schema model from your existing database. Useful for documenting production systems, recovering legacy designs, or baselining a schema for ongoing lifecycle management.
Compare your schema model against a live PostgreSQL server and generate the exact ALTER, DROP, and CREATE statements needed to bring them in sync — no hand-written migrations.
Other notable features include an object finder for navigating large models, a plugin development interface, a translatable user interface, and much more. For a comprehensive overview of all pgModeler's features, visit the official documentation.
From the community Engineers who use pgModeler in production
“Having a data modeling tool is essential for us. We maintain a DM with more than 500 tables in pgModeler and it does it job perfectly! We developed some enhancement for generating SQL from the DM. Here it really help that pgModeler stores the DM in a well structured easy to read XML file.”
Andreas BrandtBusiness Requirements and Design — brandt ITGrasbrunn, Germany
“We have used pgModeler in several projects and one of the things that most pleases and surprises us is the performance of the tool. Whether for small projects or models with hundreds of tables, pgModeler is practical, lightweight and very powerful.
No doubt it's the best Open Source project of its kind.”
“We have used pgModeler quite extensively for our database design - from creating the detailed databases, schemas and other DB objects. It was very helpful, especially for the unending iterations of our design enhancements as requested by our client. The fact it created SVG image files and data dictionaries as well, also helped immensely with the documentation.”
“I would like to leave my thanks and praise to the pgModeler team. I have been using the tool to model the entire database of my projects in Supabase and the experience has been fantastic.”
Ricardo AzevedoSystems Development Coordinator — AletoPalmas, Brazil
“Great progress, pgModeler is the best tool for PostgreSQL, for sure.
I use pgModeler as a tool to verify the database model generated by an ORM system.
The database structure is automatically created based on classes in the application code, I review the resulting model to ensure it looks correct.”
More stability and a full Git experience built right in
pgModeler 2.0.0-beta1 focuses on stability and refinement, fixing several crashes and memory leaks that could affect longer editing sessions, plus over a dozen smaller bug fixes across forms, exporting, and SQL completion. It also introduces a breaking change to the default foreign key naming convention, so models relying on the old pattern may need review after upgrading. The view editing form, layers panel, and command-line tool all get small usability upgrades, alongside visual polish for a more consistent interface across themes. The real highlight, though, is the versioning plugin in pgModeler Plus. What used to be a simple, disabled-by-default changelog for tracking partial diffs is now a full Git client built right into pgModeler — no more switching to the terminal or external GUI tools. The plugin supports cloning repositories, managing remotes, staging and diffing commits, pushing/pulling/syncing, guided conflict resolution, branch merging, cherry-picking, commit amending, reset and revert, tag management, stashing, and streamlined SSH and credential authentication. It's a complete Git workflow for teams and solo developers alike, now feature-complete ahead of the final 2.0.0 release.
The access to binary packages has changed. You must create a download token in the key management section before proceeding with the download.
Get source code
pgModeler has two main development branches: main and develop. The main branch is where features considered stable can be found. The development branch, reserved for alpha and beta releases, is where patches, new unstable features are placed and tested.
You can retrieve the source using the git command by running the following:
If you prefer, there are source tarballs ready to be compiled. Once you got the source, you can follow the instructions to compile pgModeler described in the Installation page.
Do you really want to generate a new token for this user? The current token will be invalidated and a new one will be sent by email.
Access key recovery
Preparing your
payment, please wait...
Do not close the page or cancel the loading!
Payment invoice
Support Development Invest in the tools you use
Why Donate?
pgModeler is proudly maintained by Nullptr Labs. While open source, continuous development requires significant resources.
By contributing financially, you ensure the project's long-term sustainability. If pgModeler adds value to your workflow, consider supporting its evolution.
This is a voluntary contribution to open-source development and does not grant access to pre-compiled binaries. To purchase the installer, please visit the Purchase section.
10.00 USD
Preparing your
donation, please wait...
Do not close the page or cancel the loading!
Purchase successful
Thank you for your purchase! In a few minutes you'll receive an email containing the instructions on how to download your packages as well some important notes about your purchase. Note that some email servers can flag the email as spam so make sure to check your SPAM box too. In case of problems, please contact the developer from the Support menu.
Enjoy pgModeler!
Get a trial key — pgModeler Plus
Student discount — pgModeler Plus
Contact the developer
For feature requests or bug reports we kindly ask you to open a ticket on the GitHub issues page.