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.
Or let your agent do it
Paste this into any coding agent.
Claude Code · Codex · Gemini CLI · OpenCode · Cursor · Pi · <your agent>
Read deno.com/agents.md and set up Deno in this project
Everything just works
tsc, no ts-node, no bundler, no config to get in the way.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;{
"name": "project-with-npm-deps",
"dependencies": {
"chalk": "^5.6.2",
"hono": "^4.12.27"
}
}

Zero-setup TypeScript and npm
deno check away.Your Node project, without the Node problems
- npm
- node_modules
- package.json
- tsconfig.json
- ESM
- JSX / TSX
- node:* imports
- CommonJS
Built-in everything
$
A faster package manager
node_modules. {
"workspaces": ["./api", "./web", "./core"],
"scripts": {
"dev": "deno run -A --watch main.ts",
"test": "deno test -A"
},
"dependencies": {
"hono": "hono^4"
}
}18-package dependency tree · isolated caches, scripts disabled · Apple M5 · Deno 2.9 canary, npm (Node v26.5), Bun 1.4 canary
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
On the cutting edge of JavaScript
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
$
Three layers of defense
- 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"
- 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
- 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
Built for the real world
HTTP: 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). Startup, install & streaming: Apple M5 · hyperfine means / in-process medians · Deno 2.9 canary, Node v26.5, Bun 1.4 canary. Results vary by workload and hardware.
See anything, understand everything
Deploy Deno anywhere
â¦and any platform that runs a Linux, macOS, or Windows binary.
Or run it on the platform we built for it.
The hosting platform built for Deno
Built for anything built with JavaScript
And now, the desktop
Better JavaScript



