node-postgres

Non-blocking PostgreSQL client for Node.js with pure JavaScript and native libpq bindings.

Library
npm
v8.23.0
13,212 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
78 /100 Good
Development Activity 84
Maintenance 44
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
82 /100 Excellent
Architecture 85
Code Quality 82
Innovation 80
Learning Curve 82

node-postgres (published to npm as pg) is the de facto PostgreSQL client for Node.js, providing both a pure JavaScript driver and optional native libpq bindings behind a single, consistent API. It implements the PostgreSQL wire protocol directly, so connecting, querying, and streaming results require no external client library beyond Node.js itself.

The project ships as a monorepo of focused packages — pg for the core client and connection pool, pg-cursor for server-side cursors, pg-query-stream for streaming large result sets, and pg-protocol for the low-level wire-protocol parser/serializer — so applications can pull in only what they need. With roughly 36 million weekly downloads, it underpins the majority of Node.js applications, ORMs, and query builders that talk to PostgreSQL.

What You Get

  • A Client and Pool implementation with automatic connection pooling and configurable overflow/timeout behavior
  • A pure-JS wire-protocol implementation (pg-protocol) plus optional native libpq bindings (pg-native) behind the identical API
  • Extensible type parsing so PostgreSQL types (arrays, JSON, timestamps, custom domains) coerce to native JS values
  • Streaming helpers (pg-cursor, pg-query-stream) for iterating large result sets without loading them fully into memory
  • Support for parameterized queries, named/prepared statements with plan caching, and async LISTEN/NOTIFY notifications

Common Use Cases

  • Powering the database layer of Express/Fastify/Koa APIs that talk directly to PostgreSQL
  • Serving as the underlying driver for higher-level tools like Knex, Sequelize, and Drizzle ORM
  • Running on edge/serverless runtimes (Cloudflare Workers, Deno, Bun) via the pg-cloudflare transport and pure-JS client
  • Streaming and paginating very large query results with pg-cursor or pg-query-stream for reporting/export jobs

Under The Hood

Architecture - node-postgres is organized as a Lerna/Yarn-workspaces monorepo split by concern: pg-protocol implements the raw PostgreSQL wire protocol (message parsing/serialization) independent of any transport; lib/connection.js wraps a TCP/TLS socket (lib/stream.js) and speaks that protocol; lib/client.js layers query/parameter handling and the DatabaseError type on top of a Connection; and pg-pool wraps Client to add pooling, exposed to consumers as the top-level Pool/Client API in lib/index.js. Companion packages (pg-cursor, pg-query-stream) subclass the same Client/Query primitives to add streaming, and the native binding (lib/native) is lazy-loaded behind a native property so the pure-JS and libpq paths share one public surface.

Tech Stack - The core pg package is plain CommonJS JavaScript (published with a matching ESM wrapper in esm/) with runtime dependencies on pg-connection-string, pg-pool, pg-protocol, pg-types, and pgpass; the optional pg-native peer dependency and pg-cloudflare optional dependency add libpq bindings and an edge-runtime transport respectively. The monorepo is built and tested with Lerna, Yarn workspaces, and Vitest/Mocha, targets Node.js >= 16, and TypeScript appears only in the dev/tooling chain, not the published library surface.

Code Quality - Test coverage is extensive and segmented by concern: test/unit, test/integration, test/native, test/cloudflare, and test/tls under packages/pg/test, plus a test/integration/gh-issues directory of regression tests tied to specific bug reports. CI runs on every push (GitHub Actions badge in the README). The codebase favors small, single-purpose modules (client.js, connection.js, query.js, result.js) with consistent naming, though the library does not ship its own TypeScript type definitions — consumers rely on the community-maintained @types/pg package.

API Design - The public API is deliberately small: new Pool(config) or new Client(config) followed by .query(text, values) covers most use cases, with the native and pure-JS clients sharing an identical interface so switching transports requires no code changes. Prepared statements, LISTEN/NOTIFY, and COPY TO/FROM are exposed through the same query-shaped API rather than bespoke methods, keeping the surface area low. Documentation is centralized at node-postgres.com with a companion GitHub wiki cataloguing community “Extras,” though the type-definition gap adds minor friction for TypeScript users.

Used by 147 apps in this directory

JavaScript
46%
MIT

Kutt

Analytics · Marketing

11,125

Self-hosted URL shortener with custom domains, per-link analytics, and zero build step required.

View details
74
Repo Health
62
Technical
72
Dependency
Built with
JavaScript 46%
Handlebars 24%
HTML 16%
Updated 1 months ago
TypeScript
78%
LGPL 3.0

Latitude

AI Agents · Monitoring

4,686

Open-source AI agent monitoring that catches what will break next before your users do.

View details
86
Repo Health
88
Technical
67
Dependency
Built with
TypeScript 78%
Rust 11%
Python 11%
Updated 2 weeks ago
TypeScript
94%
AGPL 3.0

Laudspeaker

Automation · Marketing

2,626

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
51
Repo Health
66
Technical
62
Dependency
Built with
TypeScript 94%
Updated 3 months ago
TypeScript
94%
AGPL 3.0

Laudspeaker

Automation · Marketing

2,626

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
51
Repo Health
66
Technical
62
Dependency
Built with
TypeScript 94%
Updated 3 months ago
TypeScript
94%
AGPL 3.0

Laudspeaker

Automation · Marketing

2,626

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
51
Repo Health
66
Technical
62
Dependency
Built with
TypeScript 94%
Updated 3 months ago
TypeScript
96%
AGPL 3.0

Libra AI

AI Development · No Code Platforms

1,684

Open-source AI-powered platform that generates and deploys full-stack web applications from natural language prompts, built natively for Cloudflare Workers.

View details
31
Repo Health
71
Technical
68
Dependency
Built with
TypeScript 96%
Updated 1 years ago
TypeScript
97%
Other

Lightdash

Analytics · Data Engineering

6,166

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago
TypeScript
97%
Other

Lightdash

Analytics · Data Engineering

6,166

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago
TypeScript
97%
Other

Lightdash

Analytics · Data Engineering

6,166

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers