Express
Open SourceFast, unopinionated, minimalist web framework for Node.js.
Scores
About
Express is a fast, minimal, and unopinionated web framework for Node.js. First released in 2010, it became the default starting point for Node.js web development and remains one of the most downloaded npm packages in history.
Express adds a thin, composable layer on top of Node's built-in http module: a router for mapping HTTP methods and URL patterns to handler functions, a middleware system for processing requests in a pipeline, and a set of HTTP utilities for tasks like setting headers, redirecting, and caching.
The middleware model is Express's core abstraction. Every piece of functionality — body parsing, authentication, logging, CORS, rate limiting, static file serving — is a middleware function with the signature (req, res, next). Third-party middleware packages like passport, multer, morgan, helmet, and cors plug into this pipeline, making Express highly composable without dictating the architecture of your application.
Routing supports parameterised paths (/users/:id), query string parsing, HTTP method chaining, and route-level middleware, providing enough structure for simple APIs while staying out of the way for complex ones.
Express is completely unopinionated about database access, authentication strategy, template engine, or project structure. This flexibility has made it the underlying engine for many higher-level frameworks: NestJS, LoopBack, Feathers, and Keystone all run on Express (or can be configured to). It is also frequently embedded as the HTTP layer in microservice architectures.
Express 5 (stable v5.x released 2024) modernised the framework with native Promise support in middleware and route handlers, eliminating the need for express-async-errors wrappers, and introduced breaking changes around error handling and router API.
Express is maintained under the OpenJS Foundation umbrella.
Key Features
- Thin HTTP routing layer on top of Node.js built-in http module
- Composable middleware pipeline with (req, res, next) signature
- Parameterised routing, query string parsing, and HTTP method chaining
- Supports 14+ template engines (Pug, EJS, Handlebars, etc.) without lock-in
- Express 5: native Promise support in middleware — no async wrapper packages needed
- Massive middleware ecosystem: passport, multer, morgan, helmet, cors, and thousands more
- Foundation layer for NestJS, LoopBack, Feathers, and other Node.js frameworks
Pros
- Minimal and unopinionated — no forced structure, ORMs, or authentication patterns
- Massive, battle-tested middleware ecosystem covering virtually every use case
- Simple to learn: a working REST API requires fewer than 10 lines of code
- Extremely well-documented and the most commonly referenced Node.js backend in tutorials
- Flexible deployment: works as a standalone server, microservice, or embedded HTTP layer
Cons
- Completely unopinionated — large projects need strong internal conventions to stay maintainable
- Middleware ordering errors cause subtle, hard-to-debug issues with no framework guardrails
- Significantly slower than modern alternatives (Fastify, Hono) in benchmark throughput
- Express 4.x stagnated for years; the Express 5 migration breaks backward compatibility for many projects
- No built-in TypeScript support — `@types/express` covers types but the DX is behind NestJS
Pricing
Open SourcePossible Stacks
MERN Stack
ProjectMongoDB, Express, React, Node.js — the classic JavaScript full-stack. A well-trodden path with massive community support and job-market demand.
Express + MongoDB
ProjectNode.js REST API with Express and MongoDB — classic document-store backend stack.
Vue + Node.js + PostgreSQL
ProjectVue.js SPA with an Express/Node.js API and PostgreSQL database.
Related Tools
Works well with (15)
Integrates with (2)
Alternative to (10)
Learning Resources
No resources yet — check back soon.