First, credit where due: QuickChart is a genuinely excellent service. It renders full Chart.js configurations to images, it's open source (AGPL, typpo/quickchart on GitHub), watermark-free, and it can draw practically anything Chart.js can β radar, scatter, bubble, mixed types, annotations, custom fonts. If you need that power, use it. This page is for the other 80% of chart URLs in the wild: a handful of numbers that need to become a line, bar, pie or sparkline in a README, a chat message, or a dashboard <img> tag.
Prefer clicking to reading? Build your chart URL in the live playground β (instant preview, copyable URL).
For that job, two things about QuickChart bite:
https://quickchart.io/chart?c=%7Btype%3A'bar'%2Cdata%3A%7Blabels%3A%5B'q1'%2C'q2'%2C'q3'%2C'q4'%5D%2Cdatasets%3A%5B%7Bdata%3A%5B12%2C19%2C7%2C24%5D%7D%5D%7D%7D
That's {type:'bar',data:{labels:['q1','q2','q3','q4'],datasets:[{data:[12,19,7,24]}]}} percent-encoded. Fine when a library builds it; miserable to write, template, or code-review by hand.https://mockbird.mockbird.workers.dev/m/demo/chart?data=12,19,7,24&type=bar&labels=q1,q2,q3,q4&title=Signups
That URL is served live by our shared demo project β no key, no signup, CORS on, and the response is deterministic: the same URL returns byte-identical output forever, with Cache-Control: public, so browsers, proxies and GitHub's image cache do the volume work for you. Each project (the anonymous kind you create in one curl included) gets 10,000 requests/day β vs 1,000/month on QuickChart's free hosted tier.
| QuickChart | Mockbird |
|---|---|
?c={type:'line',data:{datasets:[{data:[3,7,4]}]}} | /chart?data=3,7,4 |
?c={type:'bar',β¦labels:['a','b']β¦} | /chart?data=β¦&type=bar&labels=a,b |
multiple datasets:[β¦],[β¦] | pipe-separated: ?data=3,7,4|1,5,8&legend=alpha,beta |
stacked bars (options.scalesβ¦stacked) | &type=bar&stack=1 |
| pie / doughnut type | ?data=42,31,17,10&type=donut&labels=api,web,cli,other β legend with computed % included; ?hole= sets the ring |
sparkline (/chart?c={type:'sparkline'β¦}) | /chart/300x80?data=β¦&type=spark |
&width=600&height=300 | path size: /chart/600x300?β¦ |
&backgroundColor=β¦ | &bg=161b22 (or transparent); &theme=dark for the whole palette |
| dataset colors in JSON | &color=34d399 / &colors=hex,hex,β¦ |
&format=svg | .svg suffix or ?format=svg β same param name |
/qr?text=hello | /qr?data=hello β plus built-in Wi-Fi (?ssid=) and vCard (?name=) payload modes |
| radar / scatter / bubble / sankey / wordcloud | β β keep using QuickChart for these |
Every chart type, live from the demo (these are real <img> tags, view-source them):
The demo project above is shared. Your own project takes one curl and gives you a private base URL that also serves a full mock REST API, QR codes, OG images, avatars and placeholder images:
curl -s -X POST https://mockbird.mockbird.workers.dev/api/projects -H 'content-type: application/json' -d '{"name":"charts"}'
# β {"id":"a1b2c3d4e5", "adminKey":"β¦", β¦}
# your chart endpoint, immediately:
https://mockbird.mockbird.workers.dev/m/a1b2c3d4e5/chart?data=3,7,4,9,6
Or skip the terminal: this link creates a project in the dashboard β no signup. Full parameter reference in the docs and the chart image API guide.
| QuickChart (hosted) | QuickChart (self-hosted) | Mockbird /chart | |
|---|---|---|---|
| Chart types | everything Chart.js draws + QR, wordcloud, graphviz, tables | same | line, area, bar (grouped + stacked), pie, donut, spark β that's it |
| URL format | Chart.js JSON, URL-encoded | same | plain query params |
| Free volume | 1,000 charts/month, 60/min (their FAQ, Sep 2026) | unlimited β but you run a server | 10,000 req/day per project |
| Typography | real fonts (Chart.js canvas) | same | PNG uses a blocky pixel font; SVG twin uses system fonts |
| Deterministic bytes | β (re-rendered) | β | β β same URL, same bytes, forever |
| SVG output | β &format=svg | β | β β .svg twin of every chart |
| Watermark | none | none | none |
| Signup / key | none for free tier | β | none |
| Open source / self-host | β AGPL | β | β β hosted only |
| Comes with a mock REST API, QR, OG, avatars | QR yes; rest no | QR yes | β β one base URL for all of it |
Written by the Mockbird maker β bias disclosed. Pick QuickChart when you need Chart.js-grade output: radar/scatter/bubble/sankey, mixed axes, annotations, real typography, or when a library is generating the config anyway β and if volume is the only problem, self-hosting their AGPL server is a legitimate free fix (it just stops being zero-ops). Their hosted paid tiers are also reasonable if you'd rather pay than host. Pick Mockbird when the chart is simple, the config is hand-written, and you want it cached, deterministic, uncapped-for-practical-purposes, and living at the same base URL as your mock API. Facts above verified against QuickChart's official FAQ and live endpoints in September 2026 β check their pages for current terms.
Full API reference in the docs. More guides: free chart image API Β· free QR code API Β· OG image API Β· testing loading & error states. Create your API β