Create dynamic (editable) QR codes: one printed code whose destination you can change later, with per-code scan analytics, managed from Raycast. Static codes too.
The QR extensions already in the Store turn something into a QR image, or turn a QR image into something. OpenQR treats a QR code as an object that keeps working after it has been printed: the code stays the same, and what it points at can change.
| Extension | What it does | Overlap with OpenQR |
|---|---|---|
| QR Code Generator | Renders a QR image locally (the qrcode npm package) from text, clipboard or selection. No account, works offline. | The only real overlap, and only with OpenQR's static command. |
| QRCP | Transfers files between Mac and phone over Wi-Fi. The QR code is the transport, not the product. | None. |
| QR Code Scanner | Reads a QR code off your screen. | None (it decodes, OpenQR encodes). |
| Link shorteners, e.g. Bitly | Shorten and list links. A short link can be re-pointed, but there is no QR command and no scan analytics in Raycast. | The short link only, never the printable code or its scans. |
If you only want a static image made offline, use QR Code Generator. It is lighter, it needs no account, and OpenQR is not trying to replace it.
What is only here, because it needs a server behind it:
oqr.to short link and get the QR image for it.
Print the image, then re-point the destination whenever you like: the printed code
never changes. No other extension in the Store produces a QR code whose destination
can be changed after it is printed.Static generation is included so you do not need two extensions once you have an account, but it is the commodity half. The dynamic half is the reason this exists.
The key is stored as a password preference and sent as
Authorization: Bearer oqr_… to https://openqr.uk through the official
@open-qr/sdk client. Nothing else is
configured, and nothing is sent anywhere else.
Every command needs the key, including the static one: OpenQR authenticates its whole API surface, so there is no anonymous mode to fall back on. That is the trade for the static command living beside the dynamic ones.
Accounts are free and the API is free. Pricing in full:
The extension itself is free and MIT licensed, and it does not sell you anything: if your account hits a plan limit, the API says so and the command surfaces it as a toast.
Encode any text or URL (POST /v1/qr). Choose PNG or SVG, set the pixel size,
and optionally set foreground and background colors (either 232E3A or #232E3A). Both
formats honour the colors. From the result you can open the file, reveal it in Finder,
copy the file (or the SVG markup) to the clipboard, or generate another. The code never
expires and needs no server to resolve.
Create an editable short link on oqr.to (POST /v1/dynamic) from a destination URL,
with an optional label and saved theme. The short URL is copied to the clipboard, and
the QR image for that short URL is rendered inline to copy, save or open: a dynamic
code exists to be printed, so the link on its own is not the useful half. If a theme was given, the image uses its colors.
Custom slugs, tags and folders are not set at creation.
/v1/dynamicdoes not accept them; set them afterwards in the dashboard.
Browse your dynamic codes (GET /v1/dynamic) with short URL and status. Per code:
Enter copies the image, Cmd+Shift+K opens it full size.PATCH /v1/dynamic/{id}): change destination and label
without reprinting anything.GET /v1/dynamic/{id}/scans, 30-day window): totals, last 7
days, top countries, devices and referrers. Or pull a scan count into a toast.DELETE /v1/dynamic/{id}) behind a confirmation.Only the selected row renders a QR image, and renders are cached on disk by payload,
size, colors and format. Every List.Item mounts, so rendering per item would fire one
API request per code in the account each time the command opens.
OpenQR is a free, open-source QR generator (open-qr/openqr, AGPL-3.0) plus a hosted API for dynamic codes. Scan analytics are aggregated at write time and never store a scanner identifier, so there is nothing to re-identify.
MIT © Sam Moreton