DocsGet started

What is Deno?

Understand Deno's origin, design choices, and boundaries against Node.js, Bun, and Workers

Deno is an open-source JavaScript, TypeScript, and WebAssembly runtime started by Node.js creator Ryan Dahl. It does not invent another language; it brings modern Web APIs, secure permissions, package management, and engineering tools into one CLI.

Why Deno exists

Node.js predates modern ESM and today's front-end ecosystem. Deno chose ES Modules, URL or registry dependencies, Web-standard APIs, and default isolation, then built formatting, linting, testing, and type checking into the runtime. Deno 2 added stronger Node and npm compatibility, so migration can now be incremental.

Node.js project                  Deno-first project
├── package.json                 ├── deno.json
├── package-lock.json            ├── deno.lock
├── node_modules                 ├── global cache by default
├── tsc / eslint / test runner   └── deno fmt / lint / check / test
└── ambient system access        └── sensitive access denied by default

Which runtime fits?

WorkloadNatural starting pointVerify first
Established Node packages and workflowsNode.js or incremental Denonative addons, loaders, lifecycle scripts
TypeScript APIs, CLIs, and automationDenopermission inventory and npm compatibility
Bun-specific tooling and startup profileBunNode API and hosting support
Cloudflare bindings and global edgeWorkersNode subset, CPU, and platform limits
Fresh, Deno Deploy, or MCP tool servicesDenocurrent framework and platform versions

Official references: Deno runtime, Node and npm compatibility, and Cloudflare Node.js compatibility.

Type to search all documentation.