Guides

    The white QR border is the spec, not a design choice

    Byte-mode QR on Versely draws a four-module quiet zone because cameras use it to find the edge; cropping it is the usual reason a correctly encoded code fails.

    Versely Team6 min read

    Byte-mode QR on Versely draws a four-module quiet zone because cameras use it to find the edge; cropping it is the usual reason a correctly encoded code fails.

    The QR Code Generator encodes your text or URL as a Model 2 symbol in byte mode. The canvas is filled white first. Dark modules are painted inset by four modules on every side. That pad is ISO/IEC 18004's quiet zone. It is not a margin you can shave for a tighter poster. The decoder looks for a run of empty modules, then the finder pattern. If you crop the PNG, invert the field, or composite the grid onto busy print so the white disappears, many cameras never lock the edge. The payload can still be perfect. The scan still fails.

    Four modules is the finder, not a margin

    drawQrCanvas takes a quiet argument and defaults it to 4. The pixel size of the canvas is (modules + quiet × 2) × modulePx. At the default 8 px module, that is 32 px of white on each side. The slider only changes module size (3–16 px). It does not offer a quiet-zone toggle, because there is nothing legal to toggle.

    The encoder is byte mode, versions 1–40, error-correction L / M / Q / H. Payload is UTF-8. Dark is #000000 on #ffffff. There is no invert control in the tool, and the copy on the page tells you to leave the white border. Invert and crop are listed together as the two ways a correct grid stops scanning. Invert removes the light/dark contrast the finder expects. Crop removes the empty run the camera uses to say "the symbol starts here."

    A designer who wants the code flush to a coloured band is asking for a different object than a QR. You can sit the whole PNG, border included, on a contrasting plate. You cannot delete the four modules and keep a scannable Model 2.

    Cropping is the usual miss, not a bad payload

    When a printed code "does not scan," people re-encode. They bump H. They shorten the URL. They blame UTF-8. Those are real knobs — older industrial scanners that assume JIS or Latin-1 can misread non-ASCII, which is why a ticketing URL should stay ASCII — but they are not the usual miss on this tool.

    The usual miss is a crop. Export, drop into Figma, trim the "ugly white," export again. Or prompt an image model for "a QR in the corner of the pack" and get finder-shaped noise with no quiet zone at all. Error correction recovers damaged data modules inside the symbol. It does not invent an edge the camera never found. H at ~30% recovery will not save a symbol whose quiet zone you deleted.

    Proof the PNG with the camera you will actually use, at the size you will actually print, on the background it will actually sit on. If the white pad is gone in that proof, you do not have a QR. You have a texture.

    Composite the PNG. Do not regenerate the grid.

    If the job is a poster, a packing insert, or a 5-second wall hold, the generate is the plate. The code is this file. Encode the URL. Download. Composite the full PNG. Leave a hole in the art, or overlay after lock. Image-to-video a locked still if the poster must move. A generated QR in motion will drift. A composited PNG will not.

    Do not:

    • Ask Ideogram V4 to typeset a scannable grid. Ideogram's job is text on posters. A QR is a specified matrix, not a logo.
    • Burn a URL as text overlay and call it a scan path. Overlay is words. The code is modules.
    • Re-generate a clip because the URL changed. Re-run the encoder. That is still a local file job. Regenerating video because the payload moved is how a four-module pad becomes a bill.

    /cost is the credit-formula hub for real generates. This encoder is not on that hub. Credits are for models. The quiet zone is for cameras.

    The white is load-bearing after you leave the tab

    Print at a size the phone can resolve. A 21-module version-1 symbol plus eight quiet modules is 29 modules across. At 8 px that is 232 px on the canvas; on paper it still needs to stay large enough that one module is not a speck. Curved bottles and dark kraft that swallows the pad are the same failure as a crop: the camera never finds the edge.

    Stay ASCII for ids and URLs. Raise error correction if the print will get scuffed — that is what L / M / Q / H are for. Do not raise H to excuse deleting the border. Those are different axes.

    The tool draws locally. Nothing is uploaded. That is why the file can be free. It is not why the border exists. The border exists because Model 2 says four modules, and Versely draws four.

    FAQ

    Can I crop the white so the code sits tighter on the pack?

    No. That white is the quiet zone: four modules on each side, required so cameras can find the symbol. Cropping it is the usual reason a correctly encoded code fails. Composite the full PNG.

    Will bumping error correction to H let me drop the border?

    No. L / M / Q / H recover damaged modules inside the grid. They do not restore a missing edge. Leave the four-module pad. Use H when the print will be scratched, not when you dislike the margin.

    Why is the border four modules, not a CSS padding I can set to zero?

    The canvas size is (modules + 4 × 2) × modulePx. The quiet argument is the spec, hardcoded. Module size is the slider. Quiet zone is not.

    Can I prompt a video model to put this QR on a wall?

    Composite the downloaded PNG onto a clean plate. Do not prompt the model to redraw the modules. A cinematic wall is a generate. The grid is this encoder.