Ranked awesome lists, all in one place
This list is a copy of sindresorhus/awesome-nodejs with ranks
My open source work is supported by the community
Just type node.cool
to go here. Check out my blog and follow me on Twitter.
Contents
- 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
- Natural language processing
- Process management
- Automation
- AST
- Static site generators
- Content management systems
- Forum
- Blogging
- Weird
- Serialization
- Miscellaneous
- Resources
Packages
Mad science
- webtorrent - Streaming torrent client for Node.js and the browser.
- peerflix ★4801 - Streaming torrent client.
- dat - Real-time replication and versioning for data sets.
- ipfs ★2486 - 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 ★276 - All of Wikipedia on BitTorrent.
- peercast ★382 - Stream a torrent video to Chromecast.
- BitcoinJS ★2800 - Clean, readable, proven Bitcoin library.
- Bitcore ★2801 - Pure and powerful Bitcoin library.
- PDFKit ★4026 - PDF generation library.
- turf ★3679 - Modular geospatial processing and analysis engine.
- webcat ★373 ⏳1Y - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.
- NodeOS ★5423 - The first operating system powered by npm.
- Brain.js ★5403 - Machine-learning framework.
- Cytoscape.js ★4392 - Graph theory (a.k.a. network) modeling and analysis.
- Kadence - Kademlia distributed hash table.
- seedshot - Temporary P2P screenshot sharing from your browser.
- js-git ★3382 - JavaScript implementation of Git.
- skale - High performance distributed data processing engine.
- xlsx ★10936 - Pure JS Excel spreadsheet reader and writer.
- isomorphic-git ★3089 - Pure JavaScript implementation of Git.
Command-line apps
- np ★3241 - Better
npm publish
. - npm-name ★74 - Check whether a package name is available on npm.
- gh-home ★94 ⏳1Y - Open the GitHub page of the repo in the current directory.
- npm-home ★135 - Open the npm page of a package.
- trash ★1558 - Safer alternative to
rm
. - speed-test ★2987 - Test your internet connection speed and ping.
- emoj ★1520 - Find relevant emoji from text on the command-line.
- pageres ★8361 - Capture website screenshots.
- cpy ★174 - Copy files.
- vtop ★2802 - More better top, with nice charts.
- empty-trash ★85 ⏳1Y - Empty the trash.
- is-up ★279 ⏳2Y - Check whether a website is up or down.
- is-online ★403 - Check if the internet connection is up.
- public-ip ★313 - Get your public IP address.
- clipboard-cli ★134 ⏳1Y - Copy & paste on the terminal.
- XO ★3843 - 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 ★153 ⏳2Y - Get the current local time of a GitHub user.
- David ★819 - Tells you when your package npm dependencies are out of date.
- http-server ★7018 - Simple, zero-config command-line HTTP server.
- Live Server ★2205 - Development HTTP-server with livereload capability.
- bcat ★267 ⏳3Y - Pipe command output to web browsers.
- normit ★193 ⏳1Y - Google Translate with speech synthesis in your terminal.
- fkill ★5166 - Fabulously kill processes. Cross-platform.
- pjs ★333 - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.
- license-checker ★647 - Check licenses of your app’s dependencies.
- browser-run ★315 - Easily run code in a browser environment.
- tmpin ★109 - Adds stdin support to any CLI app that accepts file input.
- wifi-password ★128 ⏳1Y - Get the current wifi password.
- wallpaper ★503 - Change the desktop wallpaper.
- brightness ★124 - Change the screen brightness.
- torrent ★515 ⏳2Y - Download torrents.
- kill-tabs ★228 - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory.
- alex ★2285 - Catch insensitive, inconsiderate writing.
- pen - Live Markdown preview in the browser from your favorite editor.
- subdownloader ★91 - Subtitle downloader for movies and TV series.
- dark-mode ★330 - Toggle the macOS Dark Mode.
- iponmap ★166 ⏳1Y - IP location finder.
- Jsome ★119 - Pretty prints JSON with configurable colors and indentation.
- itunes-remote ★323 - Interactively control iTunes.
- mobicon ★46 ⏳2Y - Mobile app icon generator.
- mobisplash ★26 ⏳1Y - Mobile app splash screen generator.
- diff2html-cli ★137 - Pretty git diff to HTML generator.
- Cash ★7528 - Cross-platform Unix shell commands in pure JavaScript.
- trymodule ★1006 ⏳1Y - Try out npm packages in the terminal.
- jscpd ★754 - Copy/paste detector for source code.
- atmo ★691 - Server-side API mocking.
- auto-install ★863 - Auto installs dependencies as you code.
- lessmd ★85 - Markdown in the terminal.
- cost-of-modules ★2156 - Find out which dependencies are slowing you down.
- localtunnel ★6965 - Expose your localhost to the world.
- svg-term-cli ★626 - Share terminal sessions via SVG.
- gtop ★6823 - System monitoring dashboard for the terminal.
- themer ★1615 - Generate themes for your editor, terminal, wallpaper, Slack, and more.
Functional programming
- lodash - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
- immutable ★24085 - Immutable data collections.
- Ramda ★12750 - 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 ★923 - 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 ★4983 - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases.
- Kefir.js ★1440 - Reactive library with focus on high performance and low memory usage.
HTTP
- got ★2713 - Nicer interface to the built-in
http
module. - gh-got ★111 - Convenience wrapper for
got
to interact with the GitHub API. - axios - Promise based HTTP client (works in the browser too).
- request ★19895 - Simplified HTTP request client.
- wreck ★314 - HTTP Client Utilities.
- download ★707 - Download and extract files effortlessly.
- http-proxy ★8856 - HTTP proxy.
- superagent ★12936 - HTTP request library.
- node-fetch ★3167 -
window.fetch
for Node.js. - flashheart ★85 - REST client.
- http-fake-backend ★149 - Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.
- cacheable-request ★101 - Wrap native HTTP requests with RFC compliant cache support.
- gotql - GraphQL request library built on got ★2713.
Debugging / Profiling
- ironNode ★2368 - Node.js debugger supporting ES2015 out of the box.
- node-inspector ★12178 - Debugger based on Blink Developer Tools.
- debug ★6291 - Tiny debugging utility.
- why-is-node-running ★736 - Node.js is running but you don’t know why?
- njsTrace ★218 - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.
- vstream ★53 ⏳3Y - Instrumentable streams mix-ins to inspect a pipeline of streams.
- stackman ★164 - Enhance an error stacktrace with code excerpts and other goodies.
- locus - Starts a REPL at runtime that has access to all variables.
- 0x ★1011 - Flamegraph profiling.
- ctrace ★97 ⏳2Y - Well-formatted and improved trace system calls and signals.
- leakage ★1249 - Write memory leak tests.
Logging
- pino ★2782 - Extremely fast logger inspired by Bunyan.
- winston ★10651 - Multi-transport async logging library.
- console-log-level ★25 - The most simple logger imaginable with support for log levels and custom prefixes.
- storyboard ★462 - End-to-end, hierarchical, real-time, colorful logs and stories.
- signale ★5756 - Hackable console logger with beautiful output.
Command-line utilities
- chalk ★9259 - Terminal string styling done right.
- meow ★1329 - CLI app helper.
- yargs ★4709 - Command-line parser that automatically generates an elegant user-interface.
- ora ★3182 - Elegant terminal spinner.
- get-stdin ★162 - Easier stdin.
- log-update ★478 - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
- Ink ★6073 - React for interactive command-line apps.
- listr ★1578 - Terminal task list.
- conf ★275 - Simple config handling for your app or module.
- ansi-escapes ★195 - ANSI escape codes for manipulating the terminal.
- log-symbols ★332 - Colored symbols for various log levels.
- figures ★256 - Unicode symbols with Windows CMD fallbacks.
- boxen ★358 - Create boxes in the terminal.
- terminal-link ★105 - Create clickable links in the terminal.
- terminal-image ★250 - Display images in the terminal.
- string-width ★98 - Get the visual width of a string - the number of columns required to display it.
- cli-truncate ★31 - Truncate a string to a specific width in the terminal.
- first-run ★53 ⏳1Y - Check if it’s the first time the process is run.
- vorpal ★4682 - Interactive CLI apps.
- blessed ★7498 - Curses-like library.
- Inquirer.js ★7332 - Interactive command-line prompt.
- yn ★107 - Parse yes/no like values.
- cli-table3 ★7 - Pretty unicode tables.
- drawille ★740 - Draw on the terminal with unicode braille characters.
- update-notifier ★990 - Update notifications for your CLI app.
- ascii-charts ★220 ⏳1Y - ASCII bar chart in the terminal.
- progress - Flexible ascii progress bar.
- insight ★425 - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
- cli-cursor ★43 ⏳1Y - Toggle the CLI cursor.
- columnify ★301 - Create text-based columns suitable for console output. Supports cell wrapping.
- cli-columns ★11 - Columnated unicode and ansi-safe text lists.
- cfonts ★319 - Sexy ASCII fonts for the console.
- multispinner ★214 ⏳1Y - Multiple, simultaneous, individually controllable CLI spinners.
- omelette ★716 - Shell autocompletion helper.
- cross-env ★2689 - Set environment variables cross-platform.
- shelljs ★8008 - Portable Unix shell commands.
- sudo-block ★62 - Block users from running your app with root permissions.
- loud-rejection ★213 - Make unhandled promise rejections fail loudly instead of the default silent fail.
- sparkly ★272 ⏳2Y - Generate sparklines ▁▂▃▅▂▇
- Bit ★2097 - Create, maintain, find and use small modules and components across repositories.
- gradient-string ★288 - Beautiful color gradients in terminal output.
- oclif ★2059 - CLI framework complete with parser, automatic documentation, testing, and plugins.
- term-size ★73 - Reliably get the terminal window size.
Build tools
- parcel ★23465 - Blazing fast, zero config web app bundler.
- webpack ★41885 - Packs modules and assets for the browser.
- rollup ★13015 - Next-generation ES2015 module bundler.
- gulp - Streaming and fast build system that favors code over config.
- Broccoli ★3120 - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
- Brunch ★6481 - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
- Start ★345 - Functional task runner with shareable presets.
- ygor ★54 - Promising task runner for when
npm run
isn’t enough and everything else is too much. - FuseBox ★3380 - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.
- pkg ★10172 - Package your Node.js project into an executable.
Hardware
- johnny-five ★9161 - Firmata based Arduino Framework.
- serialport - Access serial ports for reading and writing.
- usb - USB library.
- i2c-bus ★121 - I2C serial bus access.
- onoff ★678 - GPIO access and interrupt detection.
- spi-device ★39 - SPI serial bus access.
- pigpio ★320 - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.
- gps ★61 - NMEA parser for handling GPS receivers.
Templating
- marko ★6355 - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
- nunjucks ★5330 - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
- handlebars.js ★13439 - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
- EJS ★2550 - Simple unopinionated templating language.
- Pug ★16817 - 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 ★1250)
- Restify - Enables you to build correct REST web services.
- ThinkJS ★4366 - Framework with ES2015+ support, WebSockets, REST API.
- ActionHero ★1848 - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.
- MERN - Easily build production-ready universal apps with MongoDB, Express, React, and webpack.
- Next.js ★26529 - Minimalistic framework for server-rendered universal JavaScript web apps.
- Nuxt.js ★13104 - Minimalistic framework for server-rendered Vue.js apps.
- seneca ★2983 - Toolkit for writing microservices.
- AdonisJs - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
- Hemera ★530 - Write reliable and fault-tolerant microservices with NATS.
- Micro ★6765 - Minimalistic microservice framework with an async approach.
- Moleculer - Fast & powerful microservices framework.
- Fastify ★7351 - Fast and low overhead web framework.
- Nest ★6685 - Angular-inspired framework for building efficient and scalable server-side apps.
Documentation
- documentation.js ★3840 - API documentation generator with support for ES2015+ and flow annotation.
- ESDoc ★2099 - 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.
Filesystem
- del ★827 - Delete files/folders using globs.
- globby ★667 - Glob files with support for multiple patterns.
- cpy ★174 - Copy files.
- rimraf ★2528 - Recursively delete files like
rm -rf
. - make-dir ★303 - Recursively create directories like
mkdir -p
. - graceful-fs ★752 - Drop-in replacement for the
fs
module with various improvements. - chokidar ★4236 - Filesystem watcher which stabilizes events from
fs.watch
andfs.watchFile
as well as using nativefsevents
on macOS. - find-up ★151 - Find a file by walking up parent directories.
- proper-lockfile - Inter-process and inter-machine lockfile utility.
- load-json-file ★104 - Read and parse a JSON file.
- write-json-file ★89 - Stringify and write JSON to a file atomically.
- fs-write-stream-atomic ★43 ⏳1Y - Like
fs.createWriteStream()
, but atomic. - filenamify ★166 - Convert a string to a valid filename.
- lnfs ★9 - Force create symlinks like
ln -fs
. - istextorbinary ★43 - Check if a file is text or binary.
- fs-jetpack ★398 - Completely redesigned file system API for convenience in everyday use.
- fs-extra ★4315 - Extra methods for the
fs
module. - pkg-dir ★67 - Find the root directory of an npm package.
- filehound ★117 - Flexible and fluent interface for searching the file system.
Control flow
- Promises
- Bluebird ★16957 - Promise library with focus on innovative features and performance.
- pify ★968 - Promisify a callback-style function.
- delay ★232 - Delay a promise a specified amount of time.
- promise-memoize ★28 - Memoize promise-returning functions, with expire and prefetch.
- valvelet ★14 ⏳1Y - Limit the execution rate of a promise-returning function.
- p-map ★272 - Map over promises concurrently.
- More…
- Observables
- zen-observable ★389 - Implementation of Observables.
- RxJS ★13323 - Reactive programming.
- observable-to-promise ★224 - Convert an Observable to a Promise.
- More…
- Streams
- Highland.js ★2961 - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
- Callbacks
- each-async ★101 ⏳1Y - Async concurrent iterator like forEach.
- async ★24184 - Provides straight-forward, powerful functions for working with asynchronicity.
- Channels
- js-csp ★2118 - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go).
Streams
- through2 ★1376 - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise.
- from2 ★95 ⏳1Y - Convenience wrapper for ReadableStream, inspired by
through2
. - get-stream ★113 ⏳1Y - Get a stream as a string or buffer.
- into-stream ★64 - Convert a buffer/string/array/object into a stream.
- duplexify ★131 - Turn a writeable and readable stream into a single streams2 duplex stream.
- pumpify ★140 - Combine an array of streams into a single duplex stream.
- peek-stream ★40 - Transform stream that lets you peek the first line before deciding how to parse it.
- binary-split ★58 ⏳1Y - Newline (or any delimiter) splitter stream.
- byline ★255 - Super-simple line-by-line Stream reader.
- first-chunk-stream ★18 - Transform the first chunk in a stream.
- pad-stream ★5 ⏳1Y - Pad each line in a stream.
- multistream ★138 - Combine multiple streams into a single stream.
- stream-combiner2 ★70 ⏳2Y - Turn a pipeline into a single stream.
- readable-stream ★624 - Mirror of Streams2 and Streams3 implementations in core.
- through2-concurrent ★57 ⏳2Y - Transform object streams concurrently.
Real-time
- µWebSockets - Highly scalable WebSocket server & client library.
- Socket.io ★42286 - Enables real-time bidirectional event-based communication.
- Faye ★4099 - Real-time client-server message bus, based on Bayeux protocol.
- SocketCluster ★4756 - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
- Primus ★3596 - An abstraction layer for real-time frameworks to prevent module lock-in.
- deepstream.io ★212 - Scalable real-time microservice framework.
- Kalm ★56 - Low-level socket router and middleware framework.
- MQTT.js ★3323 - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.
Image
- sharp ★8623 - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
- image-type ★145 ⏳1Y - Detect the image type of a Buffer/Uint8Array.
- gm ★5045 - GraphicsMagick and ImageMagick wrapper.
- lwip ★2095 - Lightweight image processor which does not require ImageMagick.
- pica ★1238 - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.
- jimp ★6437 - Image processing in pure JavaScript.
- probe-image-size ★188 - Get the size of most image formats without a full download.
Text
- iconv-lite ★1722 - Convert character encodings.
- string-length ★55 - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.
- camelcase ★212 - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.
- escape-string-regexp ★240 ⏳1Y - Escape RegExp special characters.
- execall ★68 ⏳1Y - Find multiple RegExp matches in a string.
- splice-string ★13 ⏳1Y - Remove or replace part of a string like
Array#splice
. - indent-string ★56 - Indent each line in a string.
- strip-indent ★74 - Strip leading whitespace from every line in a string.
- detect-indent ★110 - Detect the indentation of code.
- he ★1537 - HTML entity encoder/decoder.
- i18n-node ★2065 - Simple translation module with dynamic JSON storage.
- babelfish ★185 ⏳2Y - i18n with very easy syntax for plurals.
- matcher ★385 - Simple wildcard matching.
- unhomoglyph ★12 ⏳1Y - Normalize visually similar unicode characters.
- i18next ★3305 - Internationalization framework.
Number
- random-int ★34 ⏳1Y - Generate a random integer.
- random-float ★17 ⏳1Y - Generate a random float.
- unique-random ★56 - Generate random numbers that are consecutively unique.
- round-to ★83 - Round a number to a specific number of decimal places:
1.234
→1.2
.
Math
- ndarray ★756 - Multidimensional arrays.
- mathjs ★6618 - An extensive math library.
- math-clamp ★4 ⏳2Y - Clamp a number.
- algebra ★60 - Algebraic structures.
- multimath ★26 - Core to create fast image math in WebAssembly and JS.
Date
- Luxon ★6464 - Library for working with dates and times.
- date-fns ★10879 - Modern date utility.
- Moment.js - Parse, validate, manipulate, and display dates.
- dateformat ★843 - Date formatting.
- tz-format ★5 ⏳1Y - Format a date with timezone:
2015-11-30T10:40:35+01:00
. - cctz ★53 - Fast parsing, formatting, and timezone conversation for dates.
URL
- normalize-url ★254 - Normalize a URL.
- humanize-url ★62 ⏳2Y - Humanize a URL: http://sindresorhus.com → sindresorhus.com.
- url-unshort ★31 ⏳1Y - Expand shortened URLs.
- speakingurl ★943 - Generate a slug from a string with transliteration.
- linkify-it ★226 - Link patterns detector with full unicode support.
- url-pattern ★375 - Easier than regex string matching patterns for URLs and other strings.
- embedza ★34 ⏳1Y - Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags.
Data validation
- joi ★8330 - Object schema description language and validator for JavaScript objects.
- is-my-json-valid ★821 - JSON Schema validator that uses code generation to be extremely fast.
- property-validator ★141 - Easy property validation for Express.
- schema-inspector ★449 - JSON API sanitization and validation.
- ajv ★3683 - The fastest JSON Schema validator. Supports v5 proposals.
Parsing
- remark - Markdown processor powered by plugins.
- markdown-it ★5558 - Markdown parser with 100% CommonMark support, extensions and syntax plugins.
- parse5 ★1754 - Fast full-featured spec compliant HTML parser.
- strip-json-comments ★365 - Strip comments from JSON.
- strip-css-comments ★78 ⏳1Y - Strip comments from CSS.
- parse-json ★130 - Parse JSON with more helpful errors.
- URI.js ★5327 - URL mutation.
- PostCSS ★18714 - CSS parser / stringifier.
- JSONStream ★1507 - Streaming JSON.parse and stringify.
- neat-csv ★67 ⏳2Y - Fast CSV parser. Callback interface for the above.
- csv-parser ★517 - Streaming CSV parser that aims to be faster than everyone else.
- PEG.js ★2830 - 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 ★142 - Extract a value from a buffer of JSON without parsing the whole thing.
- Stylecow ★125 ⏳1Y - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
- js-yaml ★3071 - Very fast YAML parser.
- xml2js ★3225 - XML to JavaScript object converter.
- Jison ★3084 - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.
- google-libphonenumber - Parse, format, store and validate phone numbers.
- ref ★283 - Read/write structured binary data in Buffers.
- xlsx-populate ★210 - Read/write Excel XLSX.
- Chevrotain ★753 - Very fast and feature rich parser building toolkit for JavaScript.
- fast-xml-parser ★213 - Validate and parse XML.
Humanize
- pretty-bytes ★368 - Convert bytes to a human readable string:
1337
→1.34 kB
. - pretty-ms ★297 - Convert milliseconds to a human readable string:
1337000000
→15d 11h 23m 20s
. - ms - Tiny millisecond conversion utility.
- pretty-error ★940 - Errors with less clutter.
- read-art ★259 - Extract readable content from any page.
Compression
- yazl ★150 - Zip.
- yauzl ★305 - Unzip.
- Archiver ★1251 - Streaming interface for archive generation, supporting ZIP and TAR.
- pako ★1691 - High speed zlib port to pure js (deflate, inflate, gzip).
- tar-stream - Streaming tar parser and generator. Also see tar-fs ★218.
- decompress ★224 - Decompression module with support for
tar
,tar.gz
andzip
files out of the box.
Network
- get-port ★244 - Get an available port.
- ipify ★138 ⏳1Y - Get your public IP address.
- getmac ★142 - Get the computer MAC address.
- DHCP ★112 - DHCP client and server.
- netcat ★194 - Netcat port in pure JS.
Database
- Drivers
- PostgreSQL ★6219 - PostgreSQL client. Pure JavaScript and native libpq bindings.
- Redis ★4303 - Redis client.
- LevelUP ★3275 - LevelDB.
- MySQL ★12253 - MySQL client.
- couchdb-nano ★171 - CouchDB client.
- Aerospike ★149 - Aerospike client.
- Couchbase ★375 - Couchbase client.
- MongoDB ★6982 - MongoDB driver.
- ODM / ORM
- Sequelize ★14833 - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL.
- Bookshelf ★4966 - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
- Massive ★0 - PostgreSQL data access tool.
- Mongoose ★16057 - Elegant MongoDB object modeling.
- Waterline ★4630 - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
- OpenRecord ★278 - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
- orm2 ★2860 - ORM for PostgreSQL, MariaDB, MySQL, Amazon Redshift, SQLite, MongoDB.
- pg-promise ★1827 - PostgreSQL framework for native SQL using promises.
- Objection.js ★2786 - Lightweight ORM built on the SQL query builder Knex.
- TypeORM ★6876 - ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more.
- Query builder
- Knex ★7191 - Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
- Other
- NeDB ★8423 - Embedded persistent database written in JavaScript.
- Lowdb ★8136 - Small JavaScript database powered by Lodash.
- Keyv ★541 - Simple key-value storage with support for multiple backends.
- Finale ★54 - RESTful endpoint generator for your Sequelize models.
- database-js ★8 - Wrapper for multiple databases with a JDBC-like connection.
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 ★4639 - TAP-producing test harness.
- power-assert ★2013 - Provides descriptive assertion messages through the standard assert interface.
- Mochify ★309 - 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 ★1261 - Run load tests for your web application, with an API for automation.
- Sinon.JS ★6024 - Test spies, stubs and mocks.
- navit ★41 - PhantomJS / SlimerJS wrapper to simplify browser test scripting.
- Nock - HTTP mocking and expectations.
- intern ★4005 - Code testing stack.
- toxy ★2425 - Hackable HTTP proxy to simulate failure scenarios and network conditions.
- hook-std ★29 - Hook and modify stdout/stderr.
- testen ★162 - Run tests for multiple versions of Node.js locally with NVM.
- Nightwatch ★8266 - Automated UI testing framework based on Selenium WebDriver.
- WebdriverIO ★4062 - Automated testing based on the WebDriver protocol.
- Jest ★18381 - Painless JavaScript testing.
- TestCafe ★4888 - Automated browser testing.
- abstruse ★272 - Continuous Integration server.
Security
- snyk ★1121 - CLI and build-time tool to find & fix vulnerable npm dependencies.
- upash ★100 - Unified API for all password hashing algorithms.
Benchmarking
- Benchmark.js ★3571 - Benchmarking library that supports high-resolution timers and returns statistically significant results.
- matcha ★484 - Simplistic approach to benchmarking.
Minifiers
- babili - ES2015+ aware minifier based on the Babel toolchain.
- UglifyJS2 ★8783 - JavaScript minifier.
- clean-css ★2934 - CSS minifier.
- minimize ★140 - HTML minifier.
- imagemin ★2211 - Image minifier.
Authentication
- Passport ★13606 - Simple, unobtrusive authentication.
- Grant ★1504 - OAuth middleware for Express, Koa, and Hapi.
- CloudRail ★240 - Unified API for social authentication (Facebook, Twitter, Slack, Instagram, …).
Authorization
- CASL ★539 - Isomorphic authorization for UI and API.
- Nodemailer - The fastest way to handle email.
- emailjs ★1626 - Send text/HTML emails with attachments to any SMTP server.
- email-templates ★2050 - Create, preview, and send custom email templates.
Job queues
- kue ★7547 - Redis-backed priority job queue.
- bull ★3093 - Persistent job and message queue.
- agenda - MongoDB-backed job scheduling.
- idoit ★26 - Redis-backed job queue engine with advanced job control.
- node-resque ★538 - Redis-backed job queue.
- rsmq ★765 - Redis-backed message queue.
- bee-queue ★942 - High-performance Redis-backed job queue.
Node.js management
- n ★9370 - Node.js version management.
- nave ★1138 - Virtual Environments for Node.js.
- nodeenv ★903 - Node.js virtual environment compatible to Python’s virtualenv.
- nvm for Windows ★6145 - Version management for Windows.
Natural language processing
- retext - An extensible natural language system.
- franc ★2659 - Detect the language of text.
- leven ★350 ⏳1Y - Measure the difference between two strings using the Levenshtein distance algorithm.
- natural ★7874 - Natural language facility.
Process management
- PM2 ★25192 - Advanced Process Manager.
- nodemon ★14992 - Monitor for changes in your app and automatically restart the server.
- node-mac ★422 - Run scripts as a native Mac daemon and log to the console app.
- node-linux ★341 - Run scripts as native system service and log to syslog.
- node-windows ★1459 - Run scripts as a native Windows service and log to the Event viewer.
- supervisor ★3405 - Restart scripts when they crash or restart when a
*.js
file changes. - Phusion Passenger ★4094 - Friendly process manager that integrates directly into Nginx.
Automation
- robotjs ★7047 - Desktop Automation: control the mouse, keyboard and read the screen.
AST
- Acorn - Tiny, fast JavaScript parser.
- babel-parser - JavaScript parser used in Babel.
Static site generators
- Wintersmith ★3345 - Flexible, minimalistic, multi-platform static site generator.
- Assemble ★3563 - Static site generator for Node.js, Grunt.js, and Yeoman.
- DocPad ★2968 - Static site generator with dynamic abilities and huge plugin ecosystem.
- Phenomic ★3014 - Modern static website generator based on the React and Webpack ecosystem.
- docsify - Markdown documentation site generator with no statically built HTML files.
Content management systems
- KeystoneJS ★12869 - CMS and web application platform built on Express and MongoDB.
- ApostropheCMS ★2192 - Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.
- Strapi ★5770 - Content Management Framework (headless-CMS) to build powerful APIs.
Forum
- nodeBB ★8837 - Forum platform for the modern web.
Blogging
- Ghost ★25956 - Simple, powerful publishing platform.
- Hexo ★22551 - Fast, simple and powerful blogging framework.
Weird
- cows ★290 - ASCII cows.
- superb ★258 - Get superb like words.
- cat-names ★195 ⏳1Y - Get popular cat names.
- dog-names ★83 ⏳1Y - Get popular dog names.
- superheroes ★166 ⏳1Y - Get superhero names.
- supervillains ★71 ⏳1Y - Get supervillain names.
- cool-ascii-faces ★1590 ⏳1Y - Get some cool ascii faces.
- cat-ascii-faces ★191 ⏳3Y - ₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”
- nerds ★48 ⏳1Y - Get data from nerdy topics like Harry Potter, Star Wars, and Pokémon.
Serialization
- snappy ★367 - Native bindings for Google’s Snappy compression library.
- protobuf ★4483 - Implementation of Protocol Buffers.
- compactr ★70 - Implementation of the Compactr protocol.
Miscellaneous
- execa ★1361 - Better
child_process
. - cheerio ★16410 - 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 ★14766)
- opn ★1072 - Opens stuff like websites, files, executables.
- hasha ★606 - Hashing made simple. Get the hash of a buffer/string/stream/file.
- dot-prop ★268 - Get a property from a nested object using a dot path.
- onetime ★76 ⏳1Y - Only run a function once.
- mem ★358 - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
- import-fresh ★138 ⏳1Y - Import a module while bypassing the cache.
- strip-bom ★66 ⏳1Y - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
- os-locale ★122 - Get the system locale.
- ssh2 ★3070 - SSH2 client and server module.
- adit ★19 ⏳1Y - SSH tunneling made simple.
- import-lazy ★143 - Import a module lazily.
- file-type ★671 - Detect the file type of a Buffer.
- Bottleneck ★437 - Rate limiter that makes throttling easy.
- ow ★2299 - Function argument validation for humans.
- webworker-threads ★1772 - Lightweight Web Worker API implementation with native threads.
- clipboardy ★413 - Access the system clipboard (copy/paste).
- node-pre-gyp ★534 - Makes it easy to publish and install Node.js C++ addons from binaries.
- opencv ★3450 - Bindings for OpenCV. The defacto computer vision library.
- dotenv ★6232 - Load environment variables from .env file.
- remote-git-tags ★29 ⏳1Y - Get tags from a remote git repo.
- semver ★2289 - Semantic version parser.
- Faker.js ★14609 - Generate massive amounts of fake data.
- nodegit ★3463 - Native bindings to Git.
- json-strictify ★3 - Safely serialize a value to JSON without data loss or going into an infinite loop.
- resolve-from ★60 - 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 ★4237 - Server-side rendering your JavaScript views.
- @sindresorhus/is ★639 - Type check values.
- env-dot-prop ★10 - Get, set, or delete nested properties of process.env using a dot path.
- emittery ★707 - Simple and modern async event emitter.
Resources
Tutorials
- Nodeschool - Learn Node.js with interactive lessons.
- The Art of Node - An introduction to Node.js.
- stream-handbook ★11693 - How to write Node.js programs with streams.
- module-best-practices ★1117 - 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 ★876 - Introduction to Node.js core features and asynchronous JavaScript.
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 ★4726 - Learn the art of writing quality READMEs.
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.
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
- Web Development with Node and Express
- Pro Express.js
- Secure Your Node.js Web Application
- Express in Action
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 ★160 ⏳2Y - Answering common questions about streams, covering pagination, events, and more.
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.
- RequireBin - Shareable JavaScript programs powered by npm and browserify.
- github-npm-stats - Chrome extension that displays npm download stats on GitHub.
Community
Miscellaneous
- nodebots - Robots powered by JavaScript.
- node-module-boilerplate ★403 - Boilerplate to kickstart creating a node module.
- generator-nm ★554 - Scaffold out a node module.
- Microsoft Node.js Guidelines ★1905 - Tips, tricks, and resources for working with Node.js on Microsoft platforms.
- Module Requests & Ideas ★405 ⏳1Y - Request a JavaScript module you wish existed or get ideas for modules.
Related lists
- awesome-npm ★2944 - Resources and tips for using npm.
- awesome-cross-platform-nodejs ★239 ⏳1Y - Resources for writing and testing cross-platform code.
License
To the extent possible under law, Sindre Sorhus has waived all copyright and related or neighboring rights to this work.
This list is a copy of sindresorhus/awesome-nodejs with ranks