← All open source projects

Deno

denoland/deno

Deno is a modern runtime for JavaScript, TypeScript, and WebAssembly with secure defaults.

Forks 6,077
Author denoland
Language Rust
License MIT
Synced 2026-06-07

What it is

Deno is a runtime for JavaScript, TypeScript, and WebAssembly. It is built on V8, Rust, and Tokio, and tries to fix some historical pain points of Node.js: implicit file and network access, separate TypeScript setup, and scattered tools for formatting, testing, and dependencies.

Deno’s core idea is secure defaults. A program does not get access to the network, files, or environment variables without explicit permission. That makes running unfamiliar scripts more predictable.

How it appeared and why it stuck

Deno was created by Ryan Dahl, the creator of Node.js, as an attempt to rebuild a JavaScript runtime with lessons from the previous decade. Instead of compatibility at any cost, Deno emphasized URL imports, TypeScript, built-in tools, and permissions.

Later the project added npm package compatibility and became more practical for ordinary applications. That lowered the barrier for teams that want to try Deno without leaving the whole JavaScript ecosystem behind.

What is inside

The repository contains the runtime, CLI, standard commands, test infrastructure, TypeScript integration, WebAssembly support, and documentation for building from source.

A first HTTP server

This example shows Deno’s style: TypeScript can be run directly, and network access is granted explicitly through a flag.

Language: TypeScript
Deno.serve((_request: Request) => {
  return new Response("Hello from Deno");
});

Running the server

The command grants network access separately. Without that permission, Deno stops the program.

Language: Bash
deno run --allow-net server.ts

Where it helps

Deno helps with servers, scripts, educational projects, utilities, and services where less manual setup is desirable. Built-in formatting, checking, testing, and running commands make the environment cohesive.

If a project is deeply tied to Node.js, migration requires checking dependencies and package behavior. Compatibility has improved, but runtime differences still matter.

Strengths and limits

The strength is a thoughtful environment out of the box: TypeScript, permissions, formatting, tests, and documentation are collected in one CLI.

The limitation is lower familiarity and ecosystem inertia. Node.js remains a huge platform, so Deno is usually chosen deliberately for new projects or separate services.