# @tinyhttp/send

> json, send, sendFile, status and sendStatus methods for tinyhttp

Latest version **2.2.8** (published 2026-07-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install @tinyhttp/send
pnpm add @tinyhttp/send
yarn add @tinyhttp/send
bun add @tinyhttp/send
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.2.8 |
| Published | 2026-07-22 |
| First published | 2020-09-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Node | >=14.13.1 |
| Dependencies | 4 |
| Unpacked size | 28.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 2903 |
| Author | v1rtl |
| Maintainers | dropthebeatbro, v1rtl |
| Keywords | tinyhttp, node.js, web framework, web, backend, res, send, send-file |

## Links

- npm: https://www.npmjs.com/package/@tinyhttp/send
- Repository: https://github.com/tinyhttp/tinyhttp
- Homepage: https://tinyhttp.v1rtl.site
- npm.io page: https://npm.io/package/@tinyhttp/send

## Dependencies (4)

- [mrmime](https://npm.io/package/mrmime.md) ^2.0.1
- [@tinyhttp/etag](https://npm.io/package/@tinyhttp/etag.md) 2.1.2
- [header-range-parser](https://npm.io/package/header-range-parser.md) 2.0.0
- [@tinyhttp/content-type](https://npm.io/package/@tinyhttp/content-type.md) ^0.1.4

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 2.2.8 (latest) — 2026-07-22
- 2.2.7 — 2026-07-18
- 2.2.6 — 2026-07-18
- 2.2.5 — 2026-04-15
- 2.2.4 — 2025-09-14
- 2.2.3 — 2024-09-11
- 2.2.2 — 2024-06-26
- 2.2.1 — 2024-01-06
- 2.2.0 — 2023-09-28
- 2.1.0 — 2023-05-23
- 2.0.9 — 2023-05-14
- 2.0.8 — 2023-01-11
- 2.0.7 — 2022-10-28
- 2.0.6 — 2022-09-15
- 2.0.5 — 2022-06-05
- … 48 more at https://npm.io/package/@tinyhttp/send/versions

## README

# @tinyhttp/send

[![npm (scoped)][npm-badge]](https://npmjs.com/package/@tinyhttp/send)
[![npm][dl-badge]](https://npmjs.com/package/@tinyhttp/send)
[![][web-badge]](https://tinyhttp.v1rtl.site/mw/send)

Extensions for sending a response, including `send`, `sendStatus`, `status`,
`sendFile` and `json`. Works with any backend framework.

## Install

```sh
pnpm i @tinyhttp/send
```

## API

```js
import { json, send, sendStatus, status } from '@tinyhttp/send'
```

### `send(body)` [![][doc-badge]](https://tinyhttp.v1rtl.site/docs#ressend)

Sends the HTTP response.

The body parameter can be a Buffer object, a string, an object, or an array.

##### Example

```ts
res.send(Buffer.from('whoop'))
res.send({ some: 'json' })
res.send('<p>some html</p>')
res.status(404).send('Sorry, we cannot find that!')
res.status(500).send({ error: 'something blew up' })
```

### `json(body)` [![][doc-badge]](https://tinyhttp.v1rtl.site/docs#resjson)

Sends a JSON response. This method sends a response (with the correct
content-type) that is the parameter converted to a JSON string using
[`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).

The parameter can be any JSON type, including object, array, string, boolean,
number, or null, and you can also use it to convert other values to JSON.

##### Example

```ts
res.json(null)
res.json({ user: 'tobi' })
res.status(500).json({ error: 'message' })
```

### `status(number)` [![][doc-badge]](https://tinyhttp.v1rtl.site/docs#resstatus)

Sets the HTTP status for the response. It is a chainable alias of Node’s
`response.statusCode`.

##### Example

```ts
res.status(403).end()
res.status(400).send('Bad Request')
```

### `sendStatus` [![][doc-badge]](https://tinyhttp.v1rtl.site/docs#ressendstatus)

Sets the response HTTP status code to statusCode and send its string
representation as the response body.

##### Example

```ts
res.sendStatus(200) // equivalent to res.status(200).send('OK')
res.sendStatus(403) // equivalent to res.status(403).send('Forbidden')
res.sendStatus(404) // equivalent to res.status(404).send('Not Found')
res.sendStatus(500) // equivalent to res.status(500).send('Internal Server Error')
```

If an unsupported status code is specified, the HTTP status is still set to
statusCode and the string version of the code is sent as the response body.

### `sendFile` [![][doc-badge]](https://tinyhttp.v1rtl.site/docs#ressendfile)

Sends a file by piping a stream to response. It also checks for extension to set
a proper `Content-Type` header.

> Path argument must be absolute. To use a relative path, specify the `root`
> option first.

##### Example

```js
res.sendFile('song.mp3', { root: process.cwd() }, (err) => console.log(err))
```

## Example

```js
import { createServer } from 'node:http'
import { send } from '@tinyhttp/send'

createServer((req, res) => send(req, res)('Hello World')).listen(3000)
```

[npm-badge]: https://img.shields.io/npm/v/@tinyhttp/send?style=flat-square
[dl-badge]: https://img.shields.io/npm/dt/@tinyhttp/send?style=flat-square
[web-badge]: https://img.shields.io/badge/website-visit-hotpink?style=flat-square
[doc-badge]: https://img.shields.io/badge/-docs-hotpink?style=flat-square

---
_Source: https://npm.io/package/@tinyhttp/send · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
