# Build an HTTP server using Express and Bun (/docs/guides/ecosystem/express)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 204 · updated: 2026-07-28 -->
Related: [Build an app with Astro and Bun](/docs/guides/ecosystem/astro.md), [Create a Discord bot](/docs/guides/ecosystem/discordjs.md), [Containerize a Bun application with Docker](/docs/guides/ecosystem/docker.md), [Use Drizzle ORM with Bun](/docs/guides/ecosystem/drizzle.md), [Use Gel with Bun](/docs/guides/ecosystem/gel.md), [Build an HTTP server using Elysia and Bun](/docs/guides/ecosystem/elysia.md)

Express and other major Node.js HTTP libraries should work in Bun without changes. Bun implements the [`node:http`](https://nodejs.org/api/http.html) and [`node:https`](https://nodejs.org/api/https.html) modules that these libraries rely on.

<Note>
  See 

  [Node.js compatibility](/runtime/nodejs-compat#node-http)

   for details.
</Note>

```sh terminal icon="terminal"
bun add express
```

***

To define an HTTP route and start a server with Express:

```ts server.ts icon="/icons/typescript.svg"
import express from "express";

const app = express();
const port = 8080;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`Listening on port ${port}...`);
});
```

***

To start the server on `localhost`:

```sh terminal icon="terminal"
bun server.ts
```
