Migrating from Google Image Charts

Google Image Charts was the static chart API at chart.googleapis.com/chart. One URL went in, one PNG came back, and every setting lived in query parameters such as cht, chd and chs. Google deprecated it in 2012 and switched it off in 2019. Image-Charts reads those same parameters, so the migration is a host swap.

How Do You Replace Google Image Charts?

Change the domain from chart.googleapis.com to image-charts.com. The chart parameters keep the same names and the same syntax, so the rest of the query string travels across untouched. For most URLs that makes Image-Charts a drop-in replacement, and the table below marks the places where it is not.

Google Image Charts, returns 404

https://chart.googleapis.com/chart?cht=bvg&chd=t:60,40,75|30,55,45&chs=700x300&chtt=Requests+per+month

Image-Charts, renders the chart below

https://image-charts.com/chart?cht=bvg&chd=t:60,40,75|30,55,45&chs=700x300&chtt=Requests+per+month

Grouped bar chart titled Requests per month, comparing Europe and North America across 2024, 2025 and 2026
A live Image-Charts URL, rendered by this page as a plain image tag. Unsigned charts are free, rate limited, and carry the small watermark you can see in the corner. Paid plans remove it.

Why Your Old Chart URLs Stopped Working

Google announced the deprecation of Image Charts in April 2012 and committed to keeping the service running for three more years. The turndown landed in March 2019.

Since then chart.googleapis.com/chart answers with an HTTP 404 whatever you send it. Bar charts, pie charts and QR codes all come back as a Google error page rather than an image.

The failure is quiet. An image tag inside an email, a PDF report, a Confluence page or a customer-facing dashboard raises no error when the source dies. It renders a broken image, and you usually hear about it from a customer rather than from a monitor.

Parameter Compatibility

Google documented 30 parameters for Image Charts. 23 work on Image-Charts unchanged, 1 is accepted and ignored, and 6 have no equivalent. The table below is built from the Image-Charts API specification, with every behaviour difference spelled out.

Google Image Charts parameters and their behaviour on Image-Charts
ParameterWhat It ControlsOn Image-Charts
chtChart typeSame values. Image-Charts adds bubble, polar area and doughnut types.
chdData seriesSame encodings. Adds chd=a:, a floating point format with no 0 to 100 or 0 to 4095 ceiling and automatic scaling.
chdsCustom or automatic data scalingSame syntax. The default y axis prints your real values instead of the 0 to 100 range Google kept.
chsChart size in pixelsSame syntax. Up to 998,001 pixels in total and 999 px per side, against 300,000 pixels on Google.
chlBar, slice and point labelsSame.
chcoSeries colorsSame.
chttChart titleSame.
chtsTitle color and font sizeSame.
chxtWhich axes are shownSame.
chxlCustom axis labelsSame.
chxrAxis rangeSame syntax. Changing the axis range also rescales the data, which is what most people expected Google to do.
chxsAxis label font and colorSupported. Scientific notation, label alignment and per-axis line color are not implemented.
chxpAxis label positionsSame.
chdlLegend textSame.
chdlpLegend position and orderSame.
chdlsLegend font and colorSame.
chfBackground and series fillsSame syntax. Gradients work on bar, line, pie and bubble charts, where Google allowed them on bar charts only.
chmMarkers and compound chartsSupported. The optional z-order field is ignored.
chlsLine thickness and dashesSame.
chgGrid linesSame.
chmaChart marginsSame syntax, and negative margins are allowed.
chofOutput formatSame.
chldQR code error correction and marginSame.
chbhBar width and spacingAccepted and ignored. Bar widths are computed for you.
chemDynamic icon markersNo equivalent.
chfdFormula-generated dataNo equivalent.
chpPie rotation and bar zero lineNo equivalent.
chstDynamic icon typeNo equivalent.
chtmMap areaNo equivalent.
chxtcAxis tick mark lengthNo equivalent.

Chart Types

Bar, line, pie, radar, GraphViz and QR code charts read the cht values you already use. Scatter plots, Venn diagrams, Google-o-meter gauges, map charts and dynamic icons have no Image-Charts equivalent, so those URLs need a different answer.

Parameters Google Never Had

A few parameters exist only on Image-Charts: chan renders an animated GIF, chbr rounds bar corners, chli puts a label inside a doughnut, icff and icfs select a Google Font and its style, iclocale formats numbers and dates for a language, and icretina doubles the pixel density. The reference documentation covers each one.

Running the Migration

  1. Find the dead URLs. Grep your codebase, templates and email layouts for chart.googleapis.com.
  2. Replace the host with image-charts.com and leave the query string alone.
  3. Load one of the rewritten URLs in a browser. A 400 response names the parameter the API refused, and the table above says whether a replacement exists.
  4. Check the 6 parameters with no equivalent and the chart types that were never ported. Those are the only URLs that need rework.

If the charts you are rebuilding are generated by a scheduled job or a no-code tool rather than by your own code, the integrations and the agent tooling reach the same API without a rewrite.

Point One URL at Image-Charts

Build a Chart