π°οΈ QRCodes (Simple B&W)
Black, white, done
- IMAGE
- MASK
- INVERTED_MASK
The one that just works
QRCodes (Simple B&W) is the simplest node in zentrocdot's ComfyUI-Simple_QR_Codes pack, and it's honest about it. You give it text and a canvas size; it gives you a clean black-on-white QR code. No color pickers, no style dropdowns, no error-correction enum to trip over. If you just need a scannable QR as fast as possible, this is it.
That's not nothing, because the most common reason people generate a QR in ComfyUI isn't the QR itself - it's to feed it into a ControlNet and get an artistic QR: a clean, high-contrast base code becomes the conditioning image, and the model paints scenery over it while the brightness pattern keeps it scannable. That whole genre traces back to the "ControlNet for QR Code" thread, the highest-scoring ControlNet post in the community's history. Every artistic-QR workflow starts with a plain QR like this one.
How it works
The node calls Python's qrcode library with all defaults: qrcode.make(text), which auto-picks version and error correction for your payload, then resizes the result to your width Γ height. That's the whole pipeline. Version and error correction are chosen for you, which makes this the node where you never think about QR internals.
Three inputs and nothing else: text (multiline, the payload - a URL, a vCard, whatever), width, height. Outputs are IMAGE, plus MASK and INVERTED_MASK - the masks isolate the QR pattern from the background, which is what you'd wire into a composite or use to keep the QR region intact during a ControlNet pass.
Where people get burned
One real gotcha: this node skips the 0β1 normalization every other node in the pack does. The IMAGE comes out with pixel values in the 0β255 range, and the two masks inherit that - MASK gets the dark modules right but the background lands out of range too. In a preview it usually looks fine, because the dark modules are still dark. But if you feed the masks into a composite, an inpainting node, or a ControlNet and get garbage, this is why. The drop-in fix is QRCodes (Simple Color) with default colors - same black-on-white look, proper normalization.
Also worth knowing: the QR is generated small and then stretched to width/height. The author flags this themselves in the pack README - resizing an upscaled QR loses crispness. For poster-size output, one of the segno-based nodes in the same pack renders at true native resolution and dodges the blur entirely.
Installing it
The node ships in the ComfyUI-Simple_QR_Codes pack. Easiest: ComfyUI Manager β search "Simple QR Codes" β install β restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/zentrocdot/ComfyUI-Simple_QR_Codes
cd ComfyUI-Simple_QR_Codes
pip install -r requirements.txt
Then restart ComfyUI and it appears under QR Code Nodes β qrcode-based. No model files to download - this is pure CPU image math. (And yes, the "QR Code" name is a DENSO WAVE trademark; the author notes the generated images are free to use, private or commercial.)
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | β | |
| width | INT | 5121β8192 | β |
| height | INT | 5121β8192 | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| MASK | MASK | β |
| INVERTED_MASK | MASK | β |