ChartPNG

Changelog

What changed, newest first. RSS feed.

Report presets and lenient parsing

Set options.plugins.chartpng.preset to kpi, ranking or comparison for a KPI with a sparkline, a ranking or a comparison with the previous period; previous, prefix and suffix tune them. Configs written by language models have their usual slips repaired (code fences, single quotes, unquoted keys, trailing commas), functions written as text are removed and never run, and the X-ChartPNG-Fixes response header lists what changed. New guides for each preset and an n8n workflow that posts a weekly KPI report to Slack.

Pricing says what is enforced

The pricing page no longer promises about 500 free images, because nothing enforced that number. Free images keep the watermark and the 4 megapixel cap.

Faster Get Pro checkout

The Get Pro button now shows that it is working and goes straight to the checkout. Clicking it more than once no longer does anything extra.

Dark backgrounds

Charts on a dark bkg now get light text, so they stay readable.

Values on the chart

Values are drawn on the chart: above bars when there are few, on the last point of a line and as the total in a doughnut. Set options.plugins.chartpng.values to false to hide them.

Default theme

Charts that do not style themselves get the ChartPNG theme: a blue and orange palette, a horizontal grid, the legend at the top left, rounded bars and smooth lines with a soft area. Whatever your config sets wins. Set options.plugins.chartpng.theme to false to turn it off.

Stricter URL parameters

Unknown or repeated parameters now return an error. QuickChart names (chart, width, height, backgroundColor, devicePixelRatio) still work as aliases. Other QuickChart parameters such as format, version or encoding return an error.

Limits and protections

Free images are capped at 4 megapixels (width times height times dpr squared). Configs over 16 KB, POST bodies over 20 KB, more than 100 ticks and nesting deeper than 16 levels are rejected with an error.

Signed URLs and Bearer keys

Pro keys work as Authorization: Bearer from your server, and those responses are never cached. For public images, sign the URL instead: k is the key id and s is an HMAC of the fields, so the key never appears in a URL.

ChartPNG launches

GET or POST /chart turns a Chart.js config into a PNG. All Chart.js chart types work. The c= parameter takes a Chart.js config as QuickChart does, and the QuickChart names chart, width, height, backgroundColor and devicePixelRatio work too, so most QuickChart URLs only need the domain changed. Charts are drawn with Chart.js 4. Free images carry a small watermark. Pro removes it.