    <div>
        <img width="500" src="media/logo.svg" alt="Awesome Node.js">
        <br>
        <br>
        <br>
        <h3><a href="https://www.producthunt.com/posts/pandan">My macOS app Pandan is on Product Hunt</a></h3>
        <br>
        <br>
    </div>
    <br>
    <hr>
    <p>
        <p>
            <sup>
                <a href="https://github.com/sponsors/sindresorhus">My open source work is supported by the community</a>
            </sup>
        </p>
        <sup>Special thanks to:</sup>
        <br>
        <br>
        <a href="https://standardresume.co/tech">
            <img src="https://sindresorhus.com/assets/thanks/standard-resume-logo.svg" width="160"/>
        </a>
        <br>
        <br>
        <a href="https://retool.com/?utm_campaign=sindresorhus">
            <img src="https://sindresorhus.com/assets/thanks/retool-logo.svg" width="210"/>
        </a>
        <br>
        <br>
        <a href="https://doppler.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=awesome-node&utm_source=github">
            <div>
                <img src="https://dashboard.doppler.com/imgs/logo-long.svg" width="240" alt="Doppler">
            </div>
            <b>All your environment variables, in one place</b>
            <div>
                <sub>Stop struggling with scattered API keys, hacking together home-brewed tools,</sub>
                <br>
                <sup>and avoiding access controls. Keep your team and servers in sync with Doppler.</sup>
            </div>
        </a>
        <br>
        <a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=awesome-nodejs&utm_source=github">
            <div>
                <img src="https://sindresorhus.com/assets/thanks/workos-logo-white-bg.svg" width="200" alt="WorkOS">
            </div>
            <b>Your app, enterprise-ready.</b>
            <div>
                <sub>Start selling to enterprise customers with just a few lines of code.</sub>
                <br>
                <sup>Add Single Sign-On (and more) in minutes instead of months.</sup>
            </div>
        </a>
        <br>
        <a href="https://strapi.io/?ref=sindresorhus">
            <div>
                <img src="https://sindresorhus.com/assets/thanks/strapi-logo-white-bg.png" width="200" alt="Strapi">
            </div>
            <b>Strapi is the leading open-source headless CMS.</b>
            <div>
                <sup>It’s 100% JavaScript, fully customizable, and developer-first.</sup>
            </div>
        </a>
        <br>
        <a href="https://oss.capital">
            <div>
                <img src="https://sindresorhus.com/assets/thanks/oss-capital-logo-white-bg.svg" width="300" alt="OSS Capital">
            </div>
            <div>
                <sup><b>Founded in 2018, OSS Capital is the first and only venture capital platform focused<br>exclusively on supporting early-stage COSS (commercial open source) startup founders.</b></sup>
            </div>
        </a>
        <br>
        <br>
        <a href="https://www.gitpod.io/?utm_campaign=sindresorhus&utm_medium=referral&utm_content=awesome&utm_source=github">
            <div>
                <img src="https://sindresorhus.com/assets/thanks/gitpod-logo-white-bg.svg" width="220" alt="Gitpod">
            </div>
            <b>Dev environments built for the cloud</b>
            <div>
                <sub>
                Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev
                <br>
                environments for all your branches. As a result team members can instantly start coding with fresh dev environments
                <br>
                for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
                </sub>
            </div>
        </a>
    </p>
    <hr>
    <br>
    <br>
    <br>
    <br>
    <br>
    <a href="https://awesome.re">
        <img src="https://awesome.re/badge-flat2.svg" alt="Awesome">
    </a>
    <p>
        <sub>Just type <a href="https://node.cool"><code>node.cool</code></a> to go here. Follow me on <a href="https://twitter.com/sindresorhus">Twitter</a>.</sub>
    </p>
    <br>
    <p>
        <a href="https://en.wikipedia.org/wiki/Node.js">Node.js</a> is an open-source, cross-platform, JavaScript runtime for writing servers and command-line tools.
    </p>
    <br>

## 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
  - Email
  - Job queues
  - Node.js management
  - Natural language processing
  - Process management
  - Automation
  - AST
  - Static site generators
  - Content management systems
  - Forum
  - Blogging
  - Weird
  - Serialization
  - Miscellaneous
