Skip to main content
ToolsFree.io🇪🇸es
By MD Tech Engineering SL··Updated ·4 min read

QR Codes: Content, Errors, and Scanning

Share:𝕏LinkedIn

A QR code stores a payload in a grid that a compatible scanner can decode. ToolsFree generates static codes: the payload is embedded directly in the image, with no ToolsFree redirect and no scan analytics. If the content changes, you must generate and distribute a new code.

Exactly what the generator supports

The QR generator offers four static payload types: plain text, URL, Wi-Fi credentials, and vCard contact data. Wi-Fi payloads can describe WPA, WEP, or an open network. The vCard form contains name, telephone, and email fields; email is part of the vCard rather than a separate payload type.

The QR generator on its WiFi tab, with the network name Cafe Bonanza, the password guest-2026, WPA/WPA2 encryption, a 256 pixel size slider, black on white colour fields, and the generated QR code below with Download PNG, Download SVG and Copy buttons.
A Wi-Fi QR is a different payload from a URL: it carries the network name, the encryption mode and the password, and a scanner joins the network instead of opening a page. Worth knowing before you print one — that password sits in the code as ordinary text. Anyone who photographs the sticker has it, so this is for a guest network you are happy to hand out, not the one your devices trust.

Encoder behavior and capacity

The implementation uses byte mode, QR versions 1 through 40, Reed-Solomon correction, and a fixed error-correction level M. It selects a version that can hold the encoded bytes. Capacity is finite and varies with the payload's byte length; non-ASCII characters may consume more than one byte. The interface does not expose another correction level, a logo overlay, or a dynamic redirect service.

“Capacity is finite” is easy to write and hard to act on, so we measured where it actually bites. Growing the payload one character at a time and reading the module grid back off each generated code gives the exact points where this encoder steps up a version:

VersionModulesHolds up to
121 × 2114 characters
225 × 2526 characters
329 × 2942 characters
433 × 3362 characters
537 × 3784 characters
641 × 41106 characters
745 × 45122 characters
849 × 49152 characters
Where this encoder steps up a version, found by growing the payload one character at a time and reading the module grid back off the generated code. Measured on 2026-08-29 with Chromium 151.0.7922.173, in byte mode at error correction level M — the only combination this generator emits. Each step matches the encoder's own declared codeword table minus the two bytes of header, which is what ISO/IEC 18004 specifies.

Every step matches the encoder's own declared codeword table minus two bytes of header, which is what the standard specifies — reassuring for a hand-written implementation rather than a library call.

The practical consequence is about print size, not storage. A bare link of about 34 characters fits version 3 at 29 modules across. Append campaign parameters and take it to roughly 78 characters and you are in version 5 at 37 modules. Printed at the same physical width, each module is now noticeably smaller, and it is module size — not character count — that decides whether a phone locks on from across a room. We compared versions at a single printed width, so what that shows is the lever a shorter URL gives you at a given size — we did not measure it against simply printing the code larger.

Colors, size, and downloads

You can set foreground and background colors and choose an output size from 128 to 512 pixels. The result can be downloaded as PNG or SVG, or copied from the page. Dark modules on a light background normally give scanners the clearest contrast. Avoid decorative changes after download that crop the quiet zone or cover data modules.

A reliable verification workflow

  1. Choose one of the four supported payloads and check every field.
  2. Generate the code with high foreground/background contrast.
  3. Scan the result with a second device before printing or publishing it.
  4. Verify the decoded text, destination host, Wi-Fi network, or contact fields.
  5. Test the final printed size and surface under the lighting in which it will be used.

Privacy and destination safety

Generation happens in the browser without sending the payload to ToolsFree. The device, browser, extensions, and downloaded file remain part of the security boundary, so avoid generating secrets on an untrusted device. A QR image can also conceal a misleading destination from a person looking at it: preview the decoded URL and confirm its domain before opening it. For Wi-Fi sharing, remember that anyone who can scan the code can recover the credentials stored inside it.

How this guide was reviewed

We inspected ToolsFree's byte-mode encoder, version selection, Reed-Solomon correction, and supported text, URL, Wi-Fi, and vCard payloads, then checked sample codes in browsers.

Last technical review: .

Sources reviewed

Related Articles

Learn more with related in-depth guides and tutorials.