πΈ QRCodes (Segno Simple Version)
The QR node that doesn't blur when it gets big
- IMAGE
- MASK
- INVERTED_MASK
Why segno is worth caring about
The qrcode-based nodes in this pack have a documented weakness: they generate the code small and then stretch it to your canvas, which softens the modules. QRCodes (Segno Simple Version) takes a different path. It's built on segno, a pure-Python QR library that renders at true native resolution - you tell it how many pixels each module gets via scale, and the output is crisp at any size. No generate-then-resize blur. That's not a niche complaint either: segno is the exact library that got recommended in the "ControlNet for QR Code" thread - the community's single most-upvoted ControlNet post - as the right way to produce the clean base codes that feed artistic-QR workflows. This node is essentially that suggestion, shipped as a ComfyUI node.
What you get
A friendly subset of segno: dark and light colors (which default to darkred and salmon, so it looks deliberately "designed" the moment you drop it in), text, width/height for the final canvas, scale (pixels per module - the thing that keeps big codes sharp), error_correct (H/Q/M/L, and here it defaults to H, the strongest - the opposite of the qrcode family's L), version, and border (the quiet zone, in modules). Plus mask_color (red/green/blue) for the mask outputs.
Two format notes that differ from the qrcode nodes: colors here are CSS color names ("darkred", "salmon", "navy" - the pack even ships a color-name reference table), not (r, g, b) tuple strings. And the segno nodes default to error correction H, which is exactly the right default for codes you're going to decorate or push through ControlNet.
Outputs and wiring
Same triple as the rest of the family: IMAGE, MASK (the QR pattern), INVERTED_MASK (the background). If your goal is the classic pipeline - clean QR β ControlNet brightness condition β stylized but scannable art - this is the node I'd reach for as the clean base, precisely because it doesn't soften at 1024px.
Where it bites
- DataOverflowError on default settings.
versiondefaults to 1, the smallest QR (21Γ21). Segno is strict: if the text doesn't fit version 1, it raises instead of silently upgrading. Any URL longer than a handful of characters crashes on the defaults. Bumpversionup (2β5 for typical URLs), or keep the payload tiny. dark/lightset to "None" breaks nothing here - this node ships with real color defaults - but it's worth knowing the segno family reads"None"as "let segno pick," which matters on its siblings.
Installing it
Part of ComfyUI-Simple_QR_Codes. ComfyUI Manager β search "Simple QR Codes" β install β restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/zentrocdot/ComfyUI-Simple_QR_Codes
cd ComfyUI-Simple_QR_Codes
pip install -r requirements.txt
Dependencies are segno, segno-pil, qrcode, pillow, and opencv-python - all small, all CPU-side, no model downloads. Find it under QR Code Nodes β segno-based.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| dark | STRING | darkred | β |
| light | STRING | salmon | β |
| text | STRING | β | |
| width | INT | 5121β8192 | β |
| height | INT | 5121β8192 | β |
| scale | INT | 40β1024 | β |
| error_correct | COMBO | 4 options: H, Q, M, L | |
| version | COMBO | 40 options: 1, 2, 3, 4, 5, 6, +34 | |
| border | INT | 40β8192 | β |
| mask_color | COMBO | 3 options: red, green, blue |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| MASK | MASK | β |
| INVERTED_MASK | MASK | β |