← Back to Awesome

Sections

Node.js

GitHub repository ↗ synced 2026/8/9

Official

Website
Documentation
Repository

Packages

Mad science

webtorrent

Streaming torrent client for Node.js and the browser.

peerflix

Streaming torrent client.

ipfs

Distributed file system that seeks to connect all computing devices with the same system of files.

stackgl

Open software ecosystem for WebGL, built on top of browserify and npm.

peerwiki

All of Wikipedia on BitTorrent.

peercast

Stream a torrent video to Chromecast.

BitcoinJS

Clean, readable, proven Bitcoin library.

Bitcore

Pure and powerful Bitcoin library.

PDFKit

PDF generation library.

turf

Modular geospatial processing and analysis engine.

webcat

p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.

NodeOS

The first operating system powered by npm.

YodaOS

AI operating system.

Brain.js

Machine-learning framework.

Pipcook

Front-end algorithm framework to create a machine learning pipeline.

Cytoscape.js

Graph theory (a.k.a. network) modeling and analysis.

js-git

JavaScript implementation of Git.

xlsx

Pure JS Excel spreadsheet reader and writer.

isomorphic-git

Pure JavaScript implementation of Git.

Command-line apps

np

Better `npm publish`.

npm-name

Check a package name's availability on npm.

gh-home

Open the GitHub page of the repo in the current directory.

npm-home

Open the npm page of a package.

trash

Safer alternative to `rm`.

speed-test

Test your internet connection speed and ping.

pageres

Capture website screenshots.

cpy

Copy files.

vtop

More better top, with nice charts.

empty-trash

Empty the trash.

is-up

Check whether a website is up or down.

is-online

Check if the internet connection is up.

public-ip

Get your public IP address.

clipboard-cli

Copy & paste on the terminal.

XO

Enforce strict code style using the JavaScript happiness style.

ESLint

The pluggable linting utility for JavaScript.

David

Tells you when your package npm dependencies are out of date.

http-server

Simple, zero-config command-line HTTP server.

Live Server

Development HTTP-server with livereload capability.

bcat

Pipe command output to web browsers.

normit

Google Translate with speech synthesis in your terminal.

fkill

Fabulously kill processes. Cross-platform.

pjs

Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.

license-checker

Check licenses of your app's dependencies.

browser-run

Easily run code in a browser environment.

tmpin

Adds stdin support to any CLI app that accepts file input.

wallpaper

Change the desktop wallpaper.

pen

Live Markdown preview in the browser from your favorite editor.

dark-mode

Toggle the macOS Dark Mode.

Jsome

Pretty prints JSON with configurable colors and indentation.

mobicon

Mobile app icon generator.

mobisplash

Mobile app splash screen generator.

diff2html-cli

Pretty git diff to HTML generator.

trymodule

Try out npm packages in the terminal.

jscpd

Copy/paste detector for source code.

atmo

Server-side API mocking.

auto-install

Auto installs dependencies as you code.

cost-of-modules

Find out which dependencies are slowing you down.

localtunnel

Expose your localhost to the world.

svg-term-cli

Share terminal sessions via SVG.

gtop

System monitoring dashboard for the terminal.

themer

Generate themes for your editor, terminal, wallpaper, Slack, and more.

carbon-now-cli

Beautiful images of your code — from right inside your terminal.

cash-cli

Convert between 170 currencies.

taskbook

Tasks, boards & notes for the command-line habitat.

discharge

Easily deploy static websites to Amazon S3.

npkill

Easily find and remove old and heavy node_modules folders.

Functional programming

lodash

Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.

immutable

Immutable data collections.

Ramda

Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.

Mout

Utility library with the biggest difference between other existing solutions is that you can choose to load only the modules/functions that you need, no extra overhead.

RxJS

Functional reactive library for transforming, composing, and querying various kinds of data.

Kefir.js

Reactive library with focus on high performance and low memory usage.

HTTP

got

Nicer interface to the built-in `http` module.

undici

High performance HTTP client written from scratch with zero dependencies.

ky-universal

Universal HTTP client based on Fetch.

node-fetch

`window.fetch` for Node.js.

axios

Promise based HTTP client (works in the browser too).

superagent

HTTP request library.

http-fake-backend

Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.

cacheable-request

Wrap native HTTP requests with RFC compliant cache support.

gotql

GraphQL request library built on [got](https://github.com/sindresorhus/got).

global-agent

Global HTTP/HTTPS proxy agent that is configurable using environment variables.

smoke

File-based HTTP mock server with recording abilities.

purest

REST client.

Debugging / Profiling

debug

Tiny debugging utility.

why-is-node-running

Node.js is running but you don't know why?

njsTrace

Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.

vstream

Instrumentable streams mix-ins to inspect a pipeline of streams.

stackman

Enhance an error stacktrace with code excerpts and other goodies.

locus

Starts a REPL at runtime that has access to all variables.

0x

Flamegraph profiling.

ctrace

Well-formatted and improved trace system calls and signals.

leakage

Write memory leak tests.

llnode

Post-mortem analysis tool which allows you to inspect objects and get insights from a crashed Node.js process.

thetool

Capture different CPU, memory, and other profiles for your app in Chrome DevTools friendly format.

swagger-stats

Trace API calls and monitor API performance, health, and usage metrics.

NiM

Manages DevTools debugging workflow.

dats

Minimalistic and zero-dependencies [StatsD](https://github.com/statsd/statsd) client.

Logging

pino

Extremely fast logger inspired by Bunyan.

winston

Multi-transport async logging library.

console-log-level

The most simple logger imaginable with support for log levels and custom prefixes.

storyboard

End-to-end, hierarchical, real-time, colorful logs and stories.

consola

Console logger.

Command-line utilities

chalk

Terminal string styling done right.

meow

CLI app helper.

yargs

Command-line parser that automatically generates an elegant user-interface.

ora

Elegant terminal spinner.

get-stdin

Easier stdin.

log-update

Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.

Ink

React for interactive command-line apps.

listr2

Terminal task list.

conf

Simple config handling for your app or module.

ansi-escapes

ANSI escape codes for manipulating the terminal.

log-symbols

Colored symbols for various log levels.

figures

Unicode symbols with Windows CMD fallbacks.

boxen

Create boxes in the terminal.

terminal-link

Create clickable links in the terminal.

terminal-image

Display images in the terminal.

string-width

Get the visual width of a string - the number of columns required to display it.

cli-truncate

Truncate a string to a specific width in the terminal.

blessed

Curses-like library.

Inquirer.js

Interactive command-line prompt.

yn

Parse yes/no like values.

cli-table3

Pretty unicode tables.

drawille

Draw on the terminal with unicode braille characters.

ascii-charts

ASCII bar chart in the terminal.

progress

Flexible ascii progress bar.

insight

Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.

cli-cursor

Toggle the CLI cursor.

cli-columns

Columnated unicode and ansi-safe text lists.

cfonts

Sexy ASCII fonts for the console.

multispinner

Multiple, simultaneous, individually controllable CLI spinners.

omelette

Shell autocompletion helper.

cross-env

Set environment variables cross-platform.

shelljs

Portable Unix shell commands.

sudo-block

Block users from running your app with root permissions.

sparkly

Generate sparklines `▁▂▃▅▂▇`.

Bit

Create, maintain, find and use small modules and components across repositories.

gradient-string

Beautiful color gradients in terminal output.

oclif

CLI framework complete with parser, automatic documentation, testing, and plugins.

terminal-size

Reliably get the terminal window size.

Cliffy

Framework for interactive CLIs.

zx

Write shell scripts in JavaScript.

Build tools

parcel

Blazing fast, zero config web app bundler.

webpack

Packs modules and assets for the browser.

rollup

Next-generation ES2015 module bundler.

gulp

Streaming and fast build system that favors code over config.

Broccoli

Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.

Brunch

Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.

FuseBox

Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.

pkg

Package your Node.js project into an executable.

Vite

Front-end build tool with hot module replacement and static asset bundling.

Hardware

johnny-five

Firmata based Arduino Framework.

serialport

Access serial ports for reading and writing.

usb

USB library.

i2c-bus

I2C serial bus access.

onoff

GPIO access and interrupt detection.

spi-device

SPI serial bus access.

pigpio

Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.

gps

NMEA parser for handling GPS receivers.

modbus-serial

A pure JavaScript implementation of MODBUS-RTU (serial and TCP).

Templating

marko

HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.

nunjucks

Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).

handlebars.js

Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.

EJS

Simple unopinionated templating language.

Pug

High-performance template engine heavily influenced by Haml.

Web frameworks

Fastify

Fast and low overhead web framework.

Next.js

Minimalistic framework for server-rendered universal JavaScript web apps.

Nuxt.js

Minimalistic framework for server-rendered Vue.js apps.

Hapi

Framework for building applications and services.

Micro

Minimalistic microservice framework with an async approach.

Koa

Framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.

Express

Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.

Feathers

Microservice framework built in the spirit of Express.

LoopBack

Powerful framework for creating REST APIs and easily connecting to backend data sources.

Meteor

An ultra-simple, database-everywhere, data-on-the-wire, pure-JavaScript web framework. *(You might like [awesome-meteor](https://github.com/Urigo/awesome-meteor))*

Restify

Enables you to build correct REST web services.

ThinkJS

Framework with ES2015+ support, WebSockets, REST API.

ActionHero

Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.

seneca

Toolkit for writing microservices.

AdonisJs

A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.

Moleculer

Fast & powerful microservices framework.

Nest

Angular-inspired framework for building efficient and scalable server-side apps.

TypeGraphQL

Modern framework for creating GraphQL APIs with TypeScript, using classes and decorators.

Tinyhttp

Modern and fast Express-like web framework.

Marble.js

Functional reactive framework for building server-side apps, based on TypeScript and RxJS.

Lad

Framework made by a former Express TC and Koa member that bundles web, API, job, and proxy servers.

Ts.ED

Intuitive TypeScript framework for building server-side apps on top of Express.js or Koa.js.

Hono

Small and fast web framework.

Documentation

documentation.js

API documentation generator with support for ES2015+ and flow annotation.

Docco

Documentation generator which produces an HTML document that displays your comments intermingled with your code.

JSDoc

API documentation generator similar to JavaDoc or PHPDoc.

Docusaurus

Documentation website generator that leverages React and Markdown, and comes with translation and versioning features.

Filesystem

del

Delete files/folders using globs.

globby

Glob files with support for multiple patterns.

chokidar

Filesystem watcher which stabilizes events from `fs.watch` and `fs.watchFile` as well as using native `fsevents` on macOS.

find-up

Find a file by walking up parent directories.

proper-lockfile

Inter-process and inter-machine lockfile utility.

load-json-file

Read and parse a JSON file.

write-json-file

Stringify and write JSON to a file atomically.

fs-write-stream-atomic

Like `fs.createWriteStream()`, but atomic.

filenamify

Convert a string to a valid filename.

istextorbinary

Check if a file is text or binary.

fs-jetpack

Completely redesigned file system API for convenience in everyday use.

fs-extra

Extra methods for the `fs` module.

package-directory

Find the root directory of an npm package.

filehound

Flexible and fluent interface for searching the file system.

move-file

Move a file, even works across devices.

tempy

Get a random temporary file or directory path.

Control flow

pify

Promisify a callback-style function.

delay

Delay a promise a specified amount of time.

promise-memoize

Memoize promise-returning functions, with expire and prefetch.

valvelet

Limit the execution rate of a promise-returning function.

p-map

Map over promises concurrently.

More…
RxJS

Reactive programming.

observable-to-promise

Convert an Observable to a Promise.

More…
Highland.js

Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.

  • Promises
  • Observables
  • Streams

Streams

get-stream

Get a stream as a string or buffer.

from2

Convenience wrapper for ReadableStream, inspired by `through2`.

into-stream

Convert a buffer/string/array/object into a stream.

duplexify

Turn a writeable and readable stream into a single streams2 duplex stream.

pumpify

Combine an array of streams into a single duplex stream.

peek-stream

Transform stream that lets you peek the first line before deciding how to parse it.

binary-split

Newline (or any delimiter) splitter stream.

byline

Super-simple line-by-line Stream reader.

first-chunk-stream

Transform the first chunk in a stream.

pad-stream

Pad each line in a stream.

multistream

Combine multiple streams into a single stream.

readable-stream

Mirror of Streams2 and Streams3 implementations in core.

through2-concurrent

Transform object streams concurrently.

Real-time

µWebSockets

Highly scalable WebSocket server & client library.

Socket.io

Enables real-time bidirectional event-based communication.

Faye

Real-time client-server message bus, based on Bayeux protocol.

SocketCluster

Scalable HTTP + WebSocket engine which can run on multiple CPU cores.

Primus

An abstraction layer for real-time frameworks to prevent module lock-in.

deepstream.io

Scalable real-time microservice framework.

Kalm

Low-level socket router and middleware framework.

MQTT.js

Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.

rpc-websockets

JSON-RPC 2.0 implementation over WebSockets.

Aedes

Barebone MQTT server that can run on any stream server.

Image

sharp

The fastest module for resizing JPEG, PNG, WebP and TIFF images.

image-type

Detect the type of an image.

image-dimensions

Get the dimensions of an image.

lwip

Lightweight image processor which does not require ImageMagick.

pica

High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.

jimp

Image processing in pure JavaScript.

qrcode

QR code and bar code generator.

ImageScript

Image processing in JavaScript, utilizing WebAssembly for performance.

Text

iconv-lite

Convert character encodings.

string-length

Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.

camelcase

Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.

escape-string-regexp

Escape RegExp special characters.

splice-string

Remove or replace part of a string like `Array#splice`.

indent-string

Indent each line in a string.

strip-indent

Strip leading whitespace from every line in a string.

detect-indent

Detect the indentation of code.

he

HTML entity encoder/decoder.

i18n-node

Simple translation module with dynamic JSON storage.

babelfish

i18n with very easy syntax for plurals.

matcher

Simple wildcard matching.

unhomoglyph

Normalize visually similar unicode characters.

i18next

Internationalization framework.

nanoid

Tiny, secure, URL-friendly, unique string ID generator.

StegCloak

Conceal secrets within strings, in plain sight.

Number

random-int

Generate a random integer.

random-float

Generate a random float.

unique-random

Generate random numbers that are consecutively unique.

round-to

Round a number to a specific number of decimal places: `1.234` → `1.2`.

Math

ndarray

Multidimensional arrays.

mathjs

An extensive math library.

math-clamp

Clamp a number.

algebra

Algebraic structures.

multimath

Core to create fast image math in WebAssembly and JS.

Date

Luxon

Library for working with dates and times.

date-fns

Modern date utility.

Day.js

Immutable date library alternative to Moment.js.

dateformat

Date formatting.

tz-format

Format a date with timezone: `2015-11-30T10:40:35+01:00`.

cctz

Fast parsing, formatting, and timezone conversion for dates.

URL

normalize-url

Normalize a URL.

humanize-url

Humanize a URL: https://sindresorhus.com → sindresorhus.com.

url-unshort

Expand shortened URLs.

speakingurl

Generate a slug from a string with transliteration.

linkify-it

Link patterns detector with full unicode support.

url-pattern

Easier than regex string matching patterns for URLs and other strings.

embedza

Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags.

Data validation

joi

Object schema description language and validator for JavaScript objects.

is-my-json-valid

JSON Schema validator that uses code generation to be extremely fast.

property-validator

Easy property validation for Express.

schema-inspector

JSON API sanitization and validation.

ajv

The fastest JSON Schema validator. Supports v5, v6 and v7 proposals.

Superstruct

Simple and composable way to validate data in JavaScript (and TypeScript).

yup

Object schema validation.

zod

TypeScript-first schema validation with static type inference.

Parsing

remark

Markdown processor powered by plugins.

markdown-it

Markdown parser with 100% CommonMark support, extensions and syntax plugins.

parse5

Fast full-featured spec compliant HTML parser.

@parcel/css

A CSS parser, transformer, and minifier written in Rust.

strip-json-comments

Strip comments from JSON.

strip-css-comments

Strip comments from CSS.

parse-json

Parse JSON with more helpful errors.

URI.js

URL mutation.

JSONStream

Streaming JSON.parse and stringify.

neat-csv

Fast CSV parser. Callback interface for the above.

csv-parser

Streaming CSV parser that aims to be faster than everyone else.

PEG.js

Simple parser generator that produces fast parsers with excellent error reporting.

x-ray

Web scraping utility.

nearley

Simple, fast, powerful parsing for JavaScript.

binary-extract

Extract a value from a buffer of JSON without parsing the whole thing.

Stylecow

Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.

js-yaml

Very fast YAML parser.

xml2js

XML to JavaScript object converter.

Jison

Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.

google-libphonenumber

Parse, format, store and validate phone numbers.

ref

Read/write structured binary data in Buffers.

xlsx-populate

Read/write Excel XLSX.

Chevrotain

Very fast and feature rich parser building toolkit for JavaScript.

fast-xml-parser

Validate and parse XML.

Humanize

pretty-bytes

Convert bytes to a human readable string: `1337` → `1.34 kB`.

pretty-ms

Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`.

ms

Tiny millisecond conversion utility.

pretty-error

Errors with less clutter.

read-art

Extract readable content from any page.

Compression

yazl

Zip.

yauzl

Unzip.

Archiver

Streaming interface for archive generation, supporting ZIP and TAR.

pako

High speed zlib port to pure js (deflate, inflate, gzip).

tar-stream

Streaming tar parser and generator. Also see [tar-fs](https://github.com/mafintosh/tar-fs).

Network

get-port

Get an available port.

ipify

Get your public IP address.

getmac

Get the computer MAC address.

DHCP

DHCP client and server.

netcat

Netcat port in pure JS.

Database

PostgreSQL

PostgreSQL client. Pure JavaScript and native libpq bindings.

Redis

Redis client.

LevelUP

LevelDB.

MySQL

MySQL client.

couchdb-nano

CouchDB client.

Aerospike

Aerospike client.

Couchbase

Couchbase client.

MongoDB

MongoDB driver.

Sequelize

Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL, and more.

Bookshelf

ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.

Mongoose

Elegant MongoDB object modeling.

Waterline

Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.

OpenRecord

ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.

pg-promise

PostgreSQL framework for native SQL using promises.

slonik

PostgreSQL client with strict types, detailed logging and assertions.

Objection.js

Lightweight ORM built on the SQL query builder Knex.

TypeORM

ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more.

MikroORM

TypeScript ORM based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, PostgreSQL, MySQL and SQLite.

Prisma

Modern database access (ORM alternative). Auto-generated and type-safe query builder in TypeScript. Supports PostgreSQL, MySQL & SQLite.

Knex

Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.

NeDB

Embedded persistent database written in JavaScript.

Lowdb

Small JavaScript database powered by Lodash.

Keyv

Simple key-value storage with support for multiple backends.

Finale

RESTful endpoint generator for your Sequelize models.

database-js

Wrapper for multiple databases with a JDBC-like connection.

Mongo Seeding

Populate MongoDB databases with JavaScript and JSON files.

@databases

Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection.

pg-mem

In-memory PostgreSQL instance for your tests.

  • Drivers
  • ODM / ORM
    • Drizzle ORM - TypeScript ORM that supports various databases such as PostgreSQL.
  • Query builder
  • Other

Testing

AVA

Futuristic test runner.

Mocha

Feature-rich test framework making asynchronous testing simple and fun.

nyc

Code coverage tool built on istanbul that works with subprocesses.

tap

TAP test framework.

tape

TAP-producing test harness.

power-assert

Provides descriptive assertion messages through the standard assert interface.

Mochify

TDD with Browserify, Mocha, PhantomJS and WebDriver.

trevor

Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI.

loadtest

Run load tests for your web application, with an API for automation.

Sinon.JS

Test spies, stubs and mocks.

navit

PhantomJS / SlimerJS wrapper to simplify browser test scripting.

Nock

HTTP mocking and expectations.

intern

Code testing stack.

toxy

Hackable HTTP proxy to simulate failure scenarios and network conditions.

hook-std

Hook and modify stdout/stderr.

testen

Run tests for multiple versions of Node.js locally with NVM.

Nightwatch

Automated UI testing framework based on Selenium WebDriver.

WebdriverIO

Automated testing based on the WebDriver protocol.

Jest

Painless JavaScript testing.

Vitest

Fast unit test framework powered by Vite.

TestCafe

Automated browser testing.

abstruse

Continuous Integration server.

CodeceptJS

End-to-end testing.

Puppeteer

Headless Chrome.

Playwright

Headless Chromium, WebKit, and Firefox with a single API.

nve

Run any command on multiple versions of Node.js locally.

axe-core

Accessibility engine for automated Web UI testing.

testcontainers-node

Provides lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.

Security

upash

Unified API for all password hashing algorithms.

themis

Multilanguage framework for making typical encryption schemes easy to use: data at rest, authenticated data exchange, transport protection, authentication, and so on.

GuardRails

GitHub app that provides security feedback in pull requests.

rate-limiter-flexible

Brute-force and DDoS attack protection.

crypto-hash

Async non-blocking hashing.

jose-simple

Encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.

Benchmarking

Benchmark.js

Benchmarking library that supports high-resolution timers and returns statistically significant results.

Minifiers

babel-minify

ES2015+ aware minifier based on the Babel toolchain.

UglifyJS2

JavaScript minifier.

clean-css

CSS minifier.

minimize

HTML minifier.

imagemin

Image minifier.

Authentication

Passport

Simple, unobtrusive authentication.

Grant

OAuth providers for Express, Koa, Hapi, Fastify, AWS Lambda, Azure, Google Cloud, Vercel, and many more.

Authorization

CASL

Isomorphic authorization for UI and API.

node-casbin

Authorization library that supports access control models like ACL, RBAC and ABAC.

Email

Nodemailer

The fastest way to handle email.

emailjs

Send text/HTML emails with attachments to any SMTP server.

email-templates

Create, preview, and send custom email templates.

MJML

Markup language designed to reduce the pain of creating responsive emails.

Forward Email

Open-source and self-hostable email service.

Job queues

bull

Persistent job and message queue.

agenda

MongoDB-backed job scheduling.

idoit

Redis-backed job queue engine with advanced job control.

node-resque

Redis-backed job queue.

rsmq

Redis-backed message queue.

bee-queue

High-performance Redis-backed job queue.

RedisSMQ

Simple high-performance Redis message queue with real-time monitoring.

sqs-consumer

Build Amazon Simple Queue Service (SQS) based apps without the boilerplate.

better-queue

Simple and efficient job queue when you cannot use Redis.

bullmq

Persistent job and message queue.

bree

Job task scheduler with worker threads, cron, date, and human syntax support.

graphile-worker

High performance PostgreSQL job queue.

Node.js management

n

Node.js version management.

nave

Virtual Environments for Node.js.

nodeenv

Node.js virtual environment compatible to Python's virtualenv.

nvm for Windows

Version management for Windows.

nodenv

Version manager that is similar to Ruby's rbenv. It supports auto version switching.

fnm

Cross-platform Node.js version manager built in Rust.

Cross-platform integration

napi-rs

Framework for building compiled Node.js add-ons in Rust via Node-API.

Neon

Rust bindings for writing safe and fast native Node.js modules.

Edge.js

Run .NET and Node.js code in the same process on Windows, macOS, and Linux.

DotNetJS

Consume .NET libraries in Node.js using this .NET interoperability layer.

Natural language processing

retext

An extensible natural language system.

franc

Detect the language of text.

leven

Measure the difference between two strings using the Levenshtein distance algorithm.

natural

Natural language facility.

nlp.js

Building bots, with entity extraction, sentiment analysis, automatic language identification, and more.

Process management

PM2

Advanced Process Manager.

nodemon

Monitor for changes in your app and automatically restart the server.

node-mac

Run scripts as a native Mac daemon and log to the console app.

node-linux

Run scripts as native system service and log to syslog.

node-windows

Run scripts as a native Windows service and log to the Event viewer.

supervisor

Restart scripts when they crash or restart when a `*.js` file changes.

Phusion Passenger

Friendly process manager that integrates directly into Nginx.

Automation

robotjs

Desktop Automation: control the mouse, keyboard and read the screen.

nut.js

Cross-platform native GUI automation / testing framework with image matching capabilities which integrates with Jest.

AST

Acorn

Tiny, fast JavaScript parser.

babel-parser

JavaScript parser used in Babel.

Static site generators

DocPad

Static site generator with dynamic abilities and huge plugin ecosystem.

docsify

Markdown documentation site generator with no statically built HTML files.

Charge

Opinionated, zero-config static site generator using JSX and MDX.

Content management systems

KeystoneJS

CMS and web application platform built on Express and MongoDB.

ApostropheCMS

Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.

Strapi

Content Management Framework (headless-CMS) to build powerful APIs.

Factor

Vue.js dashboard framework and headless CMS.

AdminBro

Auto-generated admin panel with CRUD for all your resources.

Graphweaver

CMS and headless GraphQL API.

Forum

nodeBB

Forum platform for the modern web.

Blogging

Ghost

Simple, powerful publishing platform.

Hexo

Fast, simple and powerful blogging framework.

Weird

cows

ASCII cows.

superb

Get superb like words.

cat-names

Get popular cat names.

dog-names

Get popular dog names.

superheroes

Get superhero names.

supervillains

Get supervillain names.

cool-ascii-faces

Get some cool ascii faces.

cat-ascii-faces

`₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”`.

nerds

Get data from nerdy topics like Harry Potter, Star Wars, and Pokémon.

Serialization

snappy

Native bindings for Google's Snappy compression library.

protobuf

Implementation of Protocol Buffers.

compactr

Implementation of the Compactr protocol.

Miscellaneous

execa

Better `child_process`.

cheerio

Fast, flexible, and lean implementation of core jQuery designed specifically for the server.

open

Opens stuff like websites, files, executables.

hasha

Hashing made simple. Get the hash of a buffer/string/stream/file.

dot-prop

Get a property from a nested object using a dot path.

onetime

Only run a function once.

mem

Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.

strip-bom

Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.

os-locale

Get the system locale.

ssh2

SSH2 client and server module.

adit

SSH tunneling made simple.

file-type

Detect the file type of a Buffer.

Bottleneck

Rate limiter that makes throttling easy.

webworker-threads

Lightweight Web Worker API implementation with native threads.

clipboardy

Access the system clipboard (copy/paste).

node-pre-gyp

Makes it easy to publish and install Node.js C++ addons from binaries.

opencv

Bindings for OpenCV. The defacto computer vision library.

dotenv

Load environment variables from .env file.

semver

Semantic version parser.

nodegit

Native bindings to Git.

json-strictify

Safely serialize a value to JSON without data loss or going into an infinite loop.

jsdom

JavaScript implementation of HTML and the DOM.

@sindresorhus/is

Type check values.

env-dot-prop

Get, set, or delete nested properties of process.env using a dot path.

node-video-lib

Pure JavaScript library for working with MP4 and FLV video files and creating MPEG-TS chunks for HLS streaming.

basic-ftp

FTP/FTPS client.

cashify

Currency conversion.

genepi

Automatically generate a native Node.js addon from C++ code.

husky

Create Git hook scripts.

patch-package

Make and preserve fixes to npm dependencies.

editly

Declarative video editing API.

wild-wild-path

Object property paths with wildcards and regexes.

uint8array-extras

Useful utilities for working with Uint8Array and Buffer.

Package Manager

npm

The default package manager.

pnpm

Disk space efficient package manager.

yarn

Alternative package manager.

bun

All-in-one toolkit for JavaScript and TypeScript apps.

Resources

Tutorials

Node.js Best Practices

Summary and curation of the top-ranked content on Node.js best practices, available in multiple languages.

Nodeschool

Learn Node.js with interactive lessons.

The Art of Node

An introduction to Node.js.

module-best-practices

Some good practices when writing new npm modules.

The Node Way

An entire philosophy of Node.js best practices and guiding principles exists for writing maintainable modules, scalable applications, and code that is actually pleasant to read.

You Don't Know Node.js

Introduction to Node.js core features and asynchronous JavaScript.

Portable Node.js guide

Practical guide on how to write portable/cross-platform Node.js code.

Build a real web app with no frameworks

A set of video tutorials/livestreams to help you build and deploy a real, live web app using a handful of simple libraries and the core Node.js modules.

Discovery

npms

Superb package search with deep analysis of package quality using a [myriad of metrics](https://npms.io/about).

npm addict

Your daily injection of npm packages.

Articles

Error Handling in Node.js
Teach Yourself Node.js in 10 Steps
Mastering the filesystem in Node.js
Semver: A Primer
Semver: Tilde and Caret
Why Asynchronous?
Understanding the Node.js Event Loop
Understanding Object Streams
Using Express to Quickly Build a GraphQL Server

Newsletters

Node Weekly

Weekly e-mail round-up of Node.js news and articles.

Videos

Introduction to Node.js with Ryan Dahl
Hands on with Node.js
V8 Garbage Collector

Trash talk about the V8 garbage collector.

10 Things I Regret About Node.js by Ryan Dahl

Insightful talk by the creator of Node.js about some of its limitations.

Mastering REST APIs in Node.js: Zero-To-Hero

Video course on how to make REST APIs using Node.js.

Make a vanilla Node.js REST API

Building a REST API without using a framework like Express.

Google I/O 2009 - V8: High Performance JavaScript Engine

The basics of V8 architecture and how it optimizes JavaScript execution.

Google I/O 2012 - Breaking the JavaScript Speed Limit with V8

How V8 optimizes JavaScript execution.

Google I/O 2013 - Accelerating Oz with V8: Follow the Yellow Brick Road to JavaScript Performance

How to detect app bottlenecks and optimize performance with V8 knowledge.

Node.js Internal Architecture | Ignition, Turbofan, Libuv

How Node.js works internally, with a focus on V8 and libuv.

Introduction to libuv: What's a Unicorn Velociraptor?

`libuv` architecture, thread pool, and event loop, with its source code.

libuv Cross platform asynchronous i/o

`libuv` architecture in detail, such as where it's actually using threads.

You Don't Know Node - ForwardJS San Francisco

Explaining Node.js internals with quizzes about V8, libuv, event loop, module, stream, and cluster.

Books

Node.js in Action
Node.js in Practice
Mastering Node
Node.js 8 the Right Way
Professional Node.js: Building JavaScript Based Scalable Software
Secure Your Node.js Web Application
Express in Action
Practical Modern JavaScript
Mastering Modular JavaScript
Get Programming with Node.js
Node.js Cookbook
Node.js Design Patterns

Blogs

Node.js blog
webapplog.com

Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan.

Courses

Learn to build apps and APIs with Node.js

Video course by Wes Bos.

Real Time Web with Node.js
Learn and Understand Node.js
Node.js Full Stack Developer Course

Cheatsheets

Express.js
Stream FAQs

Answering common questions about streams, covering pagination, events, and more.

Strong Node.js

Checklist for source code security analysis of a Node.js web service.

Tools

OctoLinker

Chrome extension that linkifies dependencies in package.json, .js, .jsx, .coffee and .md files on GitHub.

npm-hub

Chrome extension to display npm dependencies at the bottom of a repo's readme.

RunKit

Embed a Node.js environment on any website.

github-npm-stats

Chrome extension that displays npm download stats on GitHub.

npm semver calculator

Visually explore what versions of a package a semver range matches.

CodeSandbox

Online IDE and prototyping.

Amplication

Auto-generates fully functional apps.

RunJS

Desktop JavaScript playground.

Community

Stack Overflow
Reddit
Twitter
Hashnode
Discord

Miscellaneous

nodebots

Robots powered by JavaScript.

node-module-boilerplate

Boilerplate to kickstart creating a node module.

modern-node

Toolkit for creating node modules with Jest, Prettier, ESLint, and Standard.

generator-nm

Scaffold out a node module.

Microsoft Node.js Guidelines

Tips, tricks, and resources for working with Node.js on Microsoft platforms.

Module Requests & Ideas

Request a JavaScript module you wish existed or get ideas for modules.

v8-perf

Notes and resources related to V8 and thus Node.js performance.

Related lists

awesome-npm

Resources and tips for using npm.

awesome-cross-platform-nodejs

Resources for writing and testing cross-platform code.