| Engine | V8 (C++) | V8 (Rust) | JavaScriptCore (Zig/C++) |
| TypeScript support | Via transpiler (tsx, ts-node, swc, esbuild); experimental --experimental-strip-types in Node 22+ | Native -- runs .ts files with zero config | Native -- runs .ts files with zero config |
| Package manager | npm, yarn, pnpm (external tools) | Built-in (deno add, deno install) | Built-in (bun install -- fastest available) |
| Security model | No sandbox; full system access by default; experimental --experimental-permission in Node 20+ | Secure by default; explicit permission flags (--allow-read, --allow-net, etc.) | No sandbox; full system access by default |
| Standard library | Core modules (fs, path, http, crypto, etc.) | Comprehensive @std/ on JSR (fs, path, http, async, testing, etc.) | Minimal; relies on npm ecosystem and Node.js compat |
| npm compatibility | Native (the canonical npm runtime) | Full via npm: specifier and package.json (Deno 2.x) | Native; drop-in Node.js replacement for most packages |
| Module system | CommonJS + ESM (dual system) | ESM-only; URL imports, import maps, JSR | ESM + CommonJS (transparent interop) |
| HTTP server | http.createServer, http2 module | Deno.serve (web standard Request/Response) | Bun.serve (optimized, web standard Request/Response) |
| Test runner | Built-in node --test (basic, Node 18+) | Built-in deno test (full-featured, BDD, mocking, snapshots, coverage) | Built-in bun test (Jest-compatible API) |
| Bundler | None built-in (use esbuild, Vite, webpack, Rollup) | Built-in deno bundle (deprecated in favor of esbuild/Rollup) | Built-in bun build (fast, esbuild-compatible API) |
| Formatter | None built-in (use Prettier) | Built-in deno fmt | None built-in (use Prettier) |
| Linter | None built-in (use ESLint) | Built-in deno lint | None built-in (use ESLint) |
| Edge deployment | Various (Vercel, AWS Lambda, Cloudflare via adapters) | Deno Deploy (V8 isolates, global edge network) | None (self-hosted or via adapters) |
| Single executable | --experimental-sea-config (Node 20+) | deno compile (cross-platform) | bun build --compile |
| Web standard APIs | Partial (fetch in v18+, crypto.subtle, AbortController) | Comprehensive (fetch, Request, Response, Web Crypto, Streams, URLPattern, BroadcastChannel) | Comprehensive (fetch, Request, Response, Web Crypto, Streams) |
| Watch mode | --watch (Node 18+) | --watch flag on most commands | --watch flag |
| REPL | node | deno (TypeScript-aware) | bun |
| Startup speed | Moderate | Fast | Fastest |
| Ecosystem size | Largest (millions of npm packages) | Full npm access + JSR | Full npm access |
| Maturity | Most mature (since 2009) | Stable (since 2018, 2.x since 2024) | Rapidly maturing (since 2022, 1.0 in 2023) |