QR Code Generator
Make a scannable QR image for QR art
- IMAGE
This node makes a plain QR code as an image, right inside your graph. Type in the text or URL, get a black-and-white QR back. On its own that's mundane - but the reason it lives in an image-generation pack is QR art: that viral trick where a picture is also a working scannable code. This node produces the raw QR that a QR-Monster-style ControlNet then bends into a landscape, a portrait, a logo, whatever, while keeping it scannable. Generate the code here, condition on it there.
Set expectations up front, because this is where people get burned. The artistic scannable-QR effect leans on the QR-code / brightness ControlNet, and that condition only ever existed for SD 1.5 and SDXL - nobody has rebuilt it for Flux, Z-Image, or the other modern bases. It's the single most-missed ControlNet on newer models. So if you want the classic QR art look, do that pass on an SD 1.5 or SDXL model. This node makes the code on any workflow; the art half is base-model-limited.
How it works
It encodes your text into a QR matrix and renders it to an image at the size and styling you set. The knobs are standard QR parameters: error-correction level, module (box) size, quiet-zone border, and the QR version that controls how much data the code holds. Higher error correction is what lets a heavily stylized code still scan, which is exactly why it matters for QR art.
Inputs and outputs
Six required inputs:
text- the content to encode (a URL, usually). Multiline.size- output image size in pixels, default 512.qr_version- 1 to 40, controlling the code's data capacity and density. Higher versions pack more data into a denser grid. Default 1; leave it low unless you're encoding a lot.error_correction-L,M,Q, orH, defaultH(highest).His the one you want for QR art - it tolerates the most distortion from the ControlNet and still scans.box_size- pixels per QR module, default 10.border- the quiet-zone margin in modules, default 4. Don't drop this to 0 for art; scanners need the margin.
The output is a single IMAGE - the QR code. Feed it into a ControlNet Apply (with a QR/brightness ControlNet) as the control image, or use it as a latent starting point.
Installing it
Comes with the ArtVenture pack. ComfyUI Manager: search comfyui-art-venture, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sipherxyz/comfyui-art-venture
Restart ComfyUI. No model download for the generator itself. The QR-Monster / brightness ControlNet you pair it with is a separate download, and an SD 1.5 or SDXL one.
Common issues
The final art won't scan. The usual trade-off: push the ControlNet strength too low and the code gets too stylized to read, too high and it looks like a flat QR. Keep error_correction at H here, keep a real border, and tune the ControlNet weight until it both looks good and scans. Test with an actual phone, not just your eye.
No QR ControlNet for your base. Right - the brightness/QR condition is SD 1.5 and SDXL only, and never got rebuilt for Flux or the 2026 bases. If you're on a modern model, run the QR-art pass on SDXL and carry the result forward.
Encoded too much data. A long URL at a low qr_version makes a cramped, hard-to-scan grid. Shorten the URL (use a link shortener) or let the version climb so the modules stay legible.
Border set to 0 and now nothing reads it. QR scanners need the quiet zone. Keep border at 4 or so; zero margin breaks scanning even on a clean code.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| size | INT | 51264–4096 | — |
| qr_version | INT | 11–40 | — |
| error_correction | COMBO | H | 4 options: L, M, Q, H |
| box_size | INT | 101–100 | — |
| border | INT | 40–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |