Enter a website URL or plain text, preview the QR code in the browser, then download it as PNG or SVG. Input is processed locally in your browser, and no account is required.
Enter a URL or text to generate a QR code.
What this tool does
Enter a website URL or plain text, preview the QR code in the browser, then download it as PNG or SVG. Input is processed locally in your browser, and no account is required.
Privacy behavior
Selected inputs are processed locally in your browser for this workflow. The public site may load ads and analytics; use the privacy build for privacy-sensitive workflows.
Supported workflow
Use the controls on this page, review the output in your browser, then copy or download the result.
What can you use QR codes for?
Static QR codes are useful for menus, flyers, product packaging, event signs, and quick website sharing. They encode the destination directly, so there is no account or redirect service required.
For print, download a larger PNG or SVG and test the code before publishing. A simple high-contrast QR code is usually easier to scan than a heavily styled one.
How this QR encoder works
A QR code is a grid of black and white square modules encoding data with Reed-Solomon error correction, arranged according to a version number that sets the grid size, starting at 21 by 21 modules for version 1. This generator implements the encoding pipeline itself in JavaScript rather than wrapping an external library: it builds data codewords in byte mode, the encoding used for arbitrary UTF-8 text and URLs, splits them into the error correction blocks the chosen version calls for, computes Reed-Solomon error correction codewords for each block over the GF(256) field the QR standard specifies, interleaves the blocks, places the finder, timing, and alignment patterns plus, from version 7, the version information, then writes the codewords into the grid in the zigzag order the standard defines.
Two choices are fixed rather than configurable. Error correction always uses level L, the lowest of the four levels the standard defines, meaning roughly 7 percent of the code's data can be reconstructed if part of a printed or displayed code is damaged or obscured. The data mask is always mask pattern 0, one of eight patterns the standard allows, applied without scoring all eight for the one that best avoids visual patterns that can confuse a scanner; mask 0 is a valid, standard pattern and produces a scannable code, just not necessarily the specific mask a scoring implementation would choose for a given payload.
Version
Grid size
Data codewords at level L
Maximum bytes in this tool
1
21 by 21
19
17
2
25 by 25
34
32
3
29 by 29
55
53
4
33 by 33
80
78
5
37 by 37
108
106
6
41 by 41
136
134
7
45 by 45
156
154
10
57 by 57
274
271
20
97 by 97
861
858
30
137 by 137
1,735
1,732
40
177 by 177
2,956
2,953, the largest the standard allows at level L
The generator automatically picks the smallest of the 40 versions that fits the entered text; the table lists a selection. From version 10 the character count field grows from 8 to 16 bits, which is why the maximum there sits three bytes below the data codeword count instead of two. Content longer than 2,953 bytes of UTF-8 text, fewer characters for non-Latin scripts that use more bytes per character, is rejected with a message asking for shorter input.
Worked examples
Entering https://convertunlimited.com/tools/ in Website URL mode is 35 bytes of text. Since that is past the 32-byte practical limit of version 2, the encoder automatically steps up to version 3, a 29 by 29 module grid with 55 data codewords at error correction level L, comfortably fitting the 35-byte payload plus its mode and length header.
A short value such as a 4-byte emoji greeting only needs version 1, the smallest 21 by 21 grid, since that is well under its 17-byte limit.
A URL carrying tracking parameters, such as https://example.com/spring-sale?utm_source=qr&utm_medium=offline&utm_campaign=spring_sale&utm_content=flyer_a6, is 110 bytes of text. That is past the 106-byte limit of version 5, so the encoder steps up to version 6, a 41 by 41 grid whose 136 data codewords are split into two blocks of 68, each protected by its own 18 error correction codewords.
Limits and gotchas
Long content produces a dense code. The encoder supports all 40 QR versions, up to 2,953 bytes of UTF-8 text at level L, and each version adds 4 modules per side. A 1,000-byte payload needs version 22, a 105 by 105 grid, which calls for a larger print size and a steadier camera than a short URL, so shorten long content where possible and test the code at its final size.
Byte mode only. Every input is encoded in byte mode, the general-purpose QR encoding for arbitrary UTF-8 text. Numeric or alphanumeric mode, which pack digits or a restricted character set more efficiently and could fit more content in the same version, are not used, so an all-digit or all-uppercase value takes more space than a QR encoder optimized for those modes would need.
Error correction is always level L. This is the lowest of the four levels the QR standard defines. Printed applications that expect a logo overlay in the middle of the code, or that need more resilience to smudging and glare, typically call for a higher level such as M, Q, or H, none of which this generator offers.
The mask pattern is fixed, not optimized. Mask pattern 0 is always used instead of evaluating all eight standard patterns for the one that best avoids scanner-confusing visual patterns. This produces a valid, scannable code, just not necessarily the specific mask a scoring-based encoder would have picked for a given payload.
Content type only changes validation, not the encoded bytes. Selecting Website URL requires the text to start with http:// or https:// before generating; selecting Plain text removes that requirement. Either way, the same raw text is encoded byte-for-byte, so a non-URL string such as a Wi-Fi configuration line or a vCard typed directly into Plain text mode encodes exactly as it would in any other QR generator.
A larger margin does not add more error correction. The margin setting only controls the quiet zone, the blank border around the code; the QR standard recommends at least 4 modules of quiet zone for reliable scanning, and the smallest margin option offered here is 2.
QR Code is a registered trademark of DENSO WAVE INCORPORATED. The QR Code symbology is standardised as ISO/IEC 18004; DENSO WAVE holds patents on it but has stated it does not exercise them, so generating and using QR codes here carries no licence fee. ConvertUnlimited is not affiliated with or endorsed by DENSO WAVE.
Frequently Asked Questions
Is this QR Generator free?
Yes. You can create and download QR codes without signup or usage limits.
Are QR codes generated locally?
Yes. The QR image is generated in your browser; text or URL input is processed locally in your browser.
Can I use QR codes commercially?
Yes. Static QR codes generated here can be used for business cards, flyers, packaging, and websites.
What is the best QR code size?
For digital use, 512 px is usually enough. For print, use a larger PNG or SVG and test it at the final size.
Do QR codes expire?
Static QR codes do not expire. They keep working as long as the encoded URL or text remains useful.
Can I generate QR codes for URLs and text?
Yes. Choose Website URL or Plain text and the preview updates automatically.
What is the maximum amount of text this QR generator can encode?
Up to 2,953 bytes of UTF-8 text, the byte-mode maximum for QR version 40 at error correction level L. Non-Latin scripts that use more bytes per character fit fewer characters within that same limit, and long content produces a dense code that should be tested at its final size.
Does this generator support Wi-Fi or vCard QR codes?
Not as a dedicated mode, but typing the raw Wi-Fi configuration or vCard text directly into Plain text mode encodes it like any other text. The resulting code triggers a phone Wi-Fi-join or contact-import behavior only if that text follows the exact convention the receiving app expects.
Privacy Policy
ConvertUnlimited does not provide a server-side upload endpoint for this QR generation flow. Text or URL input is processed locally in your browser.
Terms of Use
ConvertUnlimited is provided as is. You are responsible for testing QR codes before printing or publishing them.
Trust and privacy
Files are processed locally where supported. Review the Trust Center for the processing model and the Privacy Policy for public-site privacy boundaries.