- Resources
  - Tutorials
  - Discovery
  - Articles
  - Newsletters
  - Videos
  - Books
  - Blogs
  - Courses
  - Cheatsheets
  - Tools
  - Community
  - Miscellaneous
- Related lists

## Official

- Website
- Documentation
- Repository

## Packages

### Mad science

- webtorrent - Streaming torrent client for Node.js and the browser.
- peerflix - Streaming torrent client.
- dat - Real-time replication and versioning for data sets.
- 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.
- Kadence - Kademlia distributed hash table.
- seedshot - Temporary P2P screenshot sharing from your browser.
- js-git - JavaScript implementation of Git.
- skale - High performance distributed data processing engine.
- 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.
- emoj - Find relevant emoji from text on the command-line.
- 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.
- Standard - JavaScript Standard Style — One style to rule them all.
- ESLint - The pluggable linting utility for JavaScript.
- dev-time - Get the current local time of a GitHub user.
- 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.
- wifi-password - Get the current wifi password.
- wallpaper - Change the desktop wallpaper.
- brightness - Change the screen brightness.
- torrent - Download torrents.
- kill-tabs - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory.
- alex - Catch insensitive, inconsiderate writing.
- pen - Live Markdown preview in the browser from your favorite editor.
- subdownloader - Subtitle downloader for movies and TV series.
- dark-mode - Toggle the macOS Dark Mode.
- iponmap - IP location finder.
- Jsome - Pretty prints JSON with configurable colors and indentation.
- itunes-remote - Interactively control iTunes.
- mobicon - Mobile app icon generator.
- mobisplash - Mobile app splash screen generator.
- diff2html-cli - Pretty git diff to HTML generator.
- Cash - Cross-platform Unix shell commands in pure JavaScript.
- 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.
- Folktale - Suite of libraries for generic functional programming in JavaScript that allows you to write elegant, modular applications with fewer bugs, and more reuse.
- 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.
- Bacon.js - Functional reactive programming.
- RxJS - Functional reactive library for transforming, composing, and querying various kinds of data.
- Lazy.js - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases.
- Kefir.js - Reactive library with focus on high performance and low memory usage.

### HTTP

- got - Nicer interface to the built-in `http` module.
- gh-got - Convenience wrapper for `got` to interact with the GitHub API.
- axios - Promise based HTTP client (works in the browser too).
- wreck - HTTP Client Utilities.
- download - Download and extract files effortlessly.
- http-proxy - HTTP proxy.
- superagent - HTTP request library.
- node-fetch - `window.fetch` for Node.js.
- flashheart - REST client.
- 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.
- undici - High performance HTTP client written from scratch with zero dependencies.

### Debugging / Profiling

- ndb - Improved debugging experience, enabled by Chrome DevTools.
- ironNode - Node.js debugger supporting ES2015 out of the box.
- node-inspector - Debugger based on Blink Developer Tools.
- 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.

### 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.
- signale - Console logger.
- 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.
- listr - 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.
- first-run - Check if it’s the first time the process is run.
- 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.
- update-notifier - Update notifications for your CLI app.
- 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.
- columnify - Create text-based columns suitable for console output. Supports cell wrapping.
- 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.
- loud-rejection - Make unhandled promise rejections fail loudly instead of the default silent fail.
- 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.
- term-size - Reliably get the terminal window size.
- Cliffy - Framework for interactive CLIs.

### 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.
- Start - Functional task runner with shareable presets.
- ygor - Promising task runner for when `npm run` isn’t enough and everything else is too much.
- 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.

### 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.

### 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

- Hapi - Framework for building applications and services.
- 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.
- Next.js - Minimalistic framework for server-rendered universal JavaScript web apps.
- Nuxt.js - Minimalistic framework for server-rendered Vue.js apps.
- seneca - Toolkit for writing microservices.
- AdonisJs - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
- Hemera - Write reliable and fault-tolerant microservices with NATS.
- Micro - Minimalistic microservice framework with an async approach.
- Moleculer - Fast & powerful microservices framework.
- Fastify - Fast and low overhead web 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.

### Documentation

- documentation.js - API documentation generator with support for ES2015+ and flow annotation.
- ESDoc - Documentation generator targeting ES2015, attaching test code and measuring documentation coverage.
- 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.
- cpy - Copy files.
- rimraf - Recursively delete files like `rm -rf`.
- make-dir - Recursively create directories like `mkdir -p`.
- graceful-fs - Drop-in replacement for the `fs` module with various improvements.
- 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.
- lnfs - Force create symlinks like `ln -fs`.
- 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
  - Bluebird - Promise library with focus on innovative features and performance.
  - 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
  - zen-observable - Implementation of Observables.
  - RxJS - Reactive programming.
  - observable-to-promise - Convert an Observable to a Promise.
  - More…
- Streams
  - Highland.js - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
- Callbacks
  - each-async - Async concurrent iterator like forEach.
  - async - Provides straight-forward, powerful functions for working with asynchronicity.
- Channels
  - js-csp - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go).

### Streams

- through2 - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise.
- from2 - Convenience wrapper for ReadableStream, inspired by `through2`.
- get-stream - Get a stream as a string or buffer.
- 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.
- stream-combiner2 - Turn a pipeline 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 image type of a Buffer/Uint8Array.
- 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.
- probe-image-size - Get the size of most image formats without a full download.
- 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.
- execall - Find multiple RegExp matches in a string.
- 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.
- Moment.js - Parse, validate, manipulate, and display dates.
- 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: http://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).

### 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.
- 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.
- PostCSS - CSS parser / stringifier.
- 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.
- decompress - Decompression module with support for `tar`, `tar.gz` and `zip` files out of the box.

### 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
  - 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.
- 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.
  - Massive - PostgreSQL data access tool.
  - 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.
- 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.
- matcha - Simplistic approach to benchmarking.

### Minifiers

- babili - 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.

### 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.

### 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.

### 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.
- cherow - JavaScript parser with focus on performance and stability.

### Static site generators

- Wintersmith - Flexible, minimalistic, multi-platform static site generator.
- Assemble - Static site generator for Node.js, Grunt.js, and Yeoman.
- DocPad - Static site generator with dynamic abilities and huge plugin ecosystem.
- Phenomic - Modern static website generator based on the React and Webpack 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.
- Tipe - Developer-first content management system with GraphQL and REST API from a schema file.
- Factor - Vue.js dashboard framework and headless CMS.
- AdminBro - Auto-generated admin panel with CRUD for all your resources.

### 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.
- Electron - Build cross platform desktop apps with web technologies. (You might like awesome-electron)
- 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.
- import-fresh - Import a module while bypassing the cache.
- 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.
- import-lazy - Import a module lazily.
- file-type - Detect the file type of a Buffer.
- Bottleneck - Rate limiter that makes throttling easy.
- ow - Function argument validation for humans.
- 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.
- remote-git-tags - Get tags from a remote git repo.
- semver - Semantic version parser.
- Faker.js - Generate massive amounts of fake data.
- nodegit - Native bindings to Git.
- json-strictify - Safely serialize a value to JSON without data loss or going into an infinite loop.
- resolve-from - Resolve the path of a module like `require.resolve()` but from a given path.
- simplecrawler - Event driven web crawler.
- jsdom - JavaScript implementation of HTML and the DOM.
- hypernova - Server-side rendering your JavaScript views.
- @sindresorhus/is - Type check values.
- env-dot-prop - Get, set, or delete nested properties of process.env using a dot path.
- emittery - Simple and modern async event emitter.
- 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.

## 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.
- stream-handbook - How to write Node.js programs with streams.
- 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.
- npm addict - Your daily injection of npm packages.
- npmcompare.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
- Art of README - Learn the art of writing quality READMEs.
- Using Express to Quickly Build a GraphQL Server

### Newsletters

- Node Weekly - Weekly e-mail round-up of Node.js news and articles.
- Node Module Of The Week! - Weekly dose of hand picked node modules.

### Videos

- Introduction to Node.js with Ryan Dahl
- Hands on with Node.js
- Nodetuts - Series of talks, including TCP & HTTP API servers, async programming, and more.
- 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
- Practical Node.js: Building Real-World Scalable Web Apps
- Mixu’s Node book
- Pro Express.js
- 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

### 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.

### Community

- Gitter
- `#node.js` on Freenode
- 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.