Skip to main content
Introducing Claw Patrol: an open-source security firewall for agents
Read the post
v2.9
What’s new in Deno

Better, faster JavaScript

Deno is a fast, open-source, fully Node-compatible JS runtime with TypeScript and everything else you need baked right in.

Faster than Node; more stable than Bun.

Built-in tools: package manager, test runner, formatter, linter, task runner, type checker, coverage tool, workspace manager, benchmarker, doc generator, jupyter kernel, compiler, desktop app builder.

Install Deno 2.9.1

Release notes
$curl -fsSL https://deno.land/install.sh | sh

Everything just works

TypeScript, JSX, and npm, straight from source. No tsc, no ts-node, no bundler, no config to get in the way.
server.ts
import { Hono } from "hono";

interface Book {
  title: string;
  year: number;
}

const books: Book[] = [{ title: "Deno", year: 2018 }];

const app = new Hono();
app.get("/books", (c) => c.json(books));

export default app;
package.json
{
  "name": "project-with-npm-deps",
  "dependencies": {
    "chalk": "^5.6.2",
    "hono": "^4.12.27"
  }
}
TypeScriptnpm

Zero-setup TypeScript and npm

Import npm packages just like you would anywhere else. Full type-checking is one deno check away.

Your Node project, without the Node problems

Deno runs Node code and understands lockfiles (even pnpm and yarn), to make any project simple to run with Deno.
Drops right in
  • npm
  • node_modules
  • package.json
  • tsconfig.json
  • ESM
  • JSX / TSX
  • node:* imports
  • CommonJS

Built-in everything

From formatting and linting to testing and package management, Deno is designed with seamless developer experience in mind. Stop configuring; start building.
Run project tasks(docs)
$

A faster package manager

Deno supports npm workspaces, and can read npm, yarn, and pnpm lockfiles.
Pull from npm and JSR with one command, lock to a single integrity file, and resolve from a global cache instead of a per-project node_modules.
package.json
{
  "workspaces": ["./api", "./web", "./core"],
  "scripts": {
    "dev": "deno run -A --watch main.ts",
    "test": "deno test -A"
  },
  "dependencies": {
    "hono": "hono^4"
  }
}
main.ts
import { BinarySearchTree } from "@std/data-structures";
import { assertEquals } from "@std/assert";

const values = [3, 10, 13, 4, 6, 7, 1, 14];
const tree = new BinarySearchTree<number>();
values.forEach((value) => tree.insert(value));

assertEquals([...tree], [1, 3, 4, 6, 7, 10, 13, 14]);

Standard library included

The utilities you’d otherwise assemble from a handful of npm packages, audited, and dependency-free.
Includes modules for parsing, collections, formatting, dates, and more, maintained by the Deno team and versioned on JSR.

On the cutting edge of JavaScript

The same fetch, Request, Response, and Crypto APIs you use in the browser, now on the server — and as a TC39 and WinterCG participant, Deno is regularly first to ship new standards-track features.

Available today: Temporal · Set methods · Iterator helpers · Promise.try · Float16Array

Granular security controls

Deno blocks file system, network, and environment access by default. Customize, layer, and audit security settings for any use case.
Filesystem access requires explicit permission(docs)
$

Three layers of defense

Access is denied by default and opened on purpose. Security from end to end, at every layer.
  1. 1Default deny

    Supply-chain safety

    Shut down the most common ways a dependency turns hostile.

    Postinstall scripts
    Off by default
    Opt a package in
    --allow-scripts
    Trusted dynamic imports
    --allow-import
    Audit the dependency tree
    deno audit
    Apply the fixes
    deno audit fix
    Minimum dependency age
    minimumDependencyAge: "P3D"
  2. 2Scoped grants

    Runtime sandbox

    Scope what a single program can do, and deny-list the rest.

    Granular allow flags
    --allow-net
    Deny-list on top
    --deny-net
    Subprocess isolation
    Apply permissions to Deno child processes
    Permission stack traces
    DENO_TRACE_PERMISSIONS=1
    Symlink-aware checks
    Evaluated at the link
  3. 3Audits

    Centralized policy & audit

    Govern permissions, and keep a record of every call.

    Permission broker
    DENO_PERMISSION_BROKER_PATH
    Audit logs
    DENO_AUDIT_PERMISSIONS
  • grant
  • denied / off
  • opt-in

Faster than you think

Deno doesn't stop improving. If you haven't looked in a while, you might be surprised just how fast we've gotten.

3.66× faster

npm installs

since Deno 2.8

3.2× efficiency

memory, large responses

since Deno 2.0

2.1× lower

p99 latency, realworld

since Deno 2.0

1.5× faster

cold start

since Deno 2.0

Built for the real world

Deno's been carefully built on Rust since day one to optimize for performance in real-world scenarios (not just cherry-picked benchmarks).
Realworld: Requests / sec
Higher is better
Deno72,400
Bun68,200
Node44,000
Realworld: p99 latency
Lower is better
Deno1.87 ms
Bun2.80 ms
Node3.76 ms
Realworld: Peak memory
Lower is better
Bun45 MB
Deno64 MB
Node116 MB
Hello world: Requests / sec
Higher is better
Deno85,600
Bun81,900
Node56,300
Hello world: p99 latency
Lower is better
Deno1.60 ms
Bun2.29 ms
Node3.10 ms
Hello world: Peak memory
Lower is better
Bun41 MB
Deno62 MB
Node108 MB
1 MiB body: Requests / sec
Higher is better
Deno1,907
Node1,758
Bun1,591
1 MiB body: p99 latency
Lower is better
Deno70.4 ms
Bun73.8 ms
Node74.4 ms
1 MiB body: Peak memory
Lower is better
Bun41 MB
Deno63 MB
Node85 MB

100 concurrent connections · AMD EPYC x86_64, pinned cores · oha, median of 3 runs, uncompressed · Deno.serve (Deno 2.9), Bun.serve (Bun 1.4), node:http (Node v26). Results vary by workload and hardware.

See anything, understand everything

Don't just ship code; inspect it deeply at every level with native OpenTelemetry, profiling, and debugging all built-in from the start

OTEL in 5 seconds

OTEL_DENO=true
Traces from every request, fetch, and console line
OTEL docs →
GET /checkout
142ms
auth.verify
16ms
fetchapi.stripe.com
47ms
db.querySELECT … orders
44ms
cache.set
12ms
console.infoorder placed
2ms

Profiling

deno run --cpu-prof
CPU profiles and flame graphs, straight from the runtime
Profiling docs →
handler
auth
loadCart
render
verify
db.query
parse
toJSON
gzip
decode
walk

Debugging

deno run --inspect-brk
Step through code in Chrome DevTools or VS Code
Debugging docs →
1export async function handler(req) {
2 const user = await auth(req)
3 const cart = await loadCart(user)
4 return render(cart)
5}

Deploy Deno anywhere

One binary, every platform. Drop Deno into your existing container, serverless function, or VM. No rewrites, no extra tooling.

…and any platform that runs a Linux, macOS, or Windows binary.

Or run it on the platform we built for it.

Deno Deploy

The hosting platform built for Deno

First-class support for Deno, Deno KV, OpenTelemetry, and edge deployments — without a single config file.

Built for anything built with JavaScript

Deno Deploy runs Node projects too. Bring your existing Next.js, Hono, Express, or SvelteKit app and get a faster cold start, global edge, and built-in observability.
Preview

And now, the desktop

Deno Desktop builds native, cross-platform desktop apps from the web stack you already know — your frontend, your TypeScript backend, one binary on the desktop. No Electron-sized bundle, no Chromium to ship, no second runtime to manage.

Loved by developers

100k+
GitHub stars
400k+
Monthly active users

Trusted in production by teams at

  • Slack
  • Netlify
  • GitHub
  • Supabase
  • Salesforce
  • Spotify
  • Stripe
  • Bank of America

Better JavaScript

Install Deno in a few seconds. Bring an existing project over and see it run.
An illustration in the style of lo-fi anime showing a cute dinosaur coding on a laptop in a cozy room. The laptop has a Deno sticker on the lid, and there's a steamy mug of coffee beside it. In the background is a plant, on the sill of a window overlooking hills and trees. It's dusk outside, with some stars visible in the upper skies, and it is raining gently as clouds slowly float past. The interior is warmly lit by a single desk lamp. On the desk is a takeout box, with chopsticks and a lemon beside it. Peeking over the edge of the box, barely visible, is DeeDee, the Deno Deploy mascot. Ferris, the Rust mascot, can also just barely be seen peeking out from inside the plant pot.