# Bun is a fast all-in-one JavaScript runtime

Bundle, transpile, install and run JavaScript & TypeScript projects — all in Bun. Bun is a new JavaScript runtime with a native bundler, transpiler, task runner and npm client built-in.

Install Bun CLI 0.2.1 (beta)
macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux
curl https://bun.sh/install | bash
Show script source

## Server-side rendering React

HTTP requests per second (Linux x64)

- bun: 69,845 requests per second
  69,845
- node: 16,288 requests per second
  16,288
- deno: 12,926 requests per second
  12,926

bun
v0.2.0
View source
node
v18.1.0
View source
Deno.serve()
v1.26.0
View source

## WebSocket server chat

Messages sent per second (Linux x64, 16 clients)

- bun: 737,280 messages sent per second
  737,280
- node: 107,457 messages sent per second
  107,457
- deno: 82,097 messages sent per second
  82,097

Bun.serve()
v0.2.1
View source
ws (Node.js)
node v18.10.0
View source
Deno.serve()
v1.26.2
View source

## Load a huge table

Average queries per second

- bun: 70.32 queries per second
  70.32
- deno: 36.54 queries per second
  36.54
- better-sqlite3: 23.28 queries per second
  23.28

bun:sqlite
v0.2.0
View source
deno (x/sqlite3)
v1.26.1
View source
better-sqlite3
node v18.2.0
View source
Install Bun CLI 0.2.1 (beta)
macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux
curl https://bun.sh/install | bash
Show script source

## Tell me more about Bun

Bun is a modern JavaScript runtime like Node or Deno. It was built from scratch to focus on three main things:

- Start fast (it has the edge in mind).
- New levels of performance (extending JavaScriptCore, the engine).
- Being a great and complete tool (bundler, transpiler, package manager).

Bun is designed as a drop-in replacement for your current JavaScript & TypeScript apps or scripts — on your local computer, server or on the edge. Bun natively implements hundreds of Node.js and Web APIs, including ~90% of Node-API functions (native modules), fs, path, Buffer and more.

The goal of Bun is to run most of the world's JavaScript outside of browsers, bringing performance and complexity enhancements to your future infrastructure, as well as developer productivity through better, simpler tooling.

## Batteries included

- Web APIs like fetch, WebSocket, and ReadableStream are built-in
- node_modules bun implements Node.js' module resolution algorithm, so you can use npm packages in Bun. ESM and CommonJS are supported, but Bun internally uses ESM
- In Bun, every file is transpiled. TypeScript & JSX just work
- Bun supports `"paths"`, `"jsxImportSource"`and more from tsconfig.json files
- Bun.Transpiler Bun's JSX & TypeScript transpiler is available as an API in Bun
- use the fastest system calls available with Bun.write to write, copy, pipe, send and clone files
- Bun automatically loads environment variables from .env files. No more `require("dotenv").config()`
- Bun ships with a fast SQLite3 client built-in bun:sqlite
- Node-API Bun implements most of Node-API (N-API). Many Node.js native modules just work
- bun:ffi call native code from JavaScript with Bun's low-overhead foreign function interface
- node:fs node:path Bun natively supports a growing list of Node.js core modules along with globals like Buffer and process

## How does Bun work?

Bun uses the JavaScriptCore engine, which tends to start and perform a little faster than more traditional choices like V8. Bun is written in
, a low-level programming language with manual memory management.
Most of Bun is written from scratch including the JSX/TypeScript transpiler, npm client, bundler, SQLite client, HTTP client, WebSocket client and more.

## Why is Bun fast?

An enormous amount of time spent profiling, benchmarking and optimizing things. The answer is different for every part of Bun, but one general theme:
's low-level control over memory and lack of hidden control flow makes it much simpler to write fast software. Sponsor the Zig Software Foundation.

## Getting started

To install Bun, run this install script in your terminal. It downloads Bun from GitHub.

    curl https://bun.sh/install | bash

Bun's HTTP server is built on web standards like Request and Response

    // http.js
    export default {
      port: 3000,
      fetch(request) {
        return new Response("Welcome to Bun!");
      },
    };

Run it with Bun:

    bun run http.js

Then open http://localhost:3000 in your browser.
See more examples and check out the docs. If you have any questions or want help, join Bun's Discord.

## Bun CLI

bun run

The same command for running JavaScript & TypeScript files with bun's JavaScript runtime also runs package.json `"scripts"`.

Replace `npm run` with `bun run` and save 160ms on every run.
Bun runs package.json scripts 30x faster than `npm run`
bun install

`bun install` is an npm-compatible package manager. You probably will be surprised by how much faster copying files can get.

Replace `yarn` with `bun install` and get 20x faster package installs.
`bun install` uses the fastest system calls available to copy files.
bun wiptest

A Jest-like test runner for JavaScript & TypeScript projects built-in to Bun.

You've never seen a JavaScript test runner this fast (or incomplete).

## What is the license?

MIT License, excluding dependencies which have various licenses.

## How do I see the source code?

Bun is on GitHub.

Built with Bun 0.2.1