Awesome Nodejs Overview
:zap: Delightful Node.js packages and resources
🏠 Home · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 sindresorhus/awesome-nodejs · ⭐ 58K · 🏷️ Platforms
My open source work is supported by the community
Special thanks to:
Start selling to enterprise customers with just a few lines of code.
Add Single Sign-On (and more) in minutes instead of months.
Add Single Sign-On (and more) in minutes instead of months.
Logto is an open-source Auth0 alternative designed for every app.
End-to-end tooling from local development to automated DevOps and infrastructure in your AWS/GCP.
Just type node.cool
to go here. Follow me on Twitter.
Node.js is an open-source, cross-platform, JavaScript runtime for writing servers and command-line tools.
Contents
- Official
- Packages
- Mad science
- Command-line apps
- Functional programming
- HTTP
- Debugging / Profiling
- Logging
- Command-line utilities
- Build tools
- Hardware
- Templating
- Web frameworks
- Documentation
- Filesystem
- Control flow
- Streams
- Real-time
- Image
- Text
- Number
- Math
- Date
- URL
- Data validation
- Parsing
- Humanize
- Compression
- Network
- Database
- Testing
- Security
- Benchmarking
- Minifiers
- Authentication
- Authorization
- Job queues
- Node.js management
- Cross-platform integration
- Natural language processing
- Process management
- Automation
- AST
- Static site generators
- Content management systems
- Forum
- Blogging
- Weird
- Serialization
- Miscellaneous
- Package Manager
- Resources
- Related lists
Official
Packages
Mad science
- webtorrent (⭐30k) - Streaming torrent client for Node.js and the browser.
- peerflix (⭐6.2k) - Streaming torrent client.
- ipfs (⭐933) - 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 (⭐314) - All of Wikipedia on BitTorrent.
- peercast (⭐515) - Stream a torrent video to Chromecast.
- BitcoinJS (⭐5.7k) - Clean, readable, proven Bitcoin library.
- Bitcore (⭐4.9k) - Pure and powerful Bitcoin library.
- PDFKit (⭐9.9k) - PDF generation library.
- turf (⭐9.3k) - Modular geospatial processing and analysis engine.
- webcat (⭐444) - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.
- NodeOS (⭐6.9k) - The first operating system powered by npm.
- YodaOS (⭐1.2k) - AI operating system.
- Brain.js (⭐14k) - Machine-learning framework.
- Pipcook (⭐2.5k) - Front-end algorithm framework to create a machine learning pipeline.
- Cytoscape.js (⭐10k) - Graph theory (a.k.a. network) modeling and analysis.
- js-git (⭐3.8k) - JavaScript implementation of Git.
- xlsx (⭐35k) - Pure JS Excel spreadsheet reader and writer.
- isomorphic-git (⭐7.5k) - Pure JavaScript implementation of Git.
Command-line apps
- np (⭐7.6k) - Better
npm publish
. - npm-name (⭐168) - Check a package name's availability on npm.
- gh-home (⭐191) - Open the GitHub page of the repo in the current directory.
- npm-home (⭐198) - Open the npm page of a package.
- trash (⭐2.6k) - Safer alternative to
rm
. - speed-test (⭐3.9k) - Test your internet connection speed and ping.
- pageres (⭐9.7k) - Capture website screenshots.
- cpy (⭐427) - Copy files.
- vtop (⭐4.1k) - More better top, with nice charts.
- empty-trash (⭐131) - Empty the trash.
- is-up (⭐387) - Check whether a website is up or down.
- is-online (⭐1.2k) - Check if the internet connection is up.
- public-ip (⭐1k) - Get your public IP address.
- clipboard-cli (⭐495) - Copy & paste on the terminal.
- XO (⭐7.7k) - Enforce strict code style using the JavaScript happiness style.
- ESLint (⭐25k) - The pluggable linting utility for JavaScript.
- David (⭐968) - Tells you when your package npm dependencies are out of date.
- http-server (⭐14k) - Simple, zero-config command-line HTTP server.
- Live Server (⭐4.4k) - Development HTTP-server with livereload capability.
- bcat (⭐340) - Pipe command output to web browsers.
- normit (⭐240) - Google Translate with speech synthesis in your terminal.
- fkill (⭐6.9k) - Fabulously kill processes. Cross-platform.
- pjs (⭐419) - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.
- license-checker (⭐1.6k) - Check licenses of your app's dependencies.
- browser-run (⭐443) - Easily run code in a browser environment.
- tmpin (⭐123) - Adds stdin support to any CLI app that accepts file input.
- wallpaper (⭐1k) - Change the desktop wallpaper.
- pen (⭐326) - Live Markdown preview in the browser from your favorite editor.
- dark-mode (⭐660) - Toggle the macOS Dark Mode.
- Jsome (⭐242) - Pretty prints JSON with configurable colors and indentation.
- mobicon (⭐112) - Mobile app icon generator.
- mobisplash (⭐71) - Mobile app splash screen generator.
- diff2html-cli (⭐529) - Pretty git diff to HTML generator.
- trymodule (⭐1.1k) - Try out npm packages in the terminal.
- jscpd (⭐4.7k) - Copy/paste detector for source code.
- atmo (⭐815) - Server-side API mocking.
- auto-install (⭐1.2k) - Auto installs dependencies as you code.
- lessmd - Markdown in the terminal.
- cost-of-modules (⭐2.8k) - Find out which dependencies are slowing you down.
- localtunnel (⭐19k) - Expose your localhost to the world.
- svg-term-cli (⭐3.5k) - Share terminal sessions via SVG.
- gtop (⭐9.7k) - System monitoring dashboard for the terminal.
- themer (⭐5.5k) - Generate themes for your editor, terminal, wallpaper, Slack, and more.
- carbon-now-cli (⭐5.8k) - Beautiful images of your code — from right inside your terminal.
- cash-cli (⭐231) - Convert between 170 currencies.
- taskbook (⭐9k) - Tasks, boards & notes for the command-line habitat.
- discharge (⭐641) - Easily deploy static websites to Amazon S3.
- npkill (⭐8.3k) - Easily find and remove old and heavy node_modules folders.
Functional programming
- lodash (⭐60k) - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
- immutable (⭐33k) - Immutable data collections.
- Ramda (⭐24k) - Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
- Mout (⭐1.3k) - 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 (⭐31k) - Functional reactive library for transforming, composing, and querying various kinds of data.
- Kefir.js (⭐1.9k) - Reactive library with focus on high performance and low memory usage.
HTTP
- got (⭐14k) - Nicer interface to the built-in
http
module. - undici (⭐6.2k) - High performance HTTP client written from scratch with zero dependencies.
- ky-universal (⭐670) - Universal HTTP client based on Fetch.
- node-fetch (⭐8.8k) -
window.fetch
for Node.js. - axios (⭐105k) - Promise based HTTP client (works in the browser too).
- superagent (⭐17k) - HTTP request library.
- http-fake-backend (⭐311) - 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 (⭐407) - GraphQL request library built on got (⭐14k).
- global-agent (⭐363) - Global HTTP/HTTPS proxy agent that is configurable using environment variables.
- smoke (⭐188) - File-based HTTP mock server with recording abilities.
- purest (⭐553) - REST client.
Debugging / Profiling
- debug (⭐11k) - Tiny debugging utility.
- why-is-node-running (⭐1.9k) - Node.js is running but you don't know why?
- njsTrace (⭐366) - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.
- vstream (⭐58) - Instrumentable streams mix-ins to inspect a pipeline of streams.
- stackman (⭐251) - Enhance an error stacktrace with code excerpts and other goodies.
- locus (⭐306) - Starts a REPL at runtime that has access to all variables.
- 0x (⭐3.2k) - Flamegraph profiling.
- ctrace (⭐120) - Well-formatted and improved trace system calls and signals.
- leakage (⭐1.6k) - Write memory leak tests.
- llnode (⭐1.1k) - Post-mortem analysis tool which allows you to inspect objects and get insights from a crashed Node.js process.
- thetool (⭐222) - Capture different CPU, memory, and other profiles for your app in Chrome DevTools friendly format.
- swagger-stats (⭐893) - Trace API calls and monitor API performance, health, and usage metrics.
- NiM (⭐198) - Manages DevTools debugging workflow.
- dats (⭐102) - Minimalistic and zero-dependencies StatsD (⭐18k) client.
Logging
- pino (⭐14k) - Extremely fast logger inspired by Bunyan.
- winston (⭐23k) - Multi-transport async logging library.
- console-log-level (⭐111) - The most simple logger imaginable with support for log levels and custom prefixes.
- storyboard (⭐752) - End-to-end, hierarchical, real-time, colorful logs and stories.
- consola (⭐6k) - Console logger.
Command-line utilities
- chalk (⭐22k) - Terminal string styling done right.
- meow (⭐3.5k) - CLI app helper.
- yargs (⭐11k) - Command-line parser that automatically generates an elegant user-interface.
- ora (⭐9.1k) - Elegant terminal spinner.
- get-stdin (⭐337) - Easier stdin.
- log-update (⭐1.1k) - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
- Ink (⭐27k) - React for interactive command-line apps.
- listr2 (⭐511) - Terminal task list.
- conf (⭐1.2k) - Simple config handling for your app or module.
- ansi-escapes (⭐489) - ANSI escape codes for manipulating the terminal.
- log-symbols (⭐743) - Colored symbols for various log levels.
- figures (⭐592) - Unicode symbols with Windows CMD fallbacks.
- boxen (⭐1.5k) - Create boxes in the terminal.
- terminal-link (⭐617) - Create clickable links in the terminal.
- terminal-image (⭐974) - Display images in the terminal.
- string-width (⭐476) - Get the visual width of a string - the number of columns required to display it.
- cli-truncate (⭐84) - Truncate a string to a specific width in the terminal.
- blessed (⭐11k) - Curses-like library.
- Inquirer.js (⭐20k) - Interactive command-line prompt.
- yn (⭐267) - Parse yes/no like values.
- cli-table3 (⭐535) - Pretty unicode tables.
- drawille (⭐1k) - Draw on the terminal with unicode braille characters.
- ascii-charts (⭐233) - ASCII bar chart in the terminal.
- progress (⭐3k) - Flexible ascii progress bar.
- insight (⭐557) - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
- cli-cursor (⭐103) - Toggle the CLI cursor.
- cli-columns (⭐33) - Columnated unicode and ansi-safe text lists.
- cfonts (⭐1.6k) - Sexy ASCII fonts for the console.
- multispinner (⭐294) - Multiple, simultaneous, individually controllable CLI spinners.
- omelette (⭐1.4k) - Shell autocompletion helper.
- cross-env (⭐6.3k) - Set environment variables cross-platform.
- shelljs (⭐14k) - Portable Unix shell commands.
- sudo-block (⭐98) - Block users from running your app with root permissions.
- sparkly (⭐424) - Generate sparklines
▁▂▃▅▂▇
. - Bit (⭐18k) - Create, maintain, find and use small modules and components across repositories.
- gradient-string (⭐1.1k) - Beautiful color gradients in terminal output.
- oclif (⭐9k) - CLI framework complete with parser, automatic documentation, testing, and plugins.
- terminal-size (⭐139) - Reliably get the terminal window size.
- Cliffy (⭐356) - Framework for interactive CLIs.
- zx (⭐43k) - Write shell scripts JavaScript.
Build tools
- parcel (⭐43k) - Blazing fast, zero config web app bundler.
- webpack (⭐65k) - Packs modules and assets for the browser.
- rollup (⭐25k) - Next-generation ES2015 module bundler.
- gulp (⭐33k) - Streaming and fast build system that favors code over config.
- Broccoli (⭐3.3k) - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
- Brunch (⭐6.8k) - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
- FuseBox (⭐4k) - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.
- pkg (⭐24k) - Package your Node.js project into an executable.
- Vite (⭐68k) - Front-end build tool with hot module replacement and static asset bundling.
Hardware
- johnny-five (⭐13k) - Firmata based Arduino Framework.
- serialport (⭐5.8k) - Access serial ports for reading and writing.
- usb (⭐1.6k) - USB library.
- i2c-bus (⭐348) - I2C serial bus access.
- onoff (⭐1.2k) - GPIO access and interrupt detection.
- spi-device (⭐117) - SPI serial bus access.
- pigpio (⭐943) - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.
- gps (⭐253) - NMEA parser for handling GPS receivers.
- modbus-serial (⭐631) - A pure JavaScript implementation of MODBUS-RTU (serial and TCP).
Templating
- marko (⭐13k) - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
- nunjucks (⭐8.6k) - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
- handlebars.js (⭐18k) - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
- EJS (⭐7.7k) - Simple unopinionated templating language.
- Pug (⭐22k) - High-performance template engine heavily influenced by Haml.
Web frameworks
- Fastify (⭐32k) - Fast and low overhead web framework.
- Next.js (⭐126k) - Minimalistic framework for server-rendered universal JavaScript web apps.
- Nuxt.js (⭐54k) - Minimalistic framework for server-rendered Vue.js apps.
- Hapi (⭐15k) - Framework for building applications and services.
- Micro (⭐11k) - Minimalistic microservice framework with an async approach.
- Koa (⭐35k) - 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 (⭐65k) - Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
- Feathers (⭐15k) - Microservice framework built in the spirit of Express.
- LoopBack (⭐5k) - Powerful framework for creating REST APIs and easily connecting to backend data sources.
- Meteor (⭐44k) - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. (You might like awesome-meteor (⭐1.4k))
- Restify (⭐11k) - Enables you to build correct REST web services.
- ThinkJS (⭐5.3k) - Framework with ES2015+ support, WebSockets, REST API.
- ActionHero (⭐2.4k) - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.
- seneca (⭐4k) - Toolkit for writing microservices.
- AdonisJs (⭐17k) - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
- Moleculer (⭐6.1k) - Fast & powerful microservices framework.
- Nest (⭐67k) - Angular-inspired framework for building efficient and scalable server-side apps.
- TypeGraphQL (⭐8k) - Modern framework for creating GraphQL APIs with TypeScript, using classes and decorators.
- Tinyhttp (⭐2.7k) - Modern and fast Express-like web framework.
- Marble.js (⭐2.1k) - Functional reactive framework for building server-side apps, based on TypeScript and RxJS.
- Lad (⭐2.3k) - Framework made by a former Express TC and Koa member that bundles web, API, job, and proxy servers.
- Ts.ED (⭐2.8k) - Intuitive TypeScript framework for building server-side apps on top of Express.js or Koa.js.
- Hono (⭐19k) - Small and fast web framework.
Documentation
- documentation.js (⭐5.8k) - API documentation generator with support for ES2015+ and flow annotation.
- Docco (⭐3.6k) - Documentation generator which produces an HTML document that displays your comments intermingled with your code.
- JSDoc (⭐15k) - API documentation generator similar to JavaDoc or PHPDoc.
- Docusaurus (⭐56k) - Documentation website generator that leverages React and Markdown, and comes with translation and versioning features.
Filesystem
- del (⭐1.3k) - Delete files/folders using globs.
- globby (⭐2.5k) - Glob files with support for multiple patterns.
- chokidar (⭐11k) - Filesystem watcher which stabilizes events from
fs.watch
andfs.watchFile
as well as using nativefsevents
on macOS. - find-up (⭐580) - Find a file by walking up parent directories.
- proper-lockfile (⭐240) - Inter-process and inter-machine lockfile utility.
- load-json-file (⭐245) - Read and parse a JSON file.
- write-json-file (⭐214) - Stringify and write JSON to a file atomically.
- fs-write-stream-atomic (⭐49) - Like
fs.createWriteStream()
, but atomic. - filenamify (⭐489) - Convert a string to a valid filename.
- istextorbinary (⭐148) - Check if a file is text or binary.
- fs-jetpack (⭐775) - Completely redesigned file system API for convenience in everyday use.
- fs-extra (⭐9.5k) - Extra methods for the
fs
module. - pkg-dir (⭐235) - Find the root directory of an npm package.
- filehound (⭐222) - Flexible and fluent interface for searching the file system.
- move-file (⭐197) - Move a file, even works across devices.
- tempy (⭐423) - Get a random temporary file or directory path.
Control flow
- Promises
- pify (⭐1.5k) - Promisify a callback-style function.
- delay (⭐608) - Delay a promise a specified amount of time.
- promise-memoize (⭐59) - Memoize promise-returning functions, with expire and prefetch.
- valvelet (⭐38) - Limit the execution rate of a promise-returning function.
- p-map (⭐1.3k) - Map over promises concurrently.
- More… (⭐4.7k)
- Observables
- RxJS (⭐31k) - Reactive programming.
- observable-to-promise (⭐47) - Convert an Observable to a Promise.
- More… (⭐336)
- Streams
- Highland.js (⭐3.4k) - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
Streams
- get-stream (⭐341) - Get a stream as a string or buffer.
- from2 (⭐131) - Convenience wrapper for ReadableStream, inspired by
through2
. - into-stream (⭐207) - Convert a buffer/string/array/object into a stream.
- duplexify (⭐190) - Turn a writeable and readable stream into a single streams2 duplex stream.
- pumpify (⭐255) - Combine an array of streams into a single duplex stream.
- peek-stream (⭐56) - Transform stream that lets you peek the first line before deciding how to parse it.
- binary-split (⭐77) - Newline (or any delimiter) splitter stream.
- byline (⭐323) - Super-simple line-by-line Stream reader.
- first-chunk-stream (⭐27) - Transform the first chunk in a stream.
- pad-stream (⭐11) - Pad each line in a stream.
- multistream (⭐287) - Combine multiple streams into a single stream.
- readable-stream (⭐1k) - Mirror of Streams2 and Streams3 implementations in core.
- through2-concurrent (⭐74) - Transform object streams concurrently.
Real-time
- µWebSockets (⭐17k) - Highly scalable WebSocket server & client library.
- Socket.io (⭐61k) - Enables real-time bidirectional event-based communication.
- Faye (⭐4.4k) - Real-time client-server message bus, based on Bayeux protocol.
- SocketCluster (⭐6.2k) - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
- Primus (⭐4.5k) - An abstraction layer for real-time frameworks to prevent module lock-in.
- deepstream.io (⭐294) - Scalable real-time microservice framework.
- Kalm (⭐209) - Low-level socket router and middleware framework.
- MQTT.js (⭐8.6k) - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.
- rpc-websockets (⭐589) - JSON-RPC 2.0 implementation over WebSockets.
- Aedes (⭐1.8k) - Barebone MQTT server that can run on any stream server.
Image
- sharp (⭐29k) - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
- image-type (⭐372) - Detect the type of an image.
- image-dimensions (⭐429) - Get the dimensions of an image.
- gm (⭐6.9k) - GraphicsMagick and ImageMagick wrapper.
- lwip (⭐2.4k) - Lightweight image processor which does not require ImageMagick.
- pica (⭐3.8k) - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.
- jimp (⭐14k) - Image processing in pure JavaScript.
- qrcode (⭐7.5k) - QR code and bar code generator.
- ImageScript (⭐629) - Image processing in JavaScript, utilizing WebAssembly for performance.
Text
- iconv-lite (⭐3.1k) - Convert character encodings.
- string-length (⭐162) - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.
- camelcase (⭐678) - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.
- escape-string-regexp (⭐581) - Escape RegExp special characters.
- splice-string (⭐23) - Remove or replace part of a string like
Array#splice
. - indent-string (⭐112) - Indent each line in a string.
- strip-indent (⭐135) - Strip leading whitespace from every line in a string.
- detect-indent (⭐195) - Detect the indentation of code.
- he (⭐3.4k) - HTML entity encoder/decoder.
- i18n-node (⭐3.1k) - Simple translation module with dynamic JSON storage.
- babelfish (⭐255) - i18n with very easy syntax for plurals.
- matcher (⭐538) - Simple wildcard matching.
- unhomoglyph (⭐39) - Normalize visually similar unicode characters.
- i18next (⭐7.7k) - Internationalization framework.
- nanoid (⭐25k) - Tiny, secure, URL-friendly, unique string ID generator.
- StegCloak (⭐3.3k) - Conceal secrets within strings, in plain sight.
Number
- random-int (⭐87) - Generate a random integer.
- random-float (⭐36) - Generate a random float.
- unique-random (⭐116) - Generate random numbers that are consecutively unique.
- round-to (⭐155) - Round a number to a specific number of decimal places:
1.234
→1.2
.
Math
- ndarray (⭐1.2k) - Multidimensional arrays.
- mathjs (⭐14k) - An extensive math library.
- math-clamp (⭐14) - Clamp a number.
- algebra (⭐106) - Algebraic structures.
- multimath (⭐70) - Core to create fast image math in WebAssembly and JS.
Date
- Luxon (⭐15k) - Library for working with dates and times.
- date-fns (⭐35k) - Modern date utility.
- Day.js (⭐47k) - Immutable date library alternative to Moment.js.
- dateformat (⭐1.3k) - Date formatting.
- tz-format (⭐10) - Format a date with timezone:
2015-11-30T10:40:35+01:00
. - cctz (⭐59) - Fast parsing, formatting, and timezone conversation for dates.
URL
- normalize-url (⭐840) - Normalize a URL.
- humanize-url (⭐250) - Humanize a URL: https://sindresorhus.com → sindresorhus.com.
- url-unshort (⭐115) - Expand shortened URLs.
- speakingurl (⭐1.1k) - Generate a slug from a string with transliteration.
- linkify-it (⭐661) - Link patterns detector with full unicode support.
- url-pattern (⭐584) - Easier than regex string matching patterns for URLs and other strings.
- embedza (⭐64) - Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags.
Data validation
- joi (⭐21k) - Object schema description language and validator for JavaScript objects.
- is-my-json-valid (⭐963) - JSON Schema validator that uses code generation to be extremely fast.
- property-validator (⭐158) - Easy property validation for Express.
- schema-inspector (⭐505) - JSON API sanitization and validation.
- ajv (⭐14k) - The fastest JSON Schema validator. Supports v5, v6 and v7 proposals.
- Superstruct (⭐7k) - Simple and composable way to validate data in JavaScript (and TypeScript).
- yup (⭐23k) - Object schema validation.
- zod (⭐34k) - TypeScript-first schema validation with static type inference.
Parsing
- remark (⭐7.6k) - Markdown processor powered by plugins.
- markdown-it (⭐18k) - Markdown parser with 100% CommonMark support, extensions and syntax plugins.
- parse5 (⭐3.7k) - Fast full-featured spec compliant HTML parser.
- @parcel/css (⭐6.4k) - A CSS parser, transformer, and minifier written in Rust.
- strip-json-comments (⭐596) - Strip comments from JSON.
- strip-css-comments (⭐121) - Strip comments from CSS.
- parse-json (⭐345) - Parse JSON with more helpful errors.
- URI.js (⭐6.3k) - URL mutation.
- JSONStream (⭐1.9k) - Streaming JSON.parse and stringify.
- neat-csv (⭐320) - Fast CSV parser. Callback interface for the above.
- csv-parser (⭐1.4k) - Streaming CSV parser that aims to be faster than everyone else.
- PEG.js (⭐4.8k) - Simple parser generator that produces fast parsers with excellent error reporting.
- x-ray (⭐5.9k) - Web scraping utility.
- nearley (⭐3.6k) - Simple, fast, powerful parsing for JavaScript.
- binary-extract (⭐154) - Extract a value from a buffer of JSON without parsing the whole thing.
- Stylecow (⭐163) - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
- js-yaml (⭐6.3k) - Very fast YAML parser.
- xml2js (⭐4.9k) - XML to JavaScript object converter.
- Jison (⭐4.3k) - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.
- google-libphonenumber (⭐1.4k) - Parse, format, store and validate phone numbers.
- ref (⭐454) - Read/write structured binary data in Buffers.
- xlsx-populate (⭐952) - Read/write Excel XLSX.
- Chevrotain (⭐2.5k) - Very fast and feature rich parser building toolkit for JavaScript.
- fast-xml-parser (⭐2.5k) - Validate and parse XML.
Humanize
- pretty-bytes (⭐1.1k) - Convert bytes to a human readable string:
1337
→1.34 kB
. - pretty-ms (⭐1.1k) - Convert milliseconds to a human readable string:
1337000000
→15d 11h 23m 20s
. - ms (⭐5.1k) - Tiny millisecond conversion utility.
- pretty-error (⭐1.5k) - Errors with less clutter.
- read-art (⭐343) - Extract readable content from any page.
Compression
- yazl (⭐329) - Zip.
- yauzl (⭐704) - Unzip.
- Archiver (⭐2.8k) - Streaming interface for archive generation, supporting ZIP and TAR.
- pako (⭐5.6k) - High speed zlib port to pure js (deflate, inflate, gzip).
- tar-stream (⭐412) - Streaming tar parser and generator. Also see tar-fs (⭐350).
Network
- get-port (⭐867) - Get an available port.
- ipify (⭐273) - Get your public IP address.
- getmac (⭐357) - Get the computer MAC address.
- DHCP (⭐299) - DHCP client and server.
- netcat (⭐419) - Netcat port in pure JS.
Database
- Drivers
- PostgreSQL (⭐12k) - PostgreSQL client. Pure JavaScript and native libpq bindings.
- Redis (⭐14k) - Redis client.
- LevelUP (⭐4.1k) - LevelDB.
- MySQL (⭐18k) - MySQL client.
- couchdb-nano (⭐651) - CouchDB client.
- Aerospike (⭐200) - Aerospike client.
- Couchbase (⭐460) - Couchbase client.
- MongoDB (⭐10k) - MongoDB driver.
- ODM / ORM
- Sequelize (⭐30k) - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL, and more.
- Bookshelf (⭐6.4k) - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
- Mongoose (⭐27k) - Elegant MongoDB object modeling.
- Waterline (⭐5.4k) - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
- OpenRecord (⭐486) - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
- pg-promise (⭐3.5k) - PostgreSQL framework for native SQL using promises.
- slonik (⭐4.6k) - PostgreSQL client with strict types, detailed logging and assertions.
- Objection.js (⭐7.3k) - Lightweight ORM built on the SQL query builder Knex.
- TypeORM (⭐34k) - ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more.
- MikroORM (⭐7.7k) - TypeScript ORM based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, PostgreSQL, MySQL and SQLite.
- Prisma (⭐39k) - Modern database access (ORM alternative). Auto-generated and type-safe query builder in TypeScript. Supports PostgreSQL, MySQL & SQLite.
- Drizzle ORM (⭐24k) - TypeScript ORM that supports various databases such as PostgreSQL.
- Query builder
- Knex (⭐19k) - Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
- Other
- NeDB (⭐13k) - Embedded persistent database written in JavaScript.
- Lowdb (⭐21k) - Small JavaScript database powered by Lodash.
- Keyv (⭐2.6k) - Simple key-value storage with support for multiple backends.
- Finale (⭐187) - RESTful endpoint generator for your Sequelize models.
- database-js (⭐74) - Wrapper for multiple databases with a JDBC-like connection.
- Mongo Seeding (⭐554) - Populate MongoDB databases with JavaScript and JSON files.
- @databases (⭐604) - Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection.
- pg-mem (⭐2k) - In-memory PostgreSQL instance for your tests.
Testing
- AVA (⭐21k) - Futuristic test runner.
- Mocha (⭐23k) - Feature-rich test framework making asynchronous testing simple and fun.
- nyc (⭐5.6k) - Code coverage tool built on istanbul that works with subprocesses.
- tap (⭐2.4k) - TAP test framework.
- tape (⭐5.8k) - TAP-producing test harness.
- power-assert (⭐2.8k) - Provides descriptive assertion messages through the standard assert interface.
- Mochify (⭐346) - TDD with Browserify, Mocha, PhantomJS and WebDriver.
- trevor (⭐2.1k) - Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI.
- loadtest (⭐2.6k) - Run load tests for your web application, with an API for automation.
- Sinon.JS (⭐9.6k) - Test spies, stubs and mocks.
- navit (⭐48) - PhantomJS / SlimerJS wrapper to simplify browser test scripting.
- Nock (⭐13k) - HTTP mocking and expectations.
- intern (⭐4.4k) - Code testing stack.
- toxy (⭐2.7k) - Hackable HTTP proxy to simulate failure scenarios and network conditions.
- hook-std (⭐54) - Hook and modify stdout/stderr.
- testen (⭐175) - Run tests for multiple versions of Node.js locally with NVM.
- Nightwatch (⭐12k) - Automated UI testing framework based on Selenium WebDriver.
- WebdriverIO (⭐9k) - Automated testing based on the WebDriver protocol.
- Jest (⭐44k) - Painless JavaScript testing.
- TestCafe (⭐9.8k) - Automated browser testing.
- abstruse (⭐936) - Continuous Integration server.
- CodeceptJS (⭐4.1k) - End-to-end testing.
- Puppeteer (⭐89k) - Headless Chrome.
- Playwright (⭐66k) - Headless Chromium, WebKit, and Firefox with a single API.
- nve (⭐693) - Run any command on multiple versions of Node.js locally.
- axe-core (⭐5.9k) - Accessibility engine for automated Web UI testing.
- testcontainers-node (⭐1.9k) - Provides lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Security
- upash (⭐536) - Unified API for all password hashing algorithms.
- themis (⭐1.9k) - 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 (⭐3k) - Brute-force and DDoS attack protection.
- crypto-hash (⭐638) - Async non-blocking hashing.
- jose-simple (⭐63) - Encryption and decryption of data using the JOSE (JSON Object Signing and Encryption) standard.
Benchmarking
- Benchmark.js (⭐5.5k) - Benchmarking library that supports high-resolution timers and returns statistically significant results.
Minifiers
- babel-minify (⭐4.4k) - ES2015+ aware minifier based on the Babel toolchain.
- UglifyJS2 (⭐13k) - JavaScript minifier.
- clean-css (⭐4.2k) - CSS minifier.
- minimize (⭐163) - HTML minifier.
- imagemin (⭐5.6k) - Image minifier.
Authentication
- Passport (⭐23k) - Simple, unobtrusive authentication.
- Grant (⭐4.1k) - OAuth providers for Express, Koa, Hapi, Fastify, AWS Lambda, Azure, Google Cloud, Vercel, and many more.
Authorization
- CASL (⭐6k) - Isomorphic authorization for UI and API.
- node-casbin (⭐2.6k) - Authorization library that supports access control models like ACL, RBAC and ABAC.
- Nodemailer (⭐17k) - The fastest way to handle email.
- emailjs (⭐2.2k) - Send text/HTML emails with attachments to any SMTP server.
- email-templates (⭐3.7k) - Create, preview, and send custom email templates.
- MJML (⭐17k) - Markup language designed to reduce the pain of creating responsive emails.
Job queues
- bull (⭐15k) - Persistent job and message queue.
- agenda (⭐9.4k) - MongoDB-backed job scheduling.
- idoit (⭐74) - Redis-backed job queue engine with advanced job control.
- node-resque (⭐1.4k) - Redis-backed job queue.
- rsmq (⭐1.8k) - Redis-backed message queue.
- bee-queue (⭐3.8k) - High-performance Redis-backed job queue.
- RedisSMQ (⭐588) - Simple high-performance Redis message queue with real-time monitoring.
- sqs-consumer (⭐1.7k) - Build Amazon Simple Queue Service (SQS) based apps without the boilerplate.
- better-queue (⭐510) - Simple and efficient job queue when you cannot use Redis.
- bullmq (⭐6.1k) - Persistent job and message queue.
- bree (⭐3k) - Job task scheduler with worker threads, cron, date, and human syntax support.
Node.js management
- n (⭐19k) - Node.js version management.
- nave (⭐1.6k) - Virtual Environments for Node.js.
- nodeenv (⭐1.7k) - Node.js virtual environment compatible to Python's virtualenv.
- nvm for Windows (⭐37k) - Version management for Windows.
- nodenv (⭐2.2k) - Version manager that is similar to Ruby's rbenv. It supports auto version switching.
- fnm (⭐18k) - Cross-platform Node.js version manager built in Rust.
Cross-platform integration
- napi-rs (⭐6k) - Framework for building compiled Node.js add-ons in Rust via Node-API.
- Neon (⭐8k) - Rust bindings for writing safe and fast native Node.js modules.
- Edge.js (⭐644) - Run .NET and Node.js code in the same process on Windows, macOS, and Linux.
- DotNetJS (⭐666) - Consume .NET libraries in Node.js using this .NET interoperability layer.
Natural language processing
- retext (⭐2.4k) - An extensible natural language system.
- franc (⭐4.1k) - Detect the language of text.
- leven (⭐715) - Measure the difference between two strings using the Levenshtein distance algorithm.
- natural (⭐11k) - Natural language facility.
- nlp.js (⭐6.2k) - Building bots, with entity extraction, sentiment analysis, automatic language identify, and more.
Process management
- PM2 (⭐41k) - Advanced Process Manager.
- nodemon (⭐26k) - Monitor for changes in your app and automatically restart the server.
- node-mac (⭐537) - Run scripts as a native Mac daemon and log to the console app.
- node-linux (⭐419) - Run scripts as native system service and log to syslog.
- node-windows (⭐2.8k) - Run scripts as a native Windows service and log to the Event viewer.
- supervisor (⭐3.8k) - Restart scripts when they crash or restart when a
*.js
file changes. - Phusion Passenger (⭐5k) - Friendly process manager that integrates directly into Nginx.
Automation
- robotjs (⭐12k) - Desktop Automation: control the mouse, keyboard and read the screen.
- nut.js (⭐2.2k) - Cross-platform native GUI automation / testing framework with image matching capabilities which integrates with Jest.
AST
- Acorn (⭐11k) - Tiny, fast JavaScript parser.
- babel-parser (⭐43k) - JavaScript parser used in Babel.
Static site generators
- DocPad (⭐3.1k) - Static site generator with dynamic abilities and huge plugin ecosystem.
- docsify (⭐28k) - Markdown documentation site generator with no statically built HTML files.
- Charge (⭐427) - Opinionated, zero-config static site generator using JSX and MDX.
Content management systems
- KeystoneJS (⭐9.2k) - CMS and web application platform built on Express and MongoDB.
- ApostropheCMS (⭐4.3k) - Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.
- Strapi (⭐63k) - Content Management Framework (headless-CMS) to build powerful APIs.
- Factor (⭐1.4k) - Vue.js dashboard framework and headless CMS.
- AdminBro (⭐8.2k) - Auto-generated admin panel with CRUD for all your resources.
- Graphweaver (⭐482) - CMS and headless GraphQL API.
Forum
- nodeBB (⭐14k) - Forum platform for the modern web.
Blogging
- Ghost (⭐47k) - Simple, powerful publishing platform.
- Hexo (⭐39k) - Fast, simple and powerful blogging framework.
Weird
- cows (⭐417) - ASCII cows.
- superb (⭐394) - Get superb like words.
- cat-names (⭐271) - Get popular cat names.
- dog-names (⭐124) - Get popular dog names.
- superheroes (⭐233) - Get superhero names.
- supervillains (⭐117) - Get supervillain names.
- cool-ascii-faces (⭐1.8k) - Get some cool ascii faces.
- cat-ascii-faces (⭐254) -
₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”
. - nerds (⭐109) - Get data from nerdy topics like Harry Potter, Star Wars, and Pokémon.
Serialization
- snappy (⭐481) - Native bindings for Google's Snappy compression library.
- protobuf (⭐9.9k) - Implementation of Protocol Buffers.
- compactr (⭐100) - Implementation of the Compactr protocol.
Miscellaneous
- execa (⭐6.8k) - Better
child_process
. - cheerio (⭐29k) - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
- open (⭐3.2k) - Opens stuff like websites, files, executables.
- hasha (⭐955) - Hashing made simple. Get the hash of a buffer/string/stream/file.
- dot-prop (⭐814) - Get a property from a nested object using a dot path.
- onetime (⭐162) - Only run a function once.
- mem (⭐1.1k) - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
- strip-bom (⭐111) - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
- os-locale (⭐225) - Get the system locale.
- ssh2 (⭐5.5k) - SSH2 client and server module.
- adit (⭐55) - SSH tunneling made simple.
- file-type (⭐3.7k) - Detect the file type of a Buffer.
- Bottleneck (⭐1.8k) - Rate limiter that makes throttling easy.
- webworker-threads (⭐2.3k) - Lightweight Web Worker API implementation with native threads.
- clipboardy (⭐1.8k) - Access the system clipboard (copy/paste).
- node-pre-gyp (⭐1.1k) - Makes it easy to publish and install Node.js C++ addons from binaries.
- opencv (⭐4.4k) - Bindings for OpenCV. The defacto computer vision library.
- dotenv (⭐19k) - Load environment variables from .env file.
- semver (⭐5.1k) - Semantic version parser.
- nodegit (⭐5.6k) - Native bindings to Git.
- json-strictify (⭐19) - Safely serialize a value to JSON without data loss or going into an infinite loop.
- jsdom (⭐20k) - JavaScript implementation of HTML and the DOM.
- @sindresorhus/is (⭐1.7k) - Type check values.
- env-dot-prop (⭐33) - Get, set, or delete nested properties of process.env using a dot path.
- node-video-lib (⭐356) - Pure JavaScript library for working with MP4 and FLV video files and creating MPEG-TS chunks for HLS streaming.
- basic-ftp (⭐670) - FTP/FTPS client.
- cashify (⭐401) - Currency conversion.
- genepi (⭐80) - Automatically generate a native Node.js addon from C++ code.
- husky (⭐32k) - Create Git hook scripts.
- patch-package (⭐10k) - Make and preserve fixes to npm dependencies.
- editly (⭐4.8k) - Declarative video editing API.
- wild-wild-path (⭐720) - Object property paths with wildcards and regexes.
- uint8array-extras (⭐213) - 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 (⭐100k) - 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 (⭐9.8k) - An introduction to Node.js.
- module-best-practices (⭐1.5k) - Some good practices when writing new npm modules.
- The Node Way (⭐1.5k) - 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 (⭐1.5k) - Introduction to Node.js core features and asynchronous JavaScript.
- Portable Node.js guide (⭐1.4k) - 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.
- npm addict - Your daily injection of npm packages.
- npm-compare.com - Compare and discover 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 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 - 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 (⭐1.3k)
- Stream FAQs (⭐195) - Answering common questions about streams, covering pagination, events, and more.
- Strong Node.js (⭐500) - 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 (⭐15k) - Auto-generates fully functional apps.
- RunJS - Desktop JavaScript playground.
Community
Miscellaneous
- nodebots - Robots powered by JavaScript.
- node-module-boilerplate (⭐736) - Boilerplate to kickstart creating a node module.
- modern-node (⭐245) - Toolkit for creating node modules with Jest, Prettier, ESLint, and Standard.
- generator-nm (⭐743) - Scaffold out a node module.
- Microsoft Node.js Guidelines (⭐2.5k) - Tips, tricks, and resources for working with Node.js on Microsoft platforms.
- Module Requests & Ideas (⭐544) - Request a JavaScript module you wish existed or get ideas for modules.
- v8-perf (⭐2.2k) - Notes and resources related to V8 and thus Node.js performance.
Related lists
- awesome-npm (⭐4.5k) - Resources and tips for using npm.
- awesome-cross-platform-nodejs (⭐1.1k) - Resources for writing and testing cross-platform code.