Home/Database & Cache/Drizzle ORM
Database & Cache
drizzle

Drizzle ORM

TypeScriptOpen-sourceORMSQL-firstLightweight

Lightweight TypeScript ORM with a SQL-like query builder. Drizzle is the fastest-growing ORM in the JS ecosystem — loved for its minimal overhead, SQL proximity, and serverless-first design.

License

Apache-2.0

Language

TypeScript

37
Trust
Limited

Why Drizzle ORM?

You want SQL-like syntax with TypeScript types

Serverless and edge environments (lightweight bundle)

You find Prisma too heavy or magical

Signal Breakdown

What drives the Trust Score

npm downloads
2M / wk
Commits (90d)
180 commits
GitHub stars
26k ★
Stack Overflow
4k q's
Community
Fast growing
Weighted Trust Score37 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

You need a mature ecosystem with many plugins (use Prisma)

Complex migration workflows (Prisma's tooling is better)

Non-TypeScript projects

Pricing

Free tier & paid plans

Free tier

100% free, open-source (Apache-2.0)

Paid

Free & open-source

No paid tiers — purely open-source

Alternative Tools

Other options worth considering

prisma
Prisma88Strong

The most popular TypeScript ORM with end-to-end type safety. Prisma's schema-first approach generates a fully typed client, making database access safe and refactorable.

Often Used Together

Complementary tools that pair well with Drizzle ORM

neon

Neon

Database & Cache

61Fair
View
supabase

Supabase

Database & Cache

95Excellent
View
nextjs

Next.js

Frontend & UI

98Excellent
View
vercel

Vercel

Hosting & Deploy

89Strong
View
trpc

tRPC

API Layer

87Strong
View

Learning Resources

Docs, videos, tutorials, and courses

Get Started

Repository and installation options

View on GitHub

github.com/drizzle-team/drizzle-orm

npmnpm install drizzle-orm

Quick Start

Copy and adapt to get going fast

import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
import { users } from './schema';

const client = postgres(process.env.DATABASE_URL);
const db = drizzle(client);

const result = await db.select().from(users).where(eq(users.active, true));
console.log(result);

Code Examples

Common usage patterns

Define table schema

Type-safe schema definition

import { pgTable, serial, text, boolean, timestamp } from 'drizzle-orm/pg-core';

export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  email: text('email').notNull().unique(),
  name: text('name'),
  active: boolean('active').default(true),
  createdAt: timestamp('created_at').defaultNow(),
});

Join query

SQL-like joins with full type safety

const result = await db
  .select({ user: users, post: posts })
  .from(users)
  .innerJoin(posts, eq(posts.authorId, users.id))
  .where(eq(users.active, true))
  .orderBy(desc(posts.createdAt))
  .limit(10);

Community Notes

Real experiences from developers who've used this tool