Free API
A free QR code API that returns an SVG
One GET request, one SVG back. No key, no account, CORS open to any origin. It fits a script, a CI job, a README or an AI agent.
The request
GET https://qrkept.com/api/qr?url=https%3A%2F%2Fexample.comThe answer is image/svg+xml. Encode the url value; an unencoded& in your link cuts it short.
Examples
HTML
<img src="https://qrkept.com/api/qr?url=https%3A%2F%2Fexample.com&foregroundColor=000000&backgroundColor=ffffff"
width="200" height="200" alt="QR code for example.com">Markdown
curl
curl -G "https://qrkept.com/api/qr" \
--data-urlencode "url=https://example.com" \
-d foregroundColor=000000 -d backgroundColor=ffffff \
-o qr.svgJavaScript
const params = new URLSearchParams({
url: 'https://example.com',
foregroundColor: '000000',
backgroundColor: 'ffffff',
})
const svg = await (await fetch('https://qrkept.com/api/qr?' + params)).text()No-code tools
- Anything with an "image from URL" field (Notion image block with "Embed link", Webflow, Wix, Squarespace, Carrd): paste the request URL.
- Zapier, Make, n8n: an HTTP "GET" step with the
urlquery parameter returns the SVG as the response body. - SVG support depends on the tool. Some email clients and spreadsheet image functions do not render SVG, so send one test before you rely on it.
Parameters
| Name | Default | Notes |
|---|---|---|
url | required | The link to encode. A missing scheme becomes https://. |
format | svg | Only svg is returned. png, jpg and jpeg answer 501 with a pointer to the generator; any other value gets the SVG. |
variant | pixelated | pixelated or rounded. |
foregroundColor | ffffff | Hex, with or without #. See the note on defaults below. |
backgroundColor | 000000 | Hex, with or without #. |
border | 1 | Quiet zone in modules, 0 to 8. |
size | 280 | Pixels, 160 to 400. |
Set both colors. The defaults are white modules on a black background, which some scanners read badly. Black on white (foregroundColor=000000&backgroundColor=ffffff) is the safe choice and what every example above uses. Error correction is fixed at level H, so a very long link answers 400 instead of producing an unreadable code.
Limits
- Free, with no key and no account. No quota is enforced today.
- Responses are cached for one hour (
Cache-Control: public, max-age=3600). - Best effort, no uptime promise. If one client sends abusive volume we will throttle or block it.
- SVG only. For PNG or JPG, use the generator and download.
- Nothing is written to our storage for a request, and no cookie is set.
- Print the file, not the link. For a flyer, a menu or a sign, save the SVG once. A hotlinked image depends on this server for as long as the page exists.
The codes from this API are static: they encode your link directly. A code you can re-point after printing is an editable code, a separate product you pay for once, with the price on that page and covered by the forever guarantee.
Attribution
No attribution is required. If you want to name the source, paste this:
<a href="https://qrkept.com/?utm_source=api-badge&utm_medium=referral">QR codes by qrkept.com</a>Questions people ask
- Do I need an API key or an account?
- No. The endpoint is a plain GET with no key, no sign-up and no cookies.
- Is there a rate limit?
- There is no quota and no counter today. Responses are cached for an hour, so repeated requests for one link are cheap. If a client hammers the endpoint we will throttle or block it, and this page will say so.
- Can I use it in a product I sell?
- Yes. It is free, with no attribution required. A link back is welcome and the snippet below is there if you want one.
- What happens to my images if qrkept.com goes away?
- A hotlinked image breaks. For anything printed, fetch the SVG once and keep the file. A static code holds your link itself and never depends on us again.
Related: the free generator· a QR code that never expires· the forever guarantee