Free and open source · Apache-2.0
QR codes that look good and still scan.
Design a QR code with your colors, shapes and logo. qrkude checks that phones can still read it, and gives you the same result in JavaScript, Python, Rust, Flutter, Qt, Arduino, LVGL and C.
No sign-up. Your codes are created in your browser and never expire.
Designs
Start from a design you like
What you can do
Everything a QR code designer needs, and checks it still works
Eleven module shapes
Squares, dots, stars, bars, and connected shapes that flow into each other.
Custom eyes
Eight frame and eight center shapes for the corner squares, each with its own color.
Color and gradients
Solid colors with transparency, linear and radial gradients, transparent backgrounds.
Logos that still scan
Clear space, module removal, and an exact measure of how much error correction the logo uses.
Frames and captions
Rounded backgrounds, borders and a "SCAN ME" caption above or below the code.
Every kind of content
Links, Wi-Fi access, contacts, calendar events, e-mail, SMS, phone numbers and map locations.
Built to scan
It tells you before your customers do
Every design is checked for what makes scanners fail: weak contrast, a missing margin, tiny modules, eye shapes that confuse readers, and logos that hide too much. For a logo, qrkude measures exactly how much of the code's error correction it uses.
What each warning means →Ready to scan
No warnings
Low contrast
- low-contrast
Logo too large
- logo-unreadable
logo damage 173%
One design, every platform
Design it once, render it anywhere
A design is a small JSON document. Make it here, save it with your data, and render it on a server, in a mobile app or on a microcontroller display. The SVG is identical, byte for byte, in every library.
import { svg } from 'qrkude';
const style = {
modules: { shape: 'liquid', color: '#1d3557' },
eyes: { frame: 'rounded', ball: 'circle', ballColor: '#3451d1' },
};
document.querySelector('#qr').innerHTML = svg('https://qrkude.com', { style });import qrkude
style = {
"modules": {"shape": "liquid", "color": "#1d3557"},
"eyes": {"frame": "rounded", "ball": "circle", "ballColor": "#3451d1"},
}
with open("qr.svg", "w") as f:
f.write(qrkude.svg("https://qrkude.com", style))use qrkude::StyleDocument; // feature "json"
let doc = StyleDocument::from_json(r#"{"style": {
"modules": {"shape": "liquid", "color": "#1d3557"},
"eyes": {"frame": "rounded", "ball": "circle", "ballColor": "#3451d1"}
}}"#)?;
let svg = doc.render_svg(b"https://qrkude.com")?;QRKudeView(
data: 'https://qrkude.com',
size: 240,
style: const {
'modules': {'shape': 'liquid', 'color': '#1d3557'},
'eyes': {'frame': 'rounded', 'ball': 'circle', 'ballColor': '#3451d1'},
},
)auto style = QRKude::Style::fromJson(R"({
"modules": {"shape": "liquid", "color": "#1d3557"},
"eyes": {"frame": "rounded", "ball": "circle", "ballColor": "#3451d1"}
})");
QRKude::Renderer qr(QStringLiteral("https://qrkude.com"), style);
qr.toImage(1024).save("qr.png");QRKude qr;
void setup() {
qr.setStyleJson(R"({
"modules": {"shape": "liquid", "color": "#1d3557"},
"eyes": {"frame": "rounded", "ball": "circle", "ballColor": "#3451d1"}
})");
qr.encode("https://qrkude.com");
qr.draw(tft, 20, 40, 200); // any GFX-style display
}const char *json =
"{\"modules\":{\"shape\":\"liquid\",\"color\":\"#1d3557\"},"
"\"eyes\":{\"frame\":\"rounded\",\"ball\":\"circle\",\"ballColor\":\"#3451d1\"}}";
const char *text = "https://qrkude.com";
static char arena[256];
static qrk_code code;
qrk_style style;
qrk_style_default(&style);
qrk_style_from_json(json, strlen(json), &style, NULL, NULL, arena, sizeof arena);
qrk_encode_for_style(&code, text, strlen(text), NULL, &style, NULL);
qrk_svg_write(&code, &style, NULL, write_cb, file);Install from source for now: the packages are not on the registries yet. Read the docs.
Libraries
Use it in your own software
JavaScript
Browsers and Node, canvas, web component
Python
SVG and PNG, command-line tool
Rust
no_std, raster, PNG
Flutter
QRKudeView widget, PNG export
Dart
Pure Dart, VM and web
Qt
Qt 5 and 6, widgets and QML
Arduino
ESP32, RP2040, AVR, any GFX display
ESP-IDF
Component with Kconfig
LVGL
Widget for LVGL 8 and 9
C
Reference library, no malloc
Make your first code in a minute
Paste a link, pick a style, download SVG or PNG.