Deno v1.38.4Free & open sourceNext-generation JavaScript runtime
Upgrade from Node.js to Deno
Deno features improved security, performance, and developer experience compared to its predecessor. It's a great time to upgrade your Node.js project to run on Deno.


import { Configuration, OpenAIApi } from "npm:openai@3";
const configuration = new Configuration({
apiKey: Deno.env.get("OPENAI_API_KEY"),
});
const openai = new OpenAIApi(configuration);
const chatCompletion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: "Hello world" }],
});
console.log(chatCompletion?.data?.choices[0]?.message?.content);
Secure by default
Deno restricts access to sensitive runtime APIs by default, protecting your infrastructure from malicious code.
Configure granular access to the filesystem, network, and system environment, so your code only has access to the resources it needs.
βWhat stood out first and foremost to our team was their laser focus on security... like the ability to execute code with limited access to the file system or external domains.β
TypeScript out of the box
Deno natively supports modern JavaScript extensions like TypeScript and JSX without a build step or extra configuration.

Essential dev tools built in
Standalone executables
Instantly create standalone executables from your Deno program. It even supports cross-compiling for other platforms! Learn moreabout the Deno compiler
$ deno compile --allow-net server.ts
Compile file:///tmp/server.ts to server
$ ./server
Listening on http://localhost:8000/
// server.ts
Deno.serve(() => new Response("Hello!"));
Code formatter
Deno's built-in code formatter (based on dprint) beautifies JavaScript, TypeScript, JSON, and Markdown. Learn moreabout Deno's built-in code formatting
$ deno fmt --line-width=120
Code linter
Deno ships with a built-in code linter to help you avoid bugs and code rot. Learn moreabout Deno's linter
$ deno lint --watch
Test runner
Deno provides a test runner and assertion libraries as a part of the runtime and standard library. Learn moreabout testing
$ deno test main_test.ts
// main_test.ts
Deno.test("1 + 2 = 3", () => {
const x = 1 + 2;
console.assert(x == 3);
});
Built for the cloud
Whether you deploy with our lightning-fast Deno Deploy or on other cloud providers, Deno streamlines your experience. It's more than a runtime; it's JavaScript reimagined for the cloud age, offering a seamless alternative to traditional containers.
Deno Deploy
The easiest way to host your Deno projects.
- Globally distributed
- Deploy in seconds
- Built-in key/value database
- Integrate with GitHub for CI/CD
- Run static sites, apps, and edge functions
Also runs on:
- DockerOfficial Docker image
- AWS Lambda distributionhayd/deno-lambda
- DigitalOceanHow to Deploy Deno to Digital Ocean
- Cloudflareskymethod/denoflare
- Google Cloud RunHow to Deploy to Google Cloud Run
Consistent code from browser to backend
Deno provides web standard APIs whenever possible, maximizing code reuse between browser and server and future-proofing your code.
Deno actively participates in TC39 and WinterCG, to help move the web forward. We're committed to building the future of JavaScript collaboratively and in the open.
High performance networking
// Ryan Dahl's favorite one-line web server
Deno.serve((req) => new Response("Hello world"));
Out of the box support for:
- HTTPS (encryption)
- WebSockets
- HTTP2
- Automatic response body compression
Throughput, requests per sec
import express from "npm:express@4";
const app = express();
app.get("/", function (_req, res) {
res.send("hello");
});
app.listen(3000, () => {
console.log("Express listening on :3000");
});
Millions of community modules
Deno is backwards compatible with Node.js built-in APIs and over two million modules on npm. Bring the best of the Node.js ecosystem with you to Deno.
Dive into Deno code
Deno.serve((req) => {
if (req.headers.get("upgrade") != "websocket") {
return new Response(null, { status: 501 });
}
const { socket, response } = Deno.upgradeWebSocket(req);
socket.addEventListener("open", () => {
console.log("a client connected!");
});
socket.addEventListener("message", (event) => {
if (event.data === "ping") {
socket.send("pong");
}
});
return response;
});
Seamless persistence with Deno KVBeta
The Deno runtime ships with Deno KV, a key/value database designed for globally distributed applications.
Go from development to production on Deno Deploy with no API keys or infrastructure to configure.
Fresh - modern web apps on the edge
Fresh is a modern web framework, designed from the ground up for the Deno runtime on edge servers.
SaaSKit - quick start template for Fresh
Built on top of Fresh, the SaaSKit template app includes authentication, billing, and more.

Vibrant Community
Manu (Qwik)
I know this was gonna happen!
Deno is truly building the fastest, most secure and personalizable JS runtime!Atalocke
I really think Deno is the easiest and most capable JS runtime. URL imports are slept on.
Jason Lengstorf
npm packages in Deno π
Thatβs an exciting development for those of us building at the edge.Poorly Funded Snob
This Deno thing is fast, no doubt about it. #denoland
Taylor Young
Deno: I have to use the browser APIs cause they are everywhere, and everywhere is my target runtime (the web).
The runtime that tries to mirror browser APIs server side makes my life easiest.Stefan Arentz
Deno is fantastic. I am using it to level up a bit in terms of JavaScript and TypeScript and it is the easiest way to get going. Their tooling is like 100x simpler than all the usual Node stacks.
Wes Bos
Deno's security model is PERFECT for this type of script.
Running a script from a rando off the internet? It asks for read access to only the CWD and then asks for access to the file it wants to write to. π @deno_landCarlos Vazquez π²π½
I've just upgraded to 1.6.0 | I love Deno not only for freeing us all from npm but for using Typescript / javaScript as default runtimes. But to top it all off, one can upgrade it in the simplest, fastest way. Deno is making me love Typescript and javaScript again π¦π¦π¦