nstd
Node.js, without Node.js.

Use Node's own standard library as portable ES modules, or run it inside a small QuickJS-NG runtime—without requiring Node.js on the target machine.

Node.js is one big native binary: a JavaScript standard library that calls into a C++ core. nstdlib keeps Node's own JavaScript as ES Modules and swaps the C++ for small JavaScript shims with the same API. It runs in any JS runtime, as nstd.wasm, or as the native nstd executable.

One standard library, two ways to use it

Run with nstd

A single executable combining QuickJS-NG, a Zig host, and nstdlib compiled to bytecode. Ship the runtime with your script instead of requiring a Node.js installation.

Import from nstdlib

Use familiar modules such as path, events, stream, and url as ordinary ES modules in bundlers, workers, browsers, and other JavaScript runtimes.

Built from Node.js

This is not a clean-room reimplementation. The pipeline rewrites Node.js's own lib/*.js from a pinned release into runtime-agnostic modules.

Bring your own host

Pure JavaScript works anywhere. Filesystems, sockets, TLS, and other platform capabilities connect through explicit host seams—the same mechanism nstd uses.

Measured compatibility

Generated API reports measure every module in the standalone runtime and in a real browser page, against Node.js's own exports and its own test suite.

Honest failure modes

Missing platform capabilities throw an error that names the unavailable binding instead of returning undefined and allowing an incorrect result to travel.