What this QR generator draws, and what a scan must prove
Try it: QR Code Generator & CustomizerOn this page
A QR symbol is a grid that stores the text you give it, plus extra modules so a scanner can recover damaged squares. The QR generator builds that grid in the browser with the qr-code-styling library. It does not upload the text, and it does not check that a camera across the room can read what you downloaded. That last step is still yours.
Input
Output
Input
Output
What the defaults are
The default foreground is #000000 and the default background is #ffffff. Error correction starts at H, the highest of L, M, Q, and H. Preview sizes are fixed presets: small 240, medium 320, large 480. A custom size uses the number you set.
Export is not the preview size. getExportSize returns max(1024, preview * 2). Medium 320 would double to 640, which is under 1024, so the export floor is 1024. Large 480 doubles to 960, which is still under 1024, so that export is 1024 as well. The PNG you download is the export size. The square you look at while editing can be smaller.
You can download PNG or SVG. SVG is the one to hand a printer that will scale the mark. PNG is a bitmap at the export size above.
Logo and error correction
A logo covers the middle. The library cannot use modules that the logo paints over, so the correction level has to be high enough to rebuild them.
effectiveErrorCorrection does this when a logo file is actually loaded:
- If the selected level is L or M (below Q), the level used for the drawing becomes H.
- If the selected level is already Q or H, it stays what you picked.
The hint in the settings panel says correction is boosted to H while a logo is on. The function is narrower than that sentence: Q is not raised to H. L and M are. The default is already H, so turning a logo on without touching the level leaves you on H.
The logo file must be PNG, JPG, or SVG, and LOGO_MAX_BYTES is 2 megabytes. A larger file is refused with a size error. The file is read in the browser. It is not posted to XSular.
What belongs in the payload
Put the final URL in the symbol if the symbol is what you will print. A short path on your own site is easier to reissue than a long query string baked into a poster. The generator does not shorten links. If you want a slug for a page, that is the slug generator. If the text has characters a query string will mangle, the URL encoder is a separate step you do before you paste.
A Wi-Fi payload, a phone URI, or a block of JSON is still just text. The page does not validate JSON. If the payload is JSON and you care that it parses, run it through the JSON formatter first. Base64 is the wrong tool unless the consumer asked for Base64. The Base64 post shows a reversible encoding, not a QR mode.
Mistakes
Low contrast. Yellow modules on a white background can be a legal file and an unreadable mark. The defaults are black on white for a reason. A gradient from the default #000000 toward #6366f1 is a style option. It is not a promise that every phone handles the gradient as cleanly as solid black.
A logo that is a large fraction of the square. The correction level can rebuild a modest center. It will not rebuild a logo that covers the finder patterns in the corners. Keep the logo small, and keep the three large corner markers clear.
Tiny print. A 240 pixel preview is for the screen you are editing on. The export floor of 1024 pixels is still easy to print too small if the layout scales it down. Leave a quiet margin of empty background around the modules. The page does not measure your paper.
Trusting the on-screen hint over the function when you had selected Q. As written, Q stays Q when a logo is present. If you need H, select H.
Limits
I did not scan a code for this post. Generation and a successful camera read are different tests. The placeholder at the top is there until someone does the second one.
The library chooses QR version from the length of the text and the correction level. A long text becomes a denser symbol. Denser symbols need to be printed larger. The page does not show a "this will fail under 2 centimeters" warning.
Transparent backgrounds look fine on a dark web page and disappear on white paper if the modules are also light. Turn transparency off for print unless you have checked the stock.
Nothing here tracks scans. If you need a count, the URL inside the symbol has to be one you control. The generator does not add analytics.

