← All guides

A QuickChart alternative for simple charts β€” plain params, no JSON-in-a-URL

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:

  1. The config is Chart.js JSON, hand-written into a URL. Braces, quotes, brackets β€” all of it URL-encoded. This is the canonical QuickChart bar chart (verified working today):
    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.
  2. The free hosted tier is capped at 1,000 charts per month with a 60 charts/min rate limit (per QuickChart's own FAQ, checked September 2026). A README badge on a repo with modest traffic can burn 1,000 image loads in days.

The same chart, as query params

https://mockbird.mockbird.workers.dev/m/demo/chart?data=12,19,7,24&type=bar&labels=q1,q2,q3,q4&title=Signups

bar chart rendered from URL params

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 translation

QuickChartMockbird
?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=300path 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):

line chart stacked bar chart donut chart with percent legend sparkline

Create your own chart URL (10 seconds, no signup)

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.

Honest comparison β€” including where QuickChart wins

QuickChart (hosted)QuickChart (self-hosted)Mockbird /chart
Chart typeseverything Chart.js draws + QR, wordcloud, graphviz, tablessameline, area, bar (grouped + stacked), pie, donut, spark β€” that's it
URL formatChart.js JSON, URL-encodedsameplain query params
Free volume1,000 charts/month, 60/min (their FAQ, Sep 2026)unlimited β€” but you run a server10,000 req/day per project
Typographyreal fonts (Chart.js canvas)samePNG 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
Watermarknonenonenone
Signup / keynone for free tierβ€”none
Open source / self-hostβœ” AGPLβœ”βœ˜ β€” hosted only
Comes with a mock REST API, QR, OG, avatarsQR yes; rest noQR 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 β†’

⚑ Skip the terminal: this link creates a live project in the dashboard β€” chart endpoint, seeded mock REST API, QR codes and placeholder images included. Real URL, no signup.