ToolActToolAct

QR Code Generator

Create custom QR codes online for URLs, text, contact info, with customizable colors and sizes

Content
Settings
#000000
#ffffff
Preview

Enter content to generate QR code

What is a QR Code Generator?

A QR code generator turns text, URLs, contact details, or other short payloads into a square barcode that phones and scanners can read quickly. QR codes are useful on posters, labels, menus, product packaging, table cards, internal signs, event check-ins, and any place where typing a link would be inconvenient. A good QR code is not only generated, but also scannable: contrast, size, quiet zone, print quality, viewing distance, and the amount of encoded data all matter. Error correction helps a code survive small damage or visual decoration, but higher correction can also make dense content harder to scan. Before publishing, always scan the exported PNG or SVG with a phone under real lighting conditions, especially after changing colors or using a long URL.

How to Use

How to use

  1. Enter the content to encode in the input field, such as URLs, text, or contact information
  2. Adjust foreground color, background color, and QR code size as needed
  3. Select appropriate error correction level - higher levels provide better damage resistance
  4. Click 'Generate QR Code' button to create the QR code
  5. Download PNG or SVG format image after preview verification

Scanning Tips

  • Test the QR code on at least one phone before printing or publishing it, especially after changing colors or size.
  • Keep strong contrast between foreground and background, and leave enough blank margin around the code for scanners to detect it.

Use Cases

Render a QR code from text, URL, or Wi-Fi payloadEnter any text, URL, Wi-Fi string, payment payload, or short instruction and render it to a canvas using the qrcode library. Empty input is blocked so the preview only appears after a real payload is generated, and structured-append sequences can be split into multiple symbols when the message would otherwise exceed version 40 capacity. Micro-QR symbols (M1 to M4) are a useful alternative for tiny labels, since they use a single position marker instead of the three large squares and keep the encoded payload short.
Customize error correction and output sizePick foreground and background colors, output size from 200 to 600 pixels, and error correction level L, M, Q, or H. These controls balance visual styling, print size, and damage tolerance, with H recovering up to thirty percent of modules when a logo is placed over the centre.
Download PNG or SVG for digital and print useGenerated codes can be downloaded as PNG from the canvas or as SVG from the same QR data and settings. SVG keeps the module grid intact for vector pipelines, while PNG is faster to share on chat apps, social posts, and email clients that do not render vector attachments well.
Pick error correction for logos and outdoor signsPick level H when overlaying a logo in the centre or printing on a scratched surface, since it can lose up to 30% of the modules and still scan. Stick to L or M for short URLs where maximum module density matters more than damage tolerance.
Validate the printed code with a real phone scanAfter exporting the SVG or PNG, print at the final intended size and scan from the expected viewing distance under typical lighting. Codes that scan at 100% on screen can fail at business-card size if the quiet zone or contrast ratio drops below scanner thresholds. The ISO/IEC 18004 spec recommends a quiet zone at least four modules wide on every side, and most consumer scanners need closer to six to read reliably on glossy paper.

Technical Principle

QR Code is standardized as ISO/IEC 18004:2015 and defines 40 size versions: Version 1 is a 21 × 21 module matrix and each subsequent version adds 4 modules per side, so Version 40 is 177 × 177. A 'module' is one black-or-white square in the grid. Three fixed 7 × 7 finder patterns sit at the top-left, top-right, and bottom-left corners and let a scanner lock orientation regardless of rotation; from Version 2 onward, smaller 5 × 5 alignment patterns are added on a regular grid to correct perspective distortion, and a one-module-wide timing pattern runs between the finders to establish the module pitch.<br /><br />Payload bytes are wrapped with Reed-Solomon error correction over GF(2^8), which is what lets a partially obscured code still decode. The four levels are L = recover up to 7 percent of the codewords, M = 15 percent, Q = 25 percent, and H = 30 percent. Choosing H lets you overlay a centered logo of roughly 20 percent of the code area without losing readability, at the cost of fewer usable data codewords for the same version. Data itself is encoded under one of four modes — Numeric (10 bits per 3 digits), Alphanumeric (11 bits per 2 chars from a 45-symbol set), Byte (8 bits, typically UTF-8 for non-ASCII), and Kanji (13 bits per Shift_JIS character) — and the encoder picks the densest mode that covers every input character.<br /><br />After encoding, the bit stream is XORed with one of eight mask patterns to avoid large monochrome regions and the false detection of finder-like sequences; the encoder evaluates all eight against a penalty score (defined in section 7.8.3 of the standard) and writes the winning mask ID into the format-information stripes next to the finders. Format and version metadata are themselves protected by BCH(15,5) and BCH(18,6) codes. In the browser, the qrcode npm library generates the matrix and renders it onto an HTML <canvas> via CanvasRenderingContext2D.fillRect or emits SVG <rect> elements; on supported devices, the BarcodeDetector API (Chrome on Android, Safari since 16.4) decodes back from camera frames without external libraries.

  • Standard: ISO/IEC 18004:2015 — 40 versions, Version N is (4N+17) × (4N+17) modules, so V1=21×21, V10=57×57, V40=177×177
  • Finder and alignment patterns: three fixed 7×7 finders at TL/TR/BL for rotation lock; 5×5 alignment patterns from V2+ on a regular grid for perspective correction; 1-module timing pattern between finders sets module pitch
  • Error correction (Reed-Solomon over GF(2^8)): L=7%, M=15%, Q=25%, H=30% of codewords recoverable — H tolerates ~20% logo overlay at the centre
  • Data modes and bit cost: Numeric 10 bits / 3 digits, Alphanumeric 11 bits / 2 chars (45-symbol set), Byte 8 bits (UTF-8 in practice), Kanji 13 bits / char (Shift_JIS)
  • Capacity examples (V40-L): 7089 numeric, 4296 alphanumeric, 2953 byte, 1817 Kanji characters — capacity drops sharply at level H
  • Masking: 8 mask patterns scored against a 4-rule penalty (ISO/IEC 18004 §7.8.3); the winning mask ID is written into the format-info stripes protected by BCH(15,5); version info uses BCH(18,6)
  • Browser rendering and decoding: qrcode.js / qrcode (npm) emit either canvas fillRect or SVG <rect>; BarcodeDetector API (Chrome on Android, Safari 16.4+) decodes QR from camera frames without a JS library

Examples

Website link

Input:  https://toolact.com

A 19-character URL fits the smallest QR version (Version 2, 25x25
modules) at error-correction level L. Most phone cameras detect
and decode the code in well under a second when the foreground
is dark on a light background with a quiet zone of at least four
modules around the symbol.

Plain text payload

Input:  SKU-7842-AB

Use this for product specs, serial numbers, or short instructions
that are not URLs. The code decodes back to the literal text and
most scanners copy it to the clipboard or display it in a result
sheet.

WiFi access string

Input:  WIFI:T:WPA;S:GuestNetwork;P:welcome2024;;

The WIFI: prefix tells the OS to offer a 'Join network' action
instead of treating the payload as plain text. T is the
authentication type (WPA, WEP, or nopass), S is the SSID, and P
is the password. Most phones accept the unquoted form as long as
the password contains no special characters.

Contact card (vCard)

Input:
BEGIN:VCARD
VERSION:3.0
FN:Alex Chen
ORG:ToolAct
TEL:+1-555-0142
EMAIL:alex@toolact.com
END:VCARD

A scan prompts the phone to save a new contact named 'Alex Chen'
with the phone, email, and organization fields filled in. vCard
3.0 is the most widely supported format; vCard 4.0 adds more
fields but is not recognised by every scanner.

Payment payload

Input:  bitcoin:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa?amount=0.01

A Bitcoin wallet app pre-fills the recipient address
'1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' and the amount '0.01' BTC
when it scans the code. The 'bitcoin:' URI scheme (BIP-21) is
the de-facto format for BTC payment QR codes; Ethereum uses
'ethereum:' (EIP-681) and Monero uses 'monero:'.

FAQ

What can I encode in a QR code?

Any text you type into the input box - URLs, plain text, or formatted strings. The page encodes whatever you enter directly into the QR code. There are no special forms for structured data types; paste the exact text you want encoded.

Is the QR code generated locally?

Yes. The page renders the code as SVG or canvas in your browser using a JS library (typically qrcode-generator). Nothing is uploaded - your URL or text never crosses the network.

What error correction level should I pick?

L (~7% recovery), M (~15%), Q (~25%), H (~30%). H is slowest to scan but lets the code survive significant damage or a centered logo overlay. Stick with M for plain QR codes; pick H if you embed a logo or print onto a surface that may scuff.

How much data fits in one QR code?

Up to 4296 alphanumeric chars, 7089 digits, or 2953 bytes (depending on the version, 1-40, and error level). Long URLs work but big text payloads (hundreds of bytes+) make a dense code that's hard to scan from far away or at small print size. Use a URL shortener if your target is text-heavy.

Can I add a logo in the middle?

Yes - QR's error correction lets you overlay a small image without breaking decode. Keep the logo to less than ~25% of the code area and use error level Q or H. Always test-scan the result with multiple phone cameras before publishing.

What output formats?

PNG (rasterised), SVG (vector, infinitely scalable), and sometimes PDF or EPS for print. SVG is best for print and signage; PNG is fine for screen and chat.

Why does my QR not scan when printed small?

Print resolution is the most common cause. Each black/white module needs to be at least ~0.4 mm at the chosen scan distance. For a business card (scanned from 30 cm) that means a ~2 cm code. For a billboard (scanned from 5+ m) you need much bigger modules. Reduce data length and use lower error correction if you must shrink it.