A Clean, No-Nonsense Way to Install PostgreSQL on macOS: Postgres.app

Local Dev 1

Advantages

Postgres.app is the simplest PostgreSQL setup for macOS. It’s self-contained, requires no system configuration, and runs as a regular application. You get a working PostgreSQL server in minutes without touching the command line or managing system services. Everything stays in one place, making it easy to find your databases and configuration. It’s perfect for developers who want PostgreSQL available without the overhead of Docker or native system service management.

Disadvantages

Postgres.app doesn’t give you production parity or version control like Docker does. You can’t easily run multiple PostgreSQL versions simultaneously, and it’s harder to match exact production environments. It also requires manual management of when the server runs, and you’ll need to remember to start it if you don’t configure auto-start. For teams that need reproducible environments or multiple PostgreSQL versions, Docker or native installation might be better choices.

Local PostgreSQL setups get messy fast if you let them. Multiple versions, stray installers, and leftover data directories can leave you wondering which psql binary you’re even using. On macOS, the cleanest and least painful path is Postgres.app. It’s self-contained, predictable, and never leaves you guessing where your database went.

I’ve cycled through Homebrew installs, Docker setups, and enough legacy PostgreSQL installers to know when something is worth keeping around. Postgres.app is that option.

This is the short guide to getting it installed, configured, and ready for an initial development database named interlinedlist.

Download

A decorative blue elephant figurine with intricate swirling patterns, representing PostgreSQL.

Grab the latest release here:

https://postgresapp.com

Pick the version that matches whatever you’re running in production or closest to it. If you’re not sure, go with the latest LTS-style release (right now that’s PostgreSQL 16 or 17 depending on your needs).

Once downloaded:

  1. Drag Postgres.app into /Applications
  2. Launch it

You now have a local PostgreSQL server running with zero system pollution.

Install the Command Line Tools

To get the basic command line tools running, execute the following:

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

Verify the Server Is Running

Postgres.app launches its own server instance automatically. You should see something like:

Server Running - PostgreSQL 18

If it’s not running, click Start.

Nothing exotic here. This is what keeps Postgres.app clean. No hidden launch daemons, no orphaned services.

Create Your Initial Development Database

Let’s create a database for your project: interlinedlist.

From your terminal:

createdb interlinedlist

And confirm it exists:

psql -l | grep interlinedlist

Connect to it:

psql interlinedlist

You’re in.

Create a Local Superuser (Optional but Recommended)

If your macOS username doesn’t already map to a PostgreSQL superuser, fix that now:

createuser -s $USER

This keeps local dev friction to a minimum. ORMs, migration tools, and scripts expect you to have the ability to create and drop databases during development.

Connection String

For most tooling and frameworks, the connection string will look like:

postgres://<your-macos-username>@localhost:5432/interlinedlist

Example:

postgres://adron@localhost:5432/interlinedlist

Drop that into your .env file or wherever your project expects it.

And That’s It for the Simple Way

No services to debug. No random installers to clean up. No guessing which version is running. Postgres.app is the most stable, least irritating way to keep PostgreSQL available on macOS without turning your workstation into a zoo of leftover data directories.

If you need more like Docker-based production parity, extensions, seed scripts, or per-project isolation, I’ve got posts coming for those too. But for everyday development, Postgres.app gets you up and running in minutes and stays out of your way.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.