# Free QR code APIs compared

> Three free QR APIs are worth knowing: goqr.me's qrserver (keyless, long-established, has a decode endpoint), QuickChart (open source, self-hostable, rate-limited hosted tier) and UseQR (keyless, adds verify, batch and MCP). Google Charts' QR API was deprecated in 2012 and no longer works, so migrate anything still calling it.

Source: https://useqr.app/docs/developers/free-qr-code-api-comparison · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The field

"Free QR code API" means four different things in practice: a keyless HTTP endpoint
(goqr.me, UseQR), an open-source service you can also self-host (QuickChart), a free tier
on a paid product (most dynamic-QR platforms), and a dead API that tutorials still cite
(Google Charts). This page covers the first three and the ghost.

| | UseQR | goqr.me / qrserver | QuickChart | Google Charts |
|---|---|---|---|---|
| Auth | none | none | none on hosted tier | — |
| Example | `useqr.app/q/hello.png` | `api.qrserver.com/v1/create-qr-code/?data=hello&size=300x300` | `quickchart.io/qr?text=hello` | deprecated |
| Formats | PNG, SVG, SVG Tiny, JSON, base64 | PNG, GIF, JPEG, SVG, EPS | PNG, SVG, base64 | — |
| Max size | **4,096 px** | 1,000 × 1,000 px documented | documented limits vary | — |
| Decode endpoint | yes (`POST /api/v1/decode`) | yes (`/v1/read-qr-code/`) | no | — |
| Verify endpoint | yes (`GET /api/v1/verify`) | no | no | — |
| Batch endpoint | yes (**≤ 1,000** items) | no | no | — |
| Styling | 8 module styles, 5 eye styles, colours, gradients | colour, margin | colour, margin, EC level | — |
| Open source | MIT, self-hostable | no | yes, self-hostable | — |
| Rate limits | no published quota | documented limits vary | hosted tier rate-limited, paid plans for volume | — |

## The ghost: Google Charts

`chart.googleapis.com/chart?cht=qr&...` appears in an enormous number of Stack Overflow
answers and older tutorials. The Infographics API that served it was **deprecated in 2012**
and has since been switched off. If a codebase you maintain still builds those URLs, it is
shipping broken images; any of the three live APIs above is a drop-in replacement. The
general failure mode — a QR service disappearing and taking printed codes with it — is
covered in [what happens when a QR service shuts down](/vs/what-happens-when-a-qr-service-shuts-down).

## Where each one is the right choice

**qrserver (goqr.me)** has been serving keyless QR images for well over a decade, which is
a genuine argument: longevity is the thing you cannot benchmark. It also has a decode
endpoint. Its ceiling is styling (colour and margin, essentially) and the 1,000 px size
cap, which is below the [300 DPI floor](/docs/print/qr-code-dpi-for-printing) for prints
larger than about 8 cm. A fuller head-to-head is at [UseQR vs qrserver](/vs/useqr-vs-qrserver-api).

**QuickChart** is the right answer when you want one service for charts *and* QR codes, or
when self-hosting matters and you want a small, single-purpose service rather than a full
toolkit. The hosted community instance is rate-limited with paid tiers for volume — read
their current docs for the numbers rather than trusting a blog post.

**UseQR** is the newest of the three — worth saying plainly, since uptime history is the
one dimension where new services cannot compete. What it adds over both:
[verify](/docs/developers/building-a-decode-verify-loop) (render → decode → report, so you
can prove a styled code scans), batch generation up to **1,000 items** per call, typed
payload endpoints (WiFi, UPI, PIX, EPC, vCard) validated against the real specs, an
[MCP server](/docs/developers/qr-code-mcp-server) for AI agents, and
`application/problem+json` errors that include a corrected call. The full parameter
reference is on the [keyless API page](/docs/developers/free-qr-code-api-no-key). It is
also MIT-licensed, so the shutdown risk has a concrete answer: clone it and
[self-host](/docs/developers/self-hosting-a-qr-generator).

## What none of them give you

Scan analytics and editable destinations require dynamic QR codes, which require accounts,
persistence and (eventually) money. No keyless API offers them, honestly including ours —
if you need them, see [when a paid platform is worth it](/vs/when-a-paid-qr-platform-is-worth-it).

## Choosing

- Longest track record, basic styling: qrserver.
- Charts and QR from one self-hostable service: QuickChart.
- Styling, verification, batch, typed payloads, agent integration: UseQR.
- Anything still calling Google Charts: migrate today.

## FAQ

### Is there a completely free QR code API with no key?
Yes — several. goqr.me's qrserver and UseQR both serve QR images from a plain GET request with no signup, no API key and no watermark. QuickChart's hosted tier is also keyless but rate-limited.

### Does the Google Charts QR API still work?
No. The Infographics API behind cht=qr was deprecated in 2012 and has since been switched off. Code that still builds chart.googleapis.com QR URLs returns errors, not images.

### Which free QR API can decode images?
qrserver has a read-qr-code endpoint and UseQR has POST /api/v1/decode, which accepts raw bytes, a multipart file or a JSON url field. UseQR additionally offers a verify endpoint that renders a code and decodes it back.

### Are free QR APIs safe to rely on in production?
The risks are shutdown and rate limiting, not the QR codes themselves — static codes keep working even if the generator dies. Prefer an API that is open source so you can self-host if the hosted service ever disappears.

## Try it

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