Chart image APIs compared
What 10,000 watermark-free chart images a month cost, and what else differs. We make ChartPNG, so read this knowing that. Every competitor value comes from the vendor's own pages. Where a page does not say, the cell says "Not stated".
| Feature | ChartPNG | QuickChart | Chart Splat | Chart-Output | Image-Charts |
|---|---|---|---|---|---|
| Price for 10,000 images a month, no watermark | €9/monthPro plan, VAT included. 10,000 images a month per key. Going over is flagged and dealt with by hand: there is no automatic cut-off. | €39/monthProfessional plan: 10,000 images a month. | $20/monthPro plan: 10,000 charts a month. Its pages do not say whether there is a watermark. | $29/monthStarter plan: 10,000 renders a month, no watermarks. | $99/monthBusiness plan, no watermark, API calls listed as unlimited. $89/month if paid yearly. |
| Free plan | Small watermarkUp to 4 megapixels per image. No monthly counter, fair use applies. | No watermark, rate limitedThe limit is not on its pricing page. | 100 charts a monthOver the limit, requests get a 429 until the next billing cycle. Watermark not stated. | 500 renders a monthNo watermarks. | Small watermarkA small text watermark in the top right corner. Free forever, API calls listed as unlimited. |
| Cheapest paid plan from its pricing page | €9/monthOne paid plan. | €39/monthProfessional. Community is free. | $5/monthStarter: 1,000 charts a month. | $29/monthStarter. | $99/monthBusiness. Individual is free. |
| Chart.js version | 4.6Renders with Chart.js 4; common v2 options are translated (see below). | 2 by defaultVersions 3 and 4 with the version parameter. | 4Stated on its home page. | Not statedIts docs say the JSON follows Chart.js conventions. | 2.8.0The only version listed. Others on request. |
| Chart.js plugins | NoEight core chart types, plus five report presets: kpi, ranking, comparison, funnel and gauge. | Yes, someIts README lists plugins such as datalabels and annotation, and says custom plugins are not available for version 3 and up. | Not stated | Not stated | Not stated |
| JavaScript functions in the config | NoChartPNG never runs code from the config. A function written as a string is removed, and a bare function is refused. | YesIt has a documentation page for them. | Not stated | Not stated | NoIts docs say functions are not supported, for reliability. |
| Config that is not strict JSON | RepairedSingle quotes, unquoted keys, trailing commas and code fences are fixed, and common Chart.js 2 options are translated. The X-ChartPNG-Fixes response header lists what changed. | AcceptedIts docs call the chart parameter a JavaScript or JSON object. | Not stated | Not stated | Not stated |
| Signed URLs | YesHMAC of the fields. The URL carries a key id, never the secret. | YesHMAC of the chart parameter with your API key. The URL carries accountId and sig, never the key. | Not stated | Listed on ProIts pricing page lists signed CDN URLs on Pro. Its docs list signed, short-lived URLs as planned. | YesHMAC-SHA256 in the ichm parameter, with an account id. Its docs tie signing to the Enterprise plan and say it removes the watermark. |
| Image URL for an img tag (GET) | Yes | Yes | Not statedIts docs show only POST, which returns base64 JSON. | YesWithout a key, 5 requests per 15 minutes per IP. In an img tag the key goes in the URL. | YesGET is what its examples use. |
| POST | YesBearer key. Returns the PNG. | Yes | YesReturns JSON with a base64 PNG. | Yes | Yes |
| Output formats | PNG | Not stated | PNG, SVG on paid plansFree is PNG only; Starter and Pro add SVG. | PNG, JPEG, SVG, WebP, PDFIts docs and its pricing page disagree on which plan includes PDF. | Not stated |
| MCP server | Yes@chartpng/mcp on npm, version 0.1.0, published 2 Nov 2026. | None on its pagesThird-party MCP servers for QuickChart exist on npm. QuickChart does not mention one. | YesIts docs say an MCP server is available. | Yes@chartoutput/mcp. | Yesimage-charts-mcp. Without a secret it makes watermarked URLs. |
| Self-hostable or open source | NoHosted only, closed source. | YesAGPL v3, with a Docker image. A self-hosted copy serves /chart, /qr and /graphviz. | Not stated | Self-hosting guideDocker Compose; it needs Redis and Supabase or a compatible Postgres. Licence not stated. | On-premise planBilled annually. Its pricing page gives two different starting prices, 350 € and 241.66 € a month. |
| What is kept about a chart, where documented | Configs are not stored by the appUsage counters use a salted hash of the IP. The CDN caches each rendered image by URL for up to a year. Vercel keeps request logs, URLs included, for a day. No data region is published. | Not stored, except short URLsShort URLs keep the config for 3 days, or 6 months on a paid plan. Logs kept on a support request are deleted after 7 days and can hold the config of a GET request. | Chart data not statedIts privacy policy covers account and usage data. | Render metadata is keptAI render inputs are discarded. Images stored for returnUrl are never overwritten and served with a one-year cache header. How long they are kept is not stated. | Chart data not statedCustomer data is stored in Google Cloud regions in the EU (Belgium and Frankfurt). On request, data is deleted or returned when a subscription ends. |
Moving from QuickChart. ChartPNG accepts QuickChart's names forchart, width, height, backgroundColor anddevicePixelRatio, repairs configs that are not strict JSON and translates common Chart.js 2 options. What still stops a move:
- QuickChart-only parameters are refused:
version,formatandencoding. Remove them from the URL. - Functions never run: one written as a string is removed from the config, a bare one is refused. Plugins are not available.
- Only the eight core chart types are drawn.
- Defaults differ. ChartPNG draws 600 by 360 at pixel ratio 1 on a white background. QuickChart draws 500 by 300 at 2 on a transparent one.
The migration recipe has the steps and a before and after example.
When to pick something else
- QuickChart if you need JavaScript functions or plugins in the config, Chart.js 2 or 3, or to run it yourself (AGPL v3, Docker image). ChartPNG launched in November 2026 and has no track record yet.
- Chart Splat if you need fewer than 1,000 images a month: its Starter plan is $5 and it has a free plan of 100 charts. Check that a POST that returns base64 JSON fits where the chart will be used.
- Chart-Output if you want 500 free renders a month without a watermark, or SVG, WebP or PDF output, async batch rendering, or webhooks. Its free plan beats ours.
- Image-Charts if you want an on-premise install, or customer data stored in EU regions. It is the most expensive of the five at 10,000 images.
- ChartPNG if the price for 10,000 images is what decides it, and you do not need functions, plugins or Chart.js 2 or 3. It is new, so it has no track record yet: /status shows what we measure on the live API.
How the price row was chosen
For each vendor, the cheapest plan whose pages list 10,000 images a month or more, without a watermark. Overage prices are not compared because most pages do not list them. ChartPNG's 10,000 images a month is the plan allowance and is not cut off automatically.
Sources
QuickChart
- Professional plan price and volume:
€39/month … 10,000 images/month
quickchart.io/pricing - Community plan:
No watermarks … Rate limit enforced
quickchart.io/pricing - Chart.js versions and default:
Chart.js major version: 2, 3, or 4. Defaults to 2.
quickchart.io/documentation - GET and POST:
supports both GET and POST methods
quickchart.io/documentation - Not strict JSON:
Javascript or JSON object
quickchart.io/documentation/usage/parameters - Signed URLs:
Include the raw chart parameter as the content of this HMAC signature.
quickchart.io/documentation/authentication - JavaScript functions:
Some chart configs include Javascript functions.
quickchart.io/documentation/javascript-functions - Licence, Docker, plugins:
A docker image is available on dockerhub at ianw/quickchart.
github.com/typpo/quickchart - Short URL lifetime:
Saved charts expire after 3 days for free users, 6 months for paid users.
quickchart.io/documentation/usage/short-urls-and-templates - Charts and logs:
images are rendered on-demand … deleted automatically after 7 days
quickchart.io/privacy
Chart Splat
- Plans, volume and 429 over the limit:
$20/month … 10,000 charts
chartsplat.com/pricing - Starter plan:
$5/month, 1,000 charts
chartsplat.com/pricing - Output formats:
PNG and SVG output
chartsplat.com/pricing - Chart.js version:
All powered by Chart.js v4.
chartsplat.com - POST returns base64 JSON; MCP server:
The API returns a base64-encoded PNG image
chartsplat.com/docs - Chart data not covered:
Email address, First name and last name
chartsplat.com/privacy
Chart-Output
- Starter and Free plans:
$29/mo … 10,000 renders / month · $0/mo … 500 renders / month · No watermarks
chart-output.com/pricing - Pro plan features:
Signed CDN URLs
chart-output.com/pricing - GET, formats:
GET variant available for <img src> embeds
chart-output.com/docs - Request limit without a key:
5 requests per 15 minutes, per IP address
chart-output.com/docs/authentication - MCP server:
npx @chartoutput/mcp
chart-output.com/docs/mcp - Signed URLs are planned; retention:
Signed, short-TTL URLs for returnUrl responses
chart-output.com/docs/security - Self-hosting:
Use the included Dockerfile and docker-compose
chart-output.com/docs/self-hosting
Image-Charts
- Business plan:
$99/month … $89/month when paid yearly … No watermark
www.image-charts.com/pricing - Individual plan:
A small "image-charts.com" text watermark will appear
www.image-charts.com/pricing - On-premise prices:
start at 350€/month (billed annually)
www.image-charts.com/pricing - Chart.js version and functions:
does not support Chart.js JavaScript function as value feature for reliability reasons
documentation.image-charts.com/chart-js - Signing:
mandatory to sign your request and remove the watermark
documentation.image-charts.com/enterprise - MCP server:
Leave them empty for the free, watermarked tier.
documentation.image-charts.com/mcp-server - Data location:
stored in Google Cloud regions in the European Union
www.image-charts.com/security