Uncomplicate JavaScript
Deno is the open-source JavaScript runtime for the modern web.
curl -fsSL https://deno.land/install.sh | sh
All your favorite tools, built-in and ready to go
Deno natively supports TypeScript, JSX, and modern ECMAScript features with zero configuration.
account.ts
type User = { name: string; balance: number };
function getBalance(user: User): string {
return `Balance: $${user.balance.toFixed(2)}`;
}
console.log(getBalance({ name: "Alice", balance: 42 }));
$ deno run account.ts
Balance: $42.00
$ deno check
Check account.ts
✅ Type check successful
Just run 
Run .ts files directly with built-in type checking and compilation—no additional tooling or configuration required!
Seamless 
With first-class support for npm and Node, Deno can read your package.json automatically, or you can import packages from npm directly.
Using package.json or import maps
import { Hono } from "hono";
const app = new Hono();
app.get("/", (c) => {
return c.text("Hello Hono!");
});
Deno.serve(app.fetch);Using inline imports
import { Hono } from "npm:hono@4";
const app = new Hono();
app.get("/", (c) => {
return c.text("Hello Hono!");
});
Deno.serve(app.fetch);Built on web standards
Whenever possible, Deno implements web standard APIs on the server. Deno actively participates in TC39 and WinterCG to help move the web forward.
Consistent code from browser to backend
Deno prioritizes web standard APIs, maximizing code reuse between browser and server and future-proofing your code.
Batteries included
The essential tools you need to build, test, and deploy your applications are all included out of the box.
Test runner
Deno provides a test runner and assertion libraries as a part of the runtime and standard library.
// server_test.ts
Deno.test("1 + 2 = 3", () => {
const x = 1 + 2;
console.assert(x == 3);
});$ deno test server_test.tsStandalone executables
Instantly create standalone executables from your Deno program. It even supports cross-compiling for other platforms!
Deno.serve(req => new Response("Hello!"));$ deno compile --allow-net server.ts
Compile file:///tmp/server.ts to server
$ ./server
Listening on http://localhost:8000/Code formatter
Deno's built-in code formatter (based on dprint) beautifies JavaScript, TypeScript, JSON, and Markdown.
$ deno fmt --line-width=120Secure by default
A program run with Deno has no file, network, or environment access unless explicitly enabled.
Prevent supply chain attacks
Stop worrying about npm modules introducing unexpected vulnerabilities. Deno restricts access to the file system, network, and system environment by default, so code can access only what you allow.
Other runtimes
$ node random.js
Executing random.js...
🚨 File system compromised!
Deno
$ deno random.js
⚠️ Deno requests write access
Allow? [y/n/A]
$ n
❌ Denied write access
Exited
High-performance networking
Out of the box support for:
- HTTPS (encryption)
- WebSocket
- HTTP2
- Automatic response body compression
* Ubuntu 22 on ec2 m5.metal; Deno 2.5.2 vs. Node 18.12.1
— The cloud built for modern JavaScript —
Project hosting made for Deno
Unlock the full potential of your JavaScript and TypeScript projects with the all-new, completely reimagined Deno Deploy
Unlock the full power of Deno
Deno users can enjoy first-class support for features like OpenTelemetry, Deno KV, and the Deno Deploy CLI—plus exclusives like Playgrounds, Databases, and more.
Get the most out of Deno with Fresh 2.0
Fresh is the Deno web framework, built with Preact and fully compatible with Vite for blazing speed and instant productivity.
Build fast sites fast
Author routes as the JSX (or TSX) components you already know and love, and Fresh handles dynamic server-side rendering by default.
/routes/index.tsx
export default function HomePage() {
return (
<div>
<h1>HTML fresh from the server!</h1>
<p>
Delivered at
{new Date().toLocaleTimeString()}
</p>
</div>
);
}/islands/Counter.tsx
import { useSignal } from "@preact/signals";
export default function Counter() {
const count = useSignal<number>(0);
return (
<button onClick={() => count.value += 1}>
The count is {count.value}
</button>
);
}
Ship less JavaScript
Island-based architecture lets you opt in to only the JavaScript you need, for absolutely minimal runtime overhead.