You're viewing OG Image v6 beta documentation. For stable docs, switch to v5. Release Notes
Renderers

Takumi Renderer

Last updated by Harlan Wilton in feat!: rename chromium renderer to browser, add cloudflare support (#461) * feat!: rename chromium renderer to browser, add cloudflare support BREAKING CHANGES: - Renamed `chromium` renderer to `browser` - Component suffix `.chromium.vue` → `.browser.vue` - Config `chromium: 'playwright'` → `browser: { provider: 'playwright' }` - Internal: `useChromiumRenderer()` → `useBrowserRenderer()` New features: - Cloudflare Browser Rendering support via `@cloudflare/puppeteer` - New config: `browser: { provider: 'cloudflare', binding: 'BROWSER' }` - Auto-fallback for cloudflare provider: chrome-launcher (dev), playwright (prerender), cloudflare (runtime) - Playwright/Puppeteer API compatibility layer in screenshot.ts * docs: add chromium→browser migration and cloudflare support docs - Add chromium→browser rename section to v6 migration guide - Document cloudflare browser rendering setup in browser renderer docs - Add configuration examples for cloudflare provider * fix: resolve type errors for browser renderer refactor - Update ProviderName type: 'chromium' → 'browser' in dependencies.ts - Add BrowserConfig import and browser property to ModuleOptions - Update createBrowser type declaration to accept optional H3Event - Fix cloudflare binding to use lazy-loaded puppeteer with local types - Fix colorPreference comparison (remove impossible 'no-preference' check) - Update defineOgImageScreenshot renderer to 'browser' - Update client/pages/index.vue chromium → browser in templates * chore: remove working files that should not be committed.

Takumi is a Rust-based renderer that directly rasterizes to PNG/JPEG/WebP without an SVG intermediate step.

It's designed as a faster alternative to Satori for simple templates, offering 2-10x better performance according to Takumi benchmarks.

Installation

# Node.js
pnpm i -D @takumi-rs/core

# Edge runtimes (Cloudflare, Vercel Edge, etc.)
pnpm i -D @takumi-rs/wasm

Usage

The renderer is determined by the component filename suffix. Create your component with a .takumi.vue suffix:

components/OgImage/MyTemplate.takumi.vue

The module automatically detects the renderer from the filename — no configuration needed.

Pros

  • 2-10x faster than Satori+Resvg for simple templates
  • Direct PNG/JPEG/WebP rasterization (no SVG intermediate)
  • Native Tailwind CSS support via tw prop
  • Works on Node.js and edge runtimes (WASM)
  • Variable font support
  • WOFF2 font format support
  • RTL text support
  • COLR emoji font support (e.g., Twemoji)

Cons

  • Limited CSS support compared to Satori
  • No gradient backgrounds
  • Opacity color syntax not fully supported
  • Some flexbox features missing

Limitations

Takumi has more CSS limitations than Satori. It works best with simple, solid-color templates.

For the full list of supported CSS properties, see the Takumi documentation.

Supported Features

FeatureStatusNotes
Solid background colorsbg-gray-900, bg-blue-500
Basic flexboxflex, items-center, justify-center
Text colors (solid)text-white, text-gray-500
Font sizes and weightstext-6xl, font-bold
Rounded cornersrounded-lg, rounded-full
EmojiVia COLR fonts
ImagesPNG, JPEG, WebP, SVG
Padding and marginp-4, m-2, gap-4
Width and heightw-full, h-16, w-[200px]

Unsupported Features

FeatureStatusAlternative
Gradient backgroundsUse solid colors or images
Opacity colors (/60)Use full opacity colors
justify-betweenUse explicit gaps or padding
flex-1, flex-growUse fixed widths
CSS transformsPre-transform images
Box shadowsUse border or images
You can try Takumi in the online playground without any installation.
For complex templates with gradients, shadows, or opacity, use Satori or Browser instead.

When to Use Takumi

Takumi is ideal for:

  • Simple templates with solid colors
  • High-throughput scenarios where speed matters
  • Edge runtime deployments where bundle size is important
  • Sites with many pages that need fast OG image generation

Consider Satori instead when:

  • You need gradient backgrounds
  • You need opacity/transparency effects
  • You need complex flexbox layouts

Consider Browser instead when:

  • You need full CSS support
  • You're prerendering all images at build time

Example Template

A Takumi-compatible template using only supported features:

<script setup lang="ts">
defineProps<{
  title: string
  description?: string
}>()
</script>

<template>
  <div class="w-full h-full flex flex-col items-center justify-center bg-gray-900 text-white p-12">
    <h1 class="text-6xl font-bold mb-4">
      {{ title }}
    </h1>
    <p v-if="description" class="text-2xl text-gray-400">
      {{ description }}
    </p>
  </div>
</template>

Runtime Compatibility

Takumi supports both Node.js and WASM runtimes. The module automatically selects the appropriate binding based on your deployment target.

EnvironmentBindingNotes
Node.js@takumi-rs/coreNative performance
Cloudflare Workers@takumi-rs/wasmWASM bundle
Vercel Edge@takumi-rs/wasmWASM bundle
Netlify Edge@takumi-rs/wasmWASM bundle
AWS Lambda@takumi-rs/coreNative performance

See the Renderers overview for more details on runtime support.

Disabling Takumi

If you have Takumi installed but want to disable it for specific environments:

nuxt.config.ts
export default defineNuxtConfig({
  ogImage: {
    compatibility: {
      runtime: {
        takumi: false
      }
    }
  }
})
Did this page help you?