Draw anything.
From a script.
Apexify.js is a programmatic visual library for Node.js — render charts, images, GIFs, slides and video on the server with one TypeScript API, powered by Rust under the hood.

await painter.createCanvas({
width: 960, height: 540,
gradientBg: { type: 'linear', colors: aurora },
bgLayers: [{ type: 'presetPattern',
pattern: { type: 'grid', size: 6 } }],
noiseBg: { intensity: 0.04 },
});Code → output
A handful of lines. A finished PNG.
Same TypeScript surface, whether you're rendering a chart, a slide, a banner, or a 60-frame GIF.
import { ApexPainter } from 'apexify.js';
const painter = new ApexPainter();
const { buffer } = await painter.createChart({
kind: 'line',
width: 960,
height: 540,
series: [
{ name: 'Revenue', data: revenue, fill: 'gradient' },
{ name: 'Target', data: target, dashed: true },
],
smooth: true,
palette: 'sunset',
legend: { position: 'top' },
background: { gradient: aurora },
});
await fs.promises.writeFile('chart.png', buffer);
Performance
TypeScript on the surface. Rust underneath.
Built on @napi-rs/canvas — a Rust-native binding that ships memory-efficient pipelines, smart caching, and parallel-safe batch & chain operations for big workloads.
Relative throughput
higher is betterNumbers are illustrative — measure on your own workload. Apexify gets the lead by composing Rust-backed canvas + image filters + chart layout on a single buffer instead of round-tripping through multiple libraries.
Recipes
Copy-paste starting points.
The full picture
What other libraries don't ship in the box.
Pixel processing, charts, GIFs, video, and composition behind a single TypeScript surface — instead of stitching together four packages.
| Feature | Apexify | sharp | node-canvas | jimp | fabric.js |
|---|---|---|---|---|---|
| Rust-backed perf | |||||
| TypeScript-first | |||||
| 22+ image filters | |||||
| Chart generation | |||||
| GIF creation | |||||
| Video pipeline (FFmpeg) | |||||
| Pattern + noise + blends | |||||
| Owner-supported |
Showcase
Every image below was rendered with this library.
No mockups, no placeholders. Tap any tile to inspect, or open the matching recipe in the gallery.
Stop hand-designing every asset.
Render them.
One install, one TypeScript API. From a quick chart PNG to a 60-frame GIF or a stitched MP4 — everything you'd need a design tool, a charting lib, and an image lib for, in a single import.



