Comparison
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.
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 |
| 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:

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
{
"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.