Generate QR codes from text or URLs
A QR code is a 2D matrix of black and white "modules" (square cells) that encode data in a specific pattern defined by ISO/IEC 18004. The capacity depends on the chosen version (1 through 40, corresponding to grid sizes from 21x21 up to 177x177 modules) and the error correction level. A Version 1 code at error correction level L holds 25 alphanumeric characters or 17 bytes of binary data. A Version 40 code at level L holds up to 4,296 alphanumeric characters or 2,953 bytes. In practice, most generated QR codes for URLs are Version 3-7 (29x29 to 45x45 modules) because typical URLs fit comfortably there. The four error correction levels, L (7%), M (15%), Q (25%), and H (30%), control how much of the code can be obscured, damaged, or covered (for instance, by a logo embedded in the center) and still scan successfully. Reed-Solomon error correction codes add redundancy to the data. Higher correction levels consume more modules for redundancy, so at a fixed data capacity they require a larger grid. The sweet spot for most use is Level M for screen display and Level Q-H for printed materials that may be scratched, or when you want to overlay a logo (which requires H to survive).
Initializing in your browser…
Generate barcodes in CODE128, CODE39, EAN13, UPC formats
Scan QR codes from images or using your camera. Supports URLs, WiFi, contacts, emails, phone numbers, and more. 100% offline - no data uploaded.
Generate harmonious color schemes using color theory
You need a QR code on a printed flyer that points to your signup page and still scans after being photocopied.
Encoded content
https://example.com/signup?ref=flyer
Result
A scannable QR PNG/SVG, error-correction level Q (~25% recoverable), exportable at print resolution.
The URL is encoded into the QR matrix with Reed–Solomon error correction, so a higher level (Q/H) lets the code still resolve even when smudged, partially covered, or photocopied, at the cost of a denser pattern. Exporting as SVG keeps it razor-sharp at any print size, which a low-res screenshot cannot.
A QR code is a 2D matrix of black and white "modules" (square cells) that encode data in a specific pattern defined by ISO/IEC 18004. The capacity depends on the chosen version (1 through 40, corresponding to grid sizes from 21x21 up to 177x177 modules) and the error correction level. A Version 1 code at error correction level L holds 25 alphanumeric characters or 17 bytes of binary data. A Version 40 code at level L holds up to 4,296 alphanumeric characters or 2,953 bytes. In practice, most generated QR codes for URLs are Version 3-7 (29x29 to 45x45 modules) because typical URLs fit comfortably there. The four error correction levels, L (7%), M (15%), Q (25%), and H (30%), control how much of the code can be obscured, damaged, or covered (for instance, by a logo embedded in the center) and still scan successfully. Reed-Solomon error correction codes add redundancy to the data. Higher correction levels consume more modules for redundancy, so at a fixed data capacity they require a larger grid. The sweet spot for most use is Level M for screen display and Level Q-H for printed materials that may be scratched, or when you want to overlay a logo (which requires H to survive).
Add scannable links to flyers, business cards, and posters that direct people to your website or landing page.
Link to manuals, warranty registration, or product pages by printing a QR code on the box.
Generate unique QR codes for tickets or badges that can be scanned at entry.
Create a QR code that lets guests join your network by scanning instead of typing a password.
Encode vCard data so others can add your contact info by scanning.
The QR format supports several data encoding modes, and the encoder picks whichever is most compact for your input. Numeric mode (3 digits per 10 bits) is densest for pure numbers. Alphanumeric mode (2 chars per 11 bits, 45-character alphabet including uppercase letters, digits, space, and some symbols) is next. Byte mode (8 bits per byte) handles arbitrary bytes including lowercase letters and full URLs. Kanji mode uses 13 bits per character for Japanese. URLs almost always fall into byte mode because they contain lowercase letters; if your data is all uppercase and digits, the generator will automatically use alphanumeric mode, producing a smaller code for the same data.
Module size (the "pixel size" of each cell) and the quiet zone matter for scanner reliability. The QR spec requires a 4-module-wide quiet zone (blank margin) around the code; smaller quiet zones cause scanners to fail on the outer finder patterns. Module size in printed output should be at least 0.4 mm for reliable phone-camera scanning at 30 cm distance. Rule of thumb: the scannable distance is roughly 10x the code's width, so a 2 cm code scans reliably at about 20 cm. For posters meant to scan from across a room, make the code at least 10 cm wide.
Color customization is supported but has real limits. Scanners use contrast detection to distinguish modules, which means dark-on-light designs work and light-on-dark ("inverted") designs sometimes fail on older scanners. Using colored modules (red on white, blue on yellow) works only if the contrast ratio is high enough; aim for at least 3:1 luminance contrast. Logos embedded in the center work only when error correction is H (30%) because the logo obscures modules that must be reconstructed from redundancy; use a logo that covers no more than 15-20% of the code area, centered, with the surrounding modules intact. If you test your custom QR code against exactly one phone model and declare it working, you have tested the easy case; always test across at least iOS Camera, Android native camera, and a barcode-scanning app before relying on the code in production.
Up to about 3,000 alphanumeric characters or 4,296 numeric digits at the lowest error correction level. Higher correction levels reduce capacity.
Level M (15% recovery) is a good default. Use Level H (30%) if the code will be printed on surfaces that might get worn or partially covered.
Yes. Just ensure there is enough contrast between the foreground and background for scanners to read the code reliably.
Conversions run on your device in JavaScript. The values you enter are never sent over the network.