Skip to content
klyoqr

Free QR code API and a widget for your own site

One address, no key, no account: ask for a code and get an image back. The engine is the same one that runs inside the browser tool — we simply run it on our side for the cases where there is no browser, like an invoice generator, a label printer or a warehouse panel.

The honest part first

The browser tool promises that your content never leaves your device. This API is the opposite: whatever you put in the address, you send to us. We do not store it — there is no database behind this endpoint and nothing is written to disk — but the request passes through our server, and a promise you cannot verify is worth nothing. So use the API where a browser cannot run, and the tool where it can.

The widget below is different again: it runs the same engine inside the browser of whoever visits your page. The content of the code never reaches us, even when the widget sits on a thousand sites.

How to call it

dthe content of the code, percent-encoded. Required. Up to 2953 bytes.
fsvg (default) or png.
edamage resistance: l, m (default), q or h.
spng only: pixels per module, 1–40. Left out, the image comes out around a thousand pixels wide.
mquiet zone in modules, 0–16, default 4. Scanners need it; do not set it to zero.
ccolour of the code, hex, default 111111.
bbackground colour, hex, default ffffff.
tt=1 makes the background transparent (png only).

Examples

  • A code for a link, as vector
    https://qr.klyo.pl/api?d=https%3A%2F%2Fexample.com%2Fmenu
  • The same as an image, ready for an e-mail
    https://qr.klyo.pl/api?d=https%3A%2F%2Fexample.com%2Fmenu&f=png
  • Brand colour, highest resistance, for print
    https://qr.klyo.pl/api?d=https%3A%2F%2Fexample.com&e=h&c=1d3557
  • Straight in a page
    <img src="https://qr.klyo.pl/api?d=https%3A%2F%2Fexample.com" alt="QR code" width="180">

The widget

Two lines on your page and every element with a data-klyo-qr attribute turns into a code. The script weighs four kilobytes and pulls the engine once, so ten codes on one page cost the same as one.

The caption under the code links back to us and carries rel="nofollow" on purpose: links spread by widgets are treated by Google as an attempt to build a position artificially, and we would rather be found for the tool. Remove the caption with data-klyo-qr-podpis="0" if it does not fit your design.

<div data-klyo-qr="https://example.com/menu"></div>
<script src="https://qr.klyo.pl/widget.js" async></script>

Limits and rules

  • No key, no account, no daily quota. There is a shared request limit per address, the same one that protects the rest of our servers — a normal page or a batch of a few hundred labels will not notice it.
  • The same address always returns the same image, so the answer may be cached for a year. If you generate thousands of codes, cache them on your side and you will barely touch us at all.
  • Codes are static: the content sits inside the pattern. We have no way to change where your code points after the fact, and neither has anyone else.
  • If you need this in your own infrastructure, the engine is one Rust crate with zero dependencies that compiles both to WebAssembly and natively. Write to us and we will point you at it.

All-purpose generator