Works on Workers

Discover which npm packages work in Cloudflare Workers. 395+ packages tested and working.

395+
Packages Working
992
Packages Tested
80
πŸ’‘ Alternatives

Browse by Category

Showing runtime packages only. Build tools, CLI tools, and test frameworks are hidden by default.

Enable "Show build tools & incompatible" to see all 992 tested packages.

Showing 11 packages

connect

βœ… Works
v3.7.0 8,833,651 weekly downloads server-framework

Extensible HTTP server framework (predecessor to Express). Works with httpServerHandler.

πŸ’‘ Alternative: Hono or itty-router

Error: Unexpected token ':'

View Example
import { httpServerHandler } from 'cloudflare:node';
import connect from 'connect';

const app = connect();
app.use((req, res) => {
  res.end('Hello from Connect!');
});

app.listen(3000);
export default httpServerHandler({ port: 3000 });

express

βœ… Works
v5.2.1 54,070,149 weekly downloads server-framework

Node.js web framework. Works on Workers with httpServerHandler from cloudflare:node. Requires nodejs_compat flag.

πŸ’‘ Alternative: Hono (most Express-like, fastest), itty-router (tiny, simple), Toucan (Sentry-like routing), or workers-router (official Cloudflare routing helper)

Error: Unexpected strict mode reserved word

View Example
import { httpServerHandler } from 'cloudflare:node';
import express from 'express';

const app = express();
app.use(express.json());

app.get('/',(req, res) => res.json({ message: 'Express on Workers!' }));
app.post('/echo', (req, res) => res.json({ received: req.body }));

app.listen(3000);
export default httpServerHandler({ port: 3000 });

finalhandler

βœ… Works
v2.1.1 61,042,944 weekly downloads server-framework

Express/Connect final handler for ending middleware chains. Works with httpServerHandler - correctly handles 404s and errors.

πŸ’‘ Alternative: Use Hono or itty-router for error handling

View Example
import { httpServerHandler } from 'cloudflare:node';
import { createServer } from 'node:http';
import finalhandler from 'finalhandler';

const server = createServer((req, res) => {
  const done = finalhandler(req, res);
  
  if (req.url === '/') {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: 'Hello!' }));
  } else {
    done(); // 404 for unknown routes
  }
});

server.listen(3000);
export default httpServerHandler({ port: 3000 });

formidable

πŸ”„ Alternative Available
v3.5.4 13,250,915 weekly downloads server-framework

Formidable is a Node.js form parsing library for handling multipart/form-data, especially file uploads, in traditional Node.js HTTP servers (http.createServer). Requires node:os module which is not supported in Workers nodejs_compat (only crypto, fs, path, buffer, stream, events, util, http, https, net, dns, zlib, timers, url, assert, process, diagnostics_channel, async_hooks are supported). Designed for Node.js request/response objects and filesystem-based temporary file storage during upload processing. Workers uses Request/Response objects and has better alternatives for form parsing.

πŸ’‘ Alternative: Workers Request.formData() API (native multipart/form-data parsing built-in), or busboy (lower-level multipart parser that may work with Workers)

Error: No such module "node:os".

koa

βœ… Works
v3.1.1 4,866,550 weekly downloads server-framework

Node.js web framework. Works on Workers with httpServerHandler from cloudflare:node. Requires nodejs_compat flag.

πŸ’‘ Alternative: hono, itty-router

Error: Unexpected token ':'

View Example
import { httpServerHandler } from 'cloudflare:node';
import Koa from 'koa';

const app = new Koa();
app.use(async (ctx) => {
  ctx.body = { message: 'Koa on Workers!' };
});

app.listen(3000);
export default httpServerHandler({ port: 3000 });

koa-body

πŸ”„ Alternative Available
v7.0.1 372,779 weekly downloads server-framework

Koa body parsing middleware

πŸ’‘ Alternative: hono, itty-router

Error: Package koa-body needs manual test configuration - do not use generic Object.keys() test

koa-bodyparser

πŸ”„ Alternative Available
vunknown 559,649 weekly downloads server-framework

Koa body parsing middleware

πŸ’‘ Alternative: hono, itty-router

Error: Command failed: npm install npm warn deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. npm warn deprecated sourcema

koa-compose

πŸ”„ Alternative Available
v4.1.0 4,255,382 weekly downloads server-framework

Koa middleware composition

πŸ’‘ Alternative: hono, itty-router

Error: Package koa-compose needs manual test configuration - do not use generic Object.keys() test

koa-logger

πŸ”„ Alternative Available
v4.0.0 256,519 weekly downloads server-framework

Koa logging middleware

πŸ’‘ Alternative: hono, itty-router

Error: Package koa-logger needs manual test configuration - do not use generic Object.keys() test

koa-router

πŸ”„ Alternative Available
v14.0.0 413,092 weekly downloads server-framework

Koa routing middleware

πŸ’‘ Alternative: hono, itty-router

Error: Unexpected token ':'

koa-static

πŸ”„ Alternative Available
v5.0.0 927,195 weekly downloads server-framework

Koa static file middleware

πŸ’‘ Alternative: hono, itty-router

Error: Unexpected token ':'

Common Questions

Why are so many packages marked "Build/Dev Tool"?

Many popular npm packages are build tools (webpack, babel), test frameworks (jest, mocha), or CLI utilities (chalk, commander) that run during developmentβ€”not in production. Cloudflare Workers is a runtime environment for production code. These tools still work great for building your Workers project, they just don't run inside Workers themselves.

Can I use Express/Koa/Hapi in Workers?

Yes! As of September 2025, Workers supports node:http server APIs. Use httpServerHandler from cloudflare:node to wrap Express, Koa, or other Node.js HTTP frameworks. For new projects, we recommend lightweight alternatives like Hono or itty-router which are built for edge environments.

What about databases like PostgreSQL or MySQL?

Workers supports database clients like pg (PostgreSQL) and mysql2 when connecting to public endpoints. For production, use edge-optimized solutions: Cloudflare D1 (SQLite), Neon (serverless Postgres), PlanetScale (MySQL), or Upstash Redis.

Why doesn't package X work?

Common reasons: Native modules (C++ bindings like sharp, bcrypt) don't workβ€”use alternatives like bcryptjs or Cloudflare Images. Filesystem access (fs module for local files) isn't availableβ€”use KV, R2, or D1 instead. TCP sockets (raw socket.io, redis) aren't supportedβ€”use Durable Objects, WebSockets, or HTTP-based alternatives.