
# Takumi
**A Rust rendering engine that turns JSX, HTML, and node trees into images. No headless browser required.**
Render OpenGraph cards, animated GIFs, video frames, and vector SVG from Node.js, Cloudflare Workers, browsers, or any Rust application.
Drop-in compatible with `next/og`.
[](https://www.npmjs.com/package/takumi-js)
[](https://crates.io/crates/takumi)
[](https://www.npmjs.com/package/@takumi-rs/core)
[](#license)
[Documentation](https://takumi.kane.tw/docs/) · [Playground](https://takumi.kane.tw/playground) · [Showcase](https://takumi.kane.tw/showcase)
## Why Takumi
Takumi is a rendering pipeline built in Rust for one job: **turning markup and CSS into pixels**. It parses CSS, lays out the tree, shapes text, composites layers, and encodes the output inside a single binary. A headless-Chromium setup spends around **300 MB of RAM** and a browser cold start on the same OG card; Takumi spends **a function call**.
**One engine, every deployment target:**
- **Node.js** loads the native binding
- **Cloudflare Workers and browsers** load the WASM build
- **Rust applications** embed the `takumi` crate
Prebuilt binaries ship for macOS, Linux (glibc and musl), and Windows, on x64 and ARM64.
**CSS support reaches past the usual OG-image subset:**
- CSS Grid, block, inline, float
- `::before`, `::after`, `:is()`, `:where()`
- masks, `clip-path`, `backdrop-filter`, blend modes
- `background-clip: text`, conic gradients
- RTL text
- Tailwind v4 utilities, including arbitrary values
## Quick Start
```bash
bun i takumi-js
```
### Static image
```tsx
import { render } from "takumi-js";
import { writeFile } from "node:fs/promises";
const image = await render(