# What is Deno?

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.

```text
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?

| Workload | Natural starting point | Verify first |
| --- | --- | --- |
| Established Node packages and workflows | Node.js or incremental Deno | native addons, loaders, lifecycle scripts |
| TypeScript APIs, CLIs, and automation | Deno | permission inventory and npm compatibility |
| Bun-specific tooling and startup profile | Bun | Node API and hosting support |
| Cloudflare bindings and global edge | Workers | Node subset, CPU, and platform limits |
| Fresh, Deno Deploy, or MCP tool services | Deno | current framework and platform versions |

<Callout type="info" title="Low configuration is not no configuration">
Production projects should still commit `deno.json`, `deno.lock`, tasks, and least-privilege commands. Strong defaults do not replace engineering constraints.
</Callout>

Official references: [Deno runtime](https://docs.deno.com/runtime/), [Node and npm compatibility](https://docs.deno.com/runtime/fundamentals/node/), and [Cloudflare Node.js compatibility](https://developers.cloudflare.com/workers/runtime-apis/nodejs/).
