# UseQR vs the Google Charts QR API

> You cannot choose the Google Charts QR API: Google deprecated it in 2012 and shut it down in March 2019, breaking every embed that still called it. If you are maintaining code that used it, the migration is a one-line URL swap to a keyless replacement such as UseQR's API, though for anything meant to last, download the image rather than hotlinking at all.

Source: https://useqr.app/vs/useqr-vs-google-charts-qr · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## A comparison with a service that no longer exists

For years, the standard free answer to "generate a QR code from a URL" was Google's Chart
API:

```
https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl=hello
```

It was keyless, reliable, backed by Google, and embedded in an enormous number of
wikis, dashboards, email templates and Stack Overflow answers. Google deprecated the
Image Charts API in **2012** and finally switched it off in **March 2019**: a seven-year
sunset, which is generous by any standard. The embeds broke anyway, because embeds are
exactly the kind of code nobody revisits. Broken QR images from that shutdown were still
being found in production systems years later.

This page exists because people still search for the comparison. The honest version is:
there is nothing left to compare against, and that fact is the most useful thing on the
page.

## The lesson, stated plainly

If a free service **backed by Google** with a seven-year deprecation window still broke
half the internet's QR embeds on its way out, then any hotlinked image endpoint is a
dependency you should think about before printing or embedding. This is the same
mechanism that kills dynamic QR codes when a vendor folds: the full anatomy is in
[what happens when a QR service shuts down](/vs/what-happens-when-a-qr-service-shuts-down).

Two mitigations actually work:

1. **Download the image instead of hotlinking** wherever the code is static. A saved PNG
   or SVG has no dependency on anyone.
2. **If you must hotlink, prefer an endpoint you could replace or run yourself.** An open
   source generator can outlive its host because anyone can redeploy it.

## The migration

If you are maintaining something that still constructs Chart API URLs, the swap is
mechanical:

```
# Before (dead since March 2019)
https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl=hello%20world

# After
https://useqr.app/api/v1/qr?data=hello%20world&size=300
```

Or the shortest form, which drops straight into markdown:

```markdown
![QR code](https://useqr.app/q/hello.png)
```

Differences worth knowing while porting: `chs=300x300` becomes `size=300` (codes are
square, one number suffices); `chl` becomes `data`, still URL-encoded; error correction
moves from `chld=L|M|Q|H` to `ec=L|M|Q|H`. The [API docs](/docs/developers/free-qr-code-api-no-key)
cover SVG and PDF output, typed payload endpoints and the batch call, and there is a
[curl walkthrough](/docs/developers/generate-a-qr-code-with-curl) if you are scripting the
sweep. After a bulk find-and-replace, [verify a sample decodes](/validate), the encoding
defaults differ slightly between generators, and checking costs seconds.

## Are we not just the next Google Charts?

The fair question. Three honest answers:

- **Static codes you downloaded are immune.** Most UseQR use is a downloaded file, not a
  hotlink; nothing that happens to us affects those.
- **Nothing we run is load-bearing for a static code.** A downloaded PNG or SVG is a
  file on your disk; it does not phone home, and it cannot be deprecated out from under
  you the way a hotlinked endpoint can.
- **We have no track record yet**, and pretending otherwise would undercut the whole
  page. If your embed must survive a decade untouched, download the image, advice we
  give even though it removes our API from your stack.

## FAQ

### Why did my Google Charts QR codes stop working?
Google deprecated the Image Charts API in 2012 and shut it down in March 2019. Any image tag or script still requesting chart.googleapis.com QR images has been broken since then and must be pointed at a replacement API.

### What is the closest replacement for the Google Charts QR API?
Any keyless GET-a-PNG endpoint. Swap the base URL and rename chs to size and chl to data. UseQR's api/v1/qr endpoint follows the same shape and also offers SVG, PDF and batch output without a key.

### Did printed QR codes from Google Charts stop working too?
No. A printed or downloaded static code contains the data in the pattern itself and never calls the API again. Only live embeds (pages requesting the image at view time) broke when the endpoint went away.

### How do I avoid this happening with another QR API?
Download the image rather than hotlinking wherever possible. A file on your own disk cannot be deprecated, rate-limited or shut down for you.

## Try it

- https://useqr.app/url
- https://useqr.app/validate
