v1.2.0 · MIT licensed · self-hosted
A self-hosted, open-source QR generator with optional auth, scan analytics, and admin controls. No SaaS account, no trackers by default, and optional integrations you control.
Generate
No sign-up required — anonymous codes are enabled by default. Sign in to manage and edit them later.
Features
Built for teams that print, share, and track real-world links — and want the whole stack under their own control.
Foreground & background colors, border treatments, templates, and a 10-character center overlay.
Download crisp PNG bitmaps or scalable SVG vectors. Pick the right format for print or web.
Require a password before the redirect resolves. Hashed server-side, never stored in plain text.
Schedule QR codes to deactivate automatically. Run a campaign without manual cleanup.
Count scans, country (from your reverse-proxy header), and device class — no fingerprinting, no trackers.
A clean REST API and CSV upload for generating many codes at once. Issue per-user API keys.
How it works
01
Drop any destination — link, login page, Wi-Fi voucher, payment flow.
02
Pick colors, a template, optional center text, expiry and password.
03
Download PNG/SVG, copy the short URL, or embed via the API.
Privacy & tracking
Open-QR is engineered so there is nothing for us to leak — because there is no us. You run it. Raw identifiers are never persisted; sessions are HTTP-only and scoped to the auth path; third-party scripts are absent unless an operator explicitly enables the optional Plausible integration.
The full source is on GitHub under the MIT license. Audit it, fork it, deploy it.
Developer API
Issue per-user API keys from the dashboard, point your tooling at your own host, and integrate QR generation into anything — CI/CD, print pipelines, kiosk apps.
curl -X POST https://your-host/api/v1/qr \
-H "Authorization: Bearer $OPENQR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"targetUrl": "https://example.com",
"style": { "template": "minimal", "errorCorrection": "M" }
}'Self-host
Open-QR ships as a single Docker image with embedded SQLite. Bring your own SMTP for email OTP, or run it fully anonymous. There's nothing else to set up.