# @qrcodesdk/node

Node.js renderers for QRCodeSDK. Use this package with `@qrcodesdk/core` when you need a PNG `Buffer` for files, HTTP responses, downloads, email attachments, or other server-side integrations.

## Install

<PackageManagerTabs packages={['@qrcodesdk/core', '@qrcodesdk/node']} mode="add" />

## Minimal example

```ts
import {qrcode} from '@qrcodesdk/core';
import {QRCodePNGRenderer} from '@qrcodesdk/node';

const png = qrcode('https://qrcodesdk.dev').render(QRCodePNGRenderer());
```

`QRCodePNGRenderer()` returns a Node.js `Buffer` containing a square, fully opaque PNG image.

## Work with PNG output

See the [PNG Buffer renderer](/reference/renderers/png/) for compression, prepared PNG overlays,
and exact constraints. Follow [Download or save](/guides/download-or-save/) to write the Buffer to
disk or [Serve a QR code](/guides/server-output/) to return it as `image/png`.

## Runtime requirements

`@qrcodesdk/node` directly supports Node.js 22.0.0 or newer. Bun and Deno are supported through
their Node.js compatibility layers.

The public TypeScript API uses Node's global `Buffer` type. TypeScript consumers must include
`@types/node` in their development dependencies and make Node types available in their TypeScript
configuration.

## Package boundary

`@qrcodesdk/node` provides Node-specific renderers and does not replace `@qrcodesdk/core`. The core package still provides `qrcode()`, matrix generation and builder options.

## Public API

```ts
import {
  type QRCodePNGImageOptions,
  QRCodePNGRenderer,
  type QRCodePNGRendererOptions,
} from '@qrcodesdk/node';
```
