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.

Chart Splat
$20
a month for Pro, 10,000 charts
  • 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
chartjs-node-canvas
$0
in licence fees, plus a server, native builds and your time
  • 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?

FeatureChart Splatchartjs-node-canvas
Price$0 to $20 a month, or about $0.005 per chart$0 for the software, plus hosting and maintenance
SetupOne HTTP requestnpm install, a working native canvas build, fonts, and a service to run it
Runtime requirementsAnything that can make an HTTPS requestNode.js with node-canvas compiled for that platform
Works from PHP, Python, Go, serverless or no-codeOnly through a Node service you deploy
Chart.js version4Whatever you pin; 4 is supported
OutputPNG, 800×600 by default, up to 4000pxPNG, JPEG, PDF or SVG through node-canvas
Custom plugins and fonts
Chart typesline, bar, pie, doughnut, radar, polar area, candlestick, OHLCAny Chart.js type or plugin you install
Agent accessMCP server, agent skills, x402 pay-per-chartYou build it
Data stays on your servers
Scaling, upgrades and memory leaksHandledYours

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.

chartjs-node-canvas
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] }],
  },
});
Chart Splat
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.

Full API reference →

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.