---
title: Bun Runtime
description: Execute JavaScript/TypeScript files, package.json scripts, and executable packages with Bun's fast runtime.
---
import Run from "/snippets/cli/run.mdx";
The Bun Runtime is designed to start fast and run fast.
Bun uses the [JavaScriptCore engine](https://developer.apple.com/documentation/javascriptcore), developed by Apple for Safari. JavaScriptCore usually starts and runs faster than V8, the engine used by Node.js and Chromium-based browsers. Bun's transpiler and runtime are written in Rust. On Linux, Bun starts [4x faster](https://twitter.com/jarredsumner/status/1499225725492076544) than Node.js.
| Command | Time |
| --------------- | -------- |
| `bun hello.js` | `5.2ms` |
| `node hello.js` | `25.1ms` |
The benchmark runs a Hello World script on Linux.
## Run a file
Use `bun run` to execute a source file.
```bash terminal icon="terminal"
bun run index.js
```
Bun supports TypeScript and JSX with no configuration. Bun transpiles every file on the fly with its native [transpiler](/runtime/transpiler) before running it.
```bash terminal icon="terminal"
bun run index.js
bun run index.jsx
bun run index.ts
bun run index.tsx
```
Alternatively, you can omit the `run` keyword and use the "naked" command; it behaves identically.
```bash terminal icon="terminal"
bun index.tsx
bun index.js
```
### `--watch`
To run a file in watch mode, use the `--watch` flag.
```bash terminal icon="terminal"
bun --watch run index.tsx
```
When using `bun run`, put Bun flags like `--watch` immediately after `bun`.
```bash
bun --watch run dev # ✔️ do this
bun run dev --watch # ❌ don't do this
```
`bun` ignores flags at the end of the command and passes them through to the `"dev"` script itself.
## Run a `package.json` script
Compare to `npm run