Contents
Official
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.
-
lessmd
- Markdown in the terminal.
-
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
.
-
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
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 JavaScript.
-
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
)
-
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
- Intituive 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.
-
pkg-dir
- 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
- Promises
-
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…

- Observables
- Streams
-
Highland.js
- Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like 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.
-
gm
- GraphicsMagick and ImageMagick wrapper.
-
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 conversation 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
.
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
- Drivers
- ODM / ORM
-
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.
- Drizzle ORM
- TypeScript ORM that supports various databases such as PostgreSQL.
- Query builder
-
Knex
- Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
- Other
-
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.
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.
-
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
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.
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.
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.
-
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 identify, 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
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
Articles
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 limitions.
-
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](https://www.youtube.com/watch?v=OCjvhCFFPTw) - 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
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
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.
-
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.
Miscellaneous