# The Node Core Modules

> A reference to the Node.js core modules that ship with the platform, like fs, http, crypto, path, events, and stream, and what each one lets you do.

Author: Flavio Copes | Published: 2020-03-19 | Canonical: https://flaviocopes.com/node-core-modules/

[Node.js](https://flaviocopes.com/nodejs/) has a set of core modules that are part of the platform and come with the [Node.js installation](https://flaviocopes.com/node-installation/).

We have a lot of them:

| Name  | Description  |
|:---|:---|
| [assert](https://nodejs.org/api/assert.html) | provides a set of assertion functions useful for testing |
| [buffer](https://nodejs.org/api/buffer.html) | provides the ability to handle buffers containing binary data |
| [child_process](https://nodejs.org/api/child_process.html) | provides the ability to spawn child processes |
| [console](https://nodejs.org/api/console.html) | provides a simple debugging console |
| [cluster](https://nodejs.org/api/cluster.html) | allows to split a Node.js process into multiple workers to take advantage of multi-core systems |
| [crypto](https://nodejs.org/api/crypto.html) | provides cryptographic functionality |
| [dgram](https://nodejs.org/api/dgram.html) | provides an implementation of UDP Datagram sockets |
| [dns](https://nodejs.org/api/dns.html) | provides name resolution and DNS lookups |
| [events](https://nodejs.org/api/events.html) | provides an API for managing events |
| [fs](https://nodejs.org/api/fs.html) | provides an API for interacting with the file system |
| [http](https://nodejs.org/api/http.html) | provides an HTTP client/server implementation |
| [http2](https://nodejs.org/api/http2.html) | provides an HTTP/2 client/server implementation |
| [https](https://nodejs.org/api/https.html) | provides an HTTPS client/server implementation |
| [net](https://nodejs.org/api/net.html) | provides an asynchronous network API |
| [os](https://nodejs.org/api/os.html) | provides operating system-related utility methods and properties |
| [path](https://nodejs.org/api/path.html) | provides utilities for working with file and directory paths |
| [perf_hooks](https://nodejs.org/api/perf_hooks.html) | to enable the collection of performance metrics | 
| [process](https://nodejs.org/api/process.html) | provides information about, and control over, the current Node.js process |
| [querystring](https://nodejs.org/api/querystring.html) | provides utilities for parsing and formatting URL query strings |
| [readline](https://nodejs.org/api/readline.html) | provides an interface for reading data from a Readable stream |
| [repl](https://nodejs.org/api/repl.html) | provides a Read-Eval-Print-Loop (REPL) implementation that is available both as a standalone program or includible in other applications | 
| [stream](https://nodejs.org/api/stream.html) | an abstract interface for working with streaming data |
| [string_decoder](https://nodejs.org/api/string_decoder.html) | provides an API for decoding Buffer objects into strings |
| [timers](https://nodejs.org/api/timers.html) | provide functions to schedule functions to be called at some future period of time |
| [tls](https://nodejs.org/api/tls.html) | provides an implementation of the Transport Layer Security (TLS) and Secure Socket Layer (SSL) protocols |
| [tty](https://nodejs.org/api/tty.html) | provides functionality used to perform I/O operations in a text terminal |
| [url](https://nodejs.org/api/url.html) | provides utilities for URL resolution and parsing |
| [util](https://nodejs.org/api/util.html) | supports the needs of Node.js internal APIs, useful for application and module developers as well |
| [v8](https://nodejs.org/api/v8.html) | exposes APIs that are specific to the version of V8 built into the Node.js binary |
| [vm](https://nodejs.org/api/vm.html) | enables compiling and running code within V8 Virtual Machine contexts |
| [wasi](https://nodejs.org/api/wasi.html) | provides an implementation of the WebAssembly System Interface specification |
| [worker](https://nodejs.org/api/worker_threads.html) | enables the use of threads that execute [JavaScript](https://flaviocopes.com/javascript/) in parallel |
| [zlib](https://nodejs.org/api/zlib.html) | provides compression functionality |

Check out my detailed tutorials on 

- [The Node.js `events` module](https://flaviocopes.com/node-module-events/)
- [The Node.js `fs` module](https://flaviocopes.com/node-module-fs/)
- [The Node.js `http` module](https://flaviocopes.com/node-module-http/)
- [The Node.js `os` module](https://flaviocopes.com/node-module-os/)
- [The Node.js `path` module](https://flaviocopes.com/node-module-path/)
