Illustration of an open notebook with a pencil, a speech bubble and blocks of increasing height.

How Much Text Fits in a QR Code?

QR codes can hold thousands of characters in theory, which makes the practical limit easy to misjudge. A code with a thousand characters is technically valid and often a poor choice for a label, because the pattern becomes dense and the print has to grow with it.

The Text QR Generator encodes text in the browser and warns when the input is beyond what the code can carry. The ranges below explain why that warning depends on more than a single character count.

Quick answer

Capacity is set by the QR version, the error-correction level and the character mode. At the largest version with the lowest error correction, a code can hold up to 7,089 digits, 4,296 uppercase letters and digits, or 2,953 bytes of binary data. At the highest error correction those figures fall to 3,057, 1,852 and 1,273. For a printed label, aim for a few hundred characters at most.

The three variables

QR codes come in versions 1 to 40; each adds modules and capacity. Error correction adds redundant codewords so the code can survive damage, which leaves less room for the message. The character mode decides how efficiently the text is packed: digits are the most compact, uppercase letters and a small set of symbols are next, and general bytes are the least compact.

The figures above are theoretical maxima for version 40. A code that size is extremely dense and demands a large, high-quality print. Most useful codes sit at much smaller versions, where the limit is far lower.

Characters are not bytes

The byte mode counts bytes, not visible characters. Plain ASCII text uses one byte per character, but accented letters, Greek, Cyrillic, Arabic and Chinese characters usually take two to three bytes in UTF-8, and an emoji can take four. A short message in a non-Latin script can therefore need several times the space of the same number of English letters.

Line breaks, curly quotes and mixed symbols add bytes too. If the text must be exact, keep it plain and check the decoded result.

What fits in practice

A short URL or a serial number is comfortable at almost any size. A few hundred characters still work on a poster, where the code can be printed large. A thousand characters can work on a screen or a big sign, but it is a poor fit for a business card, a product label or anything read from a distance.

When the text is longer than the space allows, do not shrink the code. Shorten the text, split it into several codes, or put the full text on a web page and encode the link instead. The text code is best for information that has to work without a network, not for an essay.

Let the tool carry the limit

The generator knows the version and error-correction settings it is using, so it can tell you when the input will not fit. Shorten the text if it warns you, then download the code and scan the saved image. Print a proof at the final size and check that the smallest modules are still clean.

Open the Text QR Generator, paste the text and check the warning before printing. For the wider guide, read What Can You Put in a Text QR Code?. To understand how much damage a dense code can survive, see QR Code Error Correction: Why Damaged Codes Still Scan.

Common questions

What is the maximum amount of text a QR code can hold?

It depends on the QR version, error-correction level and character mode. At version 40 with level L, the theoretical maxima are about 7,089 digits, 4,296 uppercase letters and digits, or 2,953 bytes. At level H those figures fall to roughly 3,057, 1,852 and 1,273. Practical print sizes hold far less.

Why does accented or non-Latin text reduce capacity?

QR byte mode counts bytes, not visible characters. Accented letters often take two bytes in UTF-8, while Chinese, Japanese and Korean characters can take three and emoji can take four. The same number of visible characters therefore consumes more of the code.

Will the generator warn me when the text is too long?

The Text QR Generator checks whether the input fits the code it can produce and warns you when it does not. Shorten the text, split it across several codes, or put the full text on a web page and encode the link instead.