# 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, 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 | n/a |
| 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 | n/a |
| Max size | **4,096 px** | 1,000 × 1,000 px documented | documented limits vary | n/a |
| Decode endpoint | yes (`POST /api/v1/decode`) | yes (`/v1/read-qr-code/`) | no | n/a |
| Verify endpoint | yes (`GET /api/v1/verify`) | no | no | n/a |
| Batch endpoint | yes (**≤ 1,000** items) | no | no | n/a |
| Styling | 8 module styles, 5 eye styles, colours, gradients | colour, margin | colour, margin, EC level | n/a |
| Open source | no | no | yes, self-hostable | n/a |
| Rate limits | no published quota | documented limits vary | hosted tier rate-limited, paid plans for volume | n/a |

## 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). On
shutdown risk it makes no special claim: the mitigation is the same one that applies to
every API in this table: download the image rather than hotlinking, and static codes stop
depending on anyone.

## 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. The durable mitigation is to generate images ahead of time and serve them yourself, so a hotlink is never in the critical path.

## Try it

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