Google Image Charts Alternative: Choose the Right Replacement

Google shut down its Image Charts API in March 2019, but static chart URLs still matter. QuickChart is the closest drop-in replacement. Szum is the design-led option when you can move to a modern JSON config.

Choose the replacement that matches the job

There are two honest answers. Preserve existing Google URL parameters with QuickChart, or rewrite the chart once in Szum to get a smaller config and a designed result across images, Figma, and interactive embeds.

FeatureQuickChartSzum
Best forExisting Google chart URLsNew integrations
First stepSwap chart.googleapis.com for quickchart.ioRewrite the chart as concise JSON
Main advantageLowest migration effortPublication-ready output
Main tradeoffLegacy parameters or Chart.js complexityNot URL-compatible with Google

The same job, rebuilt around readable JSON

Google Image Charts encoded the entire chart into a URL. Szum keeps the same server-rendered image model, but replaces abbreviated parameters with fields that say what they do.

The complete config behind this chart:

{
  "version": "2026-03-20",
  "theme": "editorial",
  "title": "Quarterly Revenue",
  "subtitle": "FY 2026, in thousands",
  "data": [
    { "x": "Q1", "y": 142 },
    { "x": "Q2", "y": 168 },
    { "x": "Q3", "y": 191 },
    { "x": "Q4", "y": 215 }
  ],
  "marks": [{ "type": "barY" }]
}

What Google Image Charts was

Google Image Charts turned URL parameters into a PNG. No libraries, no JavaScript, no server-side rendering. You constructed a URL with chart type, data, colors, and labels – and got an image back. It launched in 2007, was deprecated in 2012, and shut down in 2019.

A typical URL looked like this:

https://chart.googleapis.com/chart
  ?cht=bvg
  &chs=400x300
  &chd=t:142,168,191,215
  &chl=Q1|Q2|Q3|Q4
  &chtt=Quarterly+Revenue
  &chco=3366CC

Cryptic, but it worked. Millions of dashboards, reports, and emails depended on it. When Google killed the service, those images went blank overnight.

Why image charts still matter

Google pointed users to Google Charts – a JavaScript library. That solves the problem for web apps. It does nothing for the places where image charts were actually essential:

  • Emails – Gmail strips JavaScript. Outlook blocks inline SVG. A hosted PNG in an <img> tag is the only reliable way to show a chart.
  • Slack and Discord bots – unfurl a URL, show an image. No JavaScript execution.
  • PDF reports – server-side PDF generators need a static image URL, not a client-side rendering library.
  • SMS and push notifications – rich media cards accept image URLs.

The need for a URL that returns a chart image is not going away. It is the simplest possible integration: one URL, one image, any surface.

From Google parameters to explicit chart fields

Szum is not a compatibility layer, so migration means translating intent rather than preserving every abbreviated query parameter. The common cases map directly:

FeatureGoogle Image ChartsSzum
Chart typecht=bvgmarks: [{ type: "barY" }]
Dimensionschs=540x360width: 540, height: 360
Data and labelschd + chlOne flat array of named values
Titlechtttitle
ColorchcoA curated theme, color scale, or mark fill
Axes and rangeschxt + chxrx / y with an optional domain

That covers the charts most teams embedded in emails and reports. Highly customized legacy URLs still need a deliberate rewrite and a visual check; Szum does not pretend every Google option has an exact equivalent.

QuickChart vs Szum: replacement comparison

FeatureQuickChartSzum
Google URL compatibleYes (drop-in)No (new format)
Config formatGoogle URL params or Chart.js JSONPurpose-built JSON
Migration effortSwap domain in URLRewrite config (5–15 lines)
Design qualityChart.js defaultsCurated editorial themes
FontsNoto only (Enterprise for custom)1,951 Google Fonts (Creator)
Output formatsSVG, PNG, WebP, PDFSVG, PNG
Figma pluginNoYes
MCP serverNoYes
Free tierRate-limited500 renders/month
Paid plan$40/month$29/month
LicensePublic-domain output; AGPL server codeCommercial, all tiers
Self-hostingYes (Docker)No

When to use QuickChart vs Szum

Use QuickChart if

  • You have existing Google Image Charts URLs
  • You need the fastest possible migration
  • You need self-hosted deployment
  • You need PDF or WebP output

Use Szum if

  • Design quality matters to your brand
  • You are building something new
  • You want AI-friendly configs for LLMs
  • You need Figma or MCP integration
  • You want commercial licensing on every tier

See the difference yourself.

500 renders/month on the free plan, with persistent chart URLs for production embeds.

Create a chart

Migrating from Google Image Charts

Szum is not a drop-in replacement – it uses a different config format. But the migration is straightforward because Szum configs are shorter and more readable than what they replace.

Google Image Charts

chart.googleapis.com/chart
  ?cht=bvg
  &chs=540x360
  &chd=t:142,168,191,215
  &chl=Q1|Q2|Q3|Q4
  &chtt=Quarterly+Revenue
  &chco=3366CC
  &chxt=x,y
  &chxr=1,0,250
  &chbh=a

Szum

{
  "version": "2026-03-20",
  "theme": "editorial",
  "title": "Quarterly Revenue",
  "data": [
    { "x": "Q1", "y": 142 },
    { "x": "Q2", "y": 168 },
    { "x": "Q3", "y": 191 },
    { "x": "Q4", "y": 215 }
  ],
  "marks": [{ "type": "barY" }]
}

The Google URL encodes everything – chart type, data, labels, axes, bar spacing – into an encoded query string with abbreviated keys. The Szum config says what it means. barY is a vertical bar chart. editorial is a theme that handles typography, colors, and spacing. No chxt, chxr, or chbh to memorize.

If you have Chart.js configs (common when migrating through QuickChart first), rewrite them in the smaller Szum schema by hand or with an agent. Send each rewritten definition through free chart-aware validation before rendering. Structural errors, semantic errors, recoverable warnings, and canonical suggestions remain distinct.

Embedding chart images in emails

The most common Google Image Charts use case was embedding charts in emails and reports. Szum works the same way – a URL that returns an image:

<img
  src="https://szum.io/chart?config={...}"
  alt="Bar chart of quarterly revenue, rising to $215K in Q4"
  width="540"
  height="360"
  style="display: block; border: 0; width: 100%; max-width: 540px; height: auto;"
/>

Set format: "png" for email (PNG has universal client support) and scale: 2 for retina screens. See the full charts in emails guide for client compatibility, image blocking, and best practices.

Frequently asked questions

Is Google Image Charts still working?
No. Google shut down the Image Charts API in 2019. Any URL pointing to chart.googleapis.comno longer returns an image. Google's recommended replacement, Google Charts, is a JavaScript library – it does not generate static images you can embed in emails or reports.
What is the best Google Image Charts replacement?
It depends on your priority. If you need backward compatibility with existing Google Image Charts URLs, QuickChart is the closest drop-in replacement – swap the domain and most charts render. If design quality matters more than migration convenience, Szum produces publication-ready charts from simple JSON configs with curated themes. Both serve static images via URL, both work in emails and reports.
Do I need JavaScript to use a chart image API?
No. Chart image APIs return static PNG or SVG images from a URL. No JavaScript runs on the client – you embed the URL in an <img> tag. This is what makes them work in emails, Slack messages, PDF reports, and other environments where JavaScript cannot run.
How do I migrate from Google Image Charts?
You have two paths. For minimal effort, QuickChart accepts most Google Image Charts URL parameters – swap chart.googleapis.com with quickchart.ioin your URLs. For better visual output, rewrite your chart config in Szum's readable JSON. If you already migrated to Chart.js configs, the smaller Szum schema is straightforward to rewrite by hand or with an agent. Then use the free validation workflow to check fields, values, scales, and marks before rendering.