Chart Splat vs chartjs-node-canvas
Chart Splat runs Chart.js 4 on chartjs-node-canvas so you do not have to. Here is when doing it yourself is still the right call.
chartjs-node-canvas facts checked on 2026-10-17. Sources are listed at the bottom.
Which should I use, Chart Splat or chartjs-node-canvas?
Self-hosting chartjs-node-canvas costs nothing in licence fees and everything in native builds, fonts, memory and a Node service to keep alive. Chart Splat is the same Chart.js 4 renderer behind one HTTP call, usable from any language, with an MCP server for agents and pay-per-chart pricing. Keep self-hosting when chart data cannot leave your network, when you need custom plugins or fonts, or when you already run Node at a volume where per-chart pricing stops making sense.
- One HTTPS request from any language or runtime
- Chart.js 4 and Inter, rendered on our servers
- MCP server, CLI and x402 for agents and scripts
- Free for 100 charts a month, $5 or $20 after that
- MIT-licensed npm package wrapping Chart.js on node-canvas
- Needs the native canvas build: Cairo, Pango and fonts on every host
- Your process, your memory limits, your concurrency
- Full control: plugins, fonts, offline, data stays in-house
How do Chart Splat and chartjs-node-canvas compare?
| Feature | Chart Splat | chartjs-node-canvas |
|---|---|---|
| Price | $0 to $20 a month, or about $0.005 per chart | $0 for the software, plus hosting and maintenance |
| Setup | One HTTP request | npm install, a working native canvas build, fonts, and a service to run it |
| Runtime requirements | Anything that can make an HTTPS request | Node.js with node-canvas compiled for that platform |
| Works from PHP, Python, Go, serverless or no-code | Only through a Node service you deploy | |
| Chart.js version | 4 | Whatever you pin; 4 is supported |
| Output | PNG, 800×600 by default, up to 4000px | PNG, JPEG, PDF or SVG through node-canvas |
| Custom plugins and fonts | ||
| Chart types | line, bar, pie, doughnut, radar, polar area, candlestick, OHLC | Any Chart.js type or plugin you install |
| Agent access | MCP server, agent skills, x402 pay-per-chart | You build it |
| Data stays on your servers | ||
| Scaling, upgrades and memory leaks | Handled | Yours |
When is chartjs-node-canvas the better choice?
We would rather you pick the right tool than pick us for the wrong job.
Chart data cannot leave your network
Every Chart Splat request sends your labels and values to our API. If that is a compliance problem, render in-house.
You need custom plugins, fonts or chart types
chartjs-node-canvas runs any Chart.js plugin and any font you register. Chart Splat renders eight chart types with its own font set.
You already run Node at high volume
If a Node service with a working canvas build is already in production and you render hundreds of thousands of charts, the marginal cost of self-hosting is close to zero.
You render offline or in an air-gapped build
A hosted API needs the network. A local renderer does not.
Why switch from chartjs-node-canvas to Chart Splat?
No native build step in your deploy
node-canvas needs Cairo, Pango and compatible prebuilt binaries, which is where Lambda, Alpine and ARM deploys usually break. Chart Splat is an HTTPS call, so it works the same from PHP, Python, Go, a serverless function or a shell script.
Agents can use it today
The MCP server gives Claude and other agents a generate_chart tool. x402 lets an agent pay about $0.005 USDC per chart from its own wallet with no account to provision.
Nothing to maintain
Fonts, Chart.js upgrades, canvas memory growth and concurrency limits are our problem. You keep one HTTP call and an API key.
Costs you can predict
100 charts a month free, $5 for 1,000, $20 for 10,000, or pay per chart. No server to size and no on-call for a renderer.
How do I replace chartjs-node-canvas with Chart Splat?
The config object you pass to renderToBuffer is the request body. Add width and height under options, send an API key, and decode the data URI in the response.
import { ChartJSNodeCanvas } from 'chartjs-node-canvas';
const canvas = new ChartJSNodeCanvas({ width: 800, height: 600 });
const png = await canvas.renderToBuffer({
type: 'bar',
data: {
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
datasets: [{ label: 'Revenue', data: [50, 75, 60, 90] }],
},
});const res = await fetch('https://api.chartsplat.com/chart', {
method: 'POST',
headers: {
'X-Api-Key': process.env.CHARTSPLAT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'bar',
data: {
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
datasets: [{ label: 'Revenue', data: [50, 75, 60, 90] }],
},
options: { width: 800, height: 600 },
}),
});
const { image } = await res.json(); // data:image/png;base64,...
const png = Buffer.from(image.split(',')[1], 'base64');The official chartsplat npm package wraps this call. Plugins you registered with Chart.register and fonts you registered with registerFont have no equivalent on Chart Splat.
Chart Splat vs chartjs-node-canvas: questions
Is chartjs-node-canvas free?
Yes. chartjs-node-canvas is MIT licensed. The cost is the native canvas dependency it needs on every machine that runs it, the fonts you install, and the Node service you keep running. Chart Splat starts at $0 for 100 charts a month.
Does Chart Splat use chartjs-node-canvas?
Yes. Chart Splat renders with Chart.js 4 on chartjs-node-canvas and the Inter font. The PNG you get back is the kind you would render yourself, without the build step.
Can I render Chart.js on the server without Node.js?
Not with chartjs-node-canvas, which is a Node package. Chart Splat is an HTTPS API, so any language with an HTTP client can render a Chart.js chart.
Will my charts look the same after switching?
The engine is the same Chart.js 4, so layout and colours match. Text renders in Inter on Chart Splat, so charts that depended on a specific font will differ there.
Can I keep my data in-house with Chart Splat?
No. Each request sends the chart's labels and values to the Chart Splat API. If that is not acceptable, self-host chartjs-node-canvas.
Try it on your own config
100 charts a month free with an API key, or pay about $0.005 USDC per chart on Base, no account or API key.
Other comparisons
Sources
Checked on 2026-10-17. If chartjs-node-canvas changes its prices or limits, tell us and we will update this page.