# UseQR vs the qrserver / goqr.me API

> api.qrserver.com is the long-standing free QR API and it works well for plain PNGs. UseQR adds SVG and PDF output, typed payload builders with real spec validation, decode-verification, an MCP server, and errors that return a corrected call — all still keyless.

Source: https://useqr.app/vs/useqr-vs-qrserver-api · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## What qrserver does well

`api.qrserver.com/v1/create-qr-code/?data=X&size=300x300` has been the default answer to
"free QR API" for over a decade. It is keyless, reliable, and the URL is short enough to type
from memory. That last point matters more than it sounds — it is why the endpoint is so
widely known.

If you need a plain PNG from a URL and nothing more, it is a perfectly good choice and we
would not tell you otherwise.

## Where UseQR differs

| | qrserver | UseQR |
|---|---|---|
| API key | none | none |
| PNG | yes | yes |
| SVG | limited | yes |
| PDF | no | yes |
| Module matrix as JSON | no | yes (`format=json`) |
| Module and eye styling | no | yes |
| Typed payload builders | no | 28 types, spec-validated |
| Decode-verify endpoint | no | yes |
| Decode an image | yes | yes |
| Batch endpoint | no | yes, 100 per call |
| OpenAPI document | no | 3.1, no security schemes |
| MCP server | no | yes |
| `llms.txt` | no | yes, plus `llms-full.txt` |
| Errors | plain text | `problem+json` with a `fix` field |
| Open source | no | MIT |

## The shortest call

```
https://useqr.app/q/hello.png
```

Path-style so it drops straight into markdown:

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

We also accept qrserver's parameter names — `data`, `size` including the `300x300` form,
`color`, `bgcolor`, `ecc`, `qzone` — so a call written for qrserver mostly works against us
unchanged.

## Typed payloads are the real difference

```
/api/v1/wifi?ssid=CafeGuest&password=espresso&security=WPA
/api/v1/upi?pa=merchant@upi&pn=Chai%20Point&am=120.00
/api/v1/epc?name=Red%20Cross&iban=BE72000000001616&amount=12.00
```

These validate against the actual specifications — the WiFi escaping rules, the NPCI VPA
pattern, the IBAN mod-97 checksum — so you get an error with a fix rather than a code that
generates cleanly and fails at the bank.

Building these payloads by hand is where most integrations go wrong.

## Errors that teach

```json
{
  "title": "Invalid parameter",
  "detail": "size 9000 is out of range",
  "field": "size",
  "fix": "choose between 64 and 4096 pixels, e.g. size=1024"
}
```

For an agent, the `fix` field is the difference between succeeding on the second attempt and
giving up.

## What we do not have

qrserver has more than a decade of uptime history and is embedded in a great deal of existing
code. We are newer. If you are choosing an API to hardcode into something you will not touch
for ten years, that track record is a real consideration — though ours is MIT-licensed, so
you can also just self-host it and depend on nobody.

## FAQ

### Is api.qrserver.com still the best free QR API?
It is still an excellent choice for plain PNG output and has a long track record. UseQR adds SVG and PDF, typed payload builders, verification, batch and an MCP server, also without a key.

### Can I switch from qrserver to UseQR without changing my code?
Mostly. We accept qrserver's parameter names including data, size in the 300x300 form, color, bgcolor, ecc and qzone.

### Does UseQR require an API key?
No. There is no signup, no key and no quota, and the OpenAPI document declares no security schemes so it imports as a GPT Action with authentication set to None.

### Which is better for AI agents?
UseQR — it publishes llms.txt, an OpenAPI 3.1 document and an MCP server, and every error carries a corrected call in a fix field.

## Try it

- https://useqr.app/developers
