A QR code can hold large text payloads, but only up to the symbol's version and error-correction capacity, which is why the Bulk QR Code Generator caps each line at 2,000 characters and the entire batch at 20 unique entries to keep encoding predictable on a phone or laptop. Many people assume that bumping the PNG size from 128 to 512 pixels somehow increases how much data the symbol can carry, but pixel dimensions only change the rendered image's display and print scale — the underlying data capacity is fixed by the QR version chosen by the encoder. The same confusion appears around error correction: cranking the level from M to H does not make every symbol read better; it trades data space for restoration capability and can actually force a denser, harder-to-scan module grid. For lists of long URLs with UTM parameters, multi-line contact cards, or extended product descriptions, the practical question is whether each line stays inside the library's per-symbol capacity after error correction is applied. The Bulk QR Code Generator makes those constraints explicit, fails loudly when a payload exceeds capacity, and produces individual PNGs you can scan with the actual reader you plan to ship with.

How QR Codes Handle Large Text Payloads
A QR symbol stores data in modules arranged on a square grid, and the grid grows by four modules per side with each version step. Version 1 starts at 21x21 modules and Version 40 reaches 177x177. Larger grids store more characters, but every additional module also needs to remain intact for a scanner to recover the original bitstream. According to DENSO WAVE, the four error-correction levels restore approximately 7%, 15%, 25%, and 30% of codewords at levels L, M, Q, and H, but those restoration gains come directly out of the data budget. With a Level H setting, the same long URL that fits at Level M might force a jump to the next QR version, which produces a visibly denser symbol that older or low-resolution cameras may struggle to read.
The same tradeoff applies to character mode: a URL of 200 ASCII characters and a UTF-8 sentence of 200 characters may consume different amounts of the data budget even though the human-readable length is identical, because the encoder selects segments based on what compresses best. For long-text lists, the rule of thumb is to leave room — a line that sits at the maximum theoretical capacity at Level M will be unreadable if you later switch the batch to Level H. The encoder has no way to enlarge the symbol's version silently without producing a denser result, which is why previewing and physically scanning the output matters more for large-text payloads than for short ones.
The 20-Line, 2,000-Character Input Limits
The Bulk QR Code Generator enforces two interacting caps: a maximum of 20 unique lines per batch and a maximum of 2,000 JavaScript characters per line. Both limits exist to bound CPU, memory, layout work, and the number of automatic download prompts a browser might surface. The parser trims surrounding whitespace, removes empty lines, and deduplicates exact repeated entries while preserving first-seen order, which means a list of 30 lines with 10 duplicates collapses to 20 before encoding begins. Filenames start with a two-digit batch position and a short ASCII stem derived from the content; a line such as https://example.com becomes 01-example-com.png, and lines containing no ASCII letters or numbers fall back to the stem qr-code. Those filenames are convenience labels only and never alter the encoded payload.
If a single line exceeds 2,000 characters or a batch exceeds 20 unique values, the tool enforces those caps rather than producing a partial set that could be mistaken for complete output. That fail-loud behavior protects you from labeling inventory, printing event badges, or replacing an existing code with an unchecked image. Each line is also limited to 2,000 JavaScript characters to bound CPU, memory, layout work, and accidental multi-download volume on phones and ordinary laptops. For very large bodies of text — full paragraphs, multi-line addresses, or extended product descriptions — split the content across multiple batch lines so each entry stays within the 2,000-character cap and the 20-line batch limit.
Generate PNGs From a Large Text List
The shortest path from a long-text list to verified PNGs is a deliberate sequence: prepare the input, choose display settings, render, scan, and download only the symbols that read correctly on your target device. The tool runs an asynchronous job identifier so older settings cannot overwrite the current batch when you change an input or option.
- Open the Bulk QR Code Generator and paste one text or URL per line into the input area, keeping each line under 2,000 characters and the total under 20 unique entries after deduplication.
- Choose a PNG canvas size of 128, 256, or 512 pixels based on where the codes will be displayed or printed; pixel size controls rendered resolution, not data capacity.
- Select an error-correction level — L, M, Q, or H — knowing that higher levels trade data space for restoration capability and can force a denser symbol.
- Click Generate QR codes and wait for every preview to render; the page runs an asynchronous job identifier so older settings cannot overwrite the current batch.
- Open the camera app or reader you plan to ship with, scan each preview thumbnail, and confirm the decoded payload matches the source line character for character.
- Download each verified PNG individually using its labeled download link, then preserve a clear quiet zone around the image and avoid stretching, recoloring, cropping, or covering the finder patterns.
- If any line fails to decode, shorten the text or adjust the batch settings and regenerate the batch.
Picking Error Correction When Each Line Is Long
The four error-correction levels L, M, Q, and H correspond to roughly 7%, 15%, 25%, and 30% codeword restoration, per DENSO WAVE's published spec. For a long-text batch where every line is near the per-symbol capacity, the practical default is Level M, which balances data space against restoration capability on clean displays. Level L gives the most room for dense payloads but offers almost no recovery from a scratched or partially obscured surface; choose it only when codes will be printed at high contrast on smooth stock. Level Q and Level H make sense when codes will live outdoors, on packaging that flexes, or behind a glossy laminate — but be prepared for the encoder to step the symbol up to a larger version, producing visibly smaller modules that cheaper cameras may not resolve.
| Level | Approx. codeword restoration | Best suited to | Trade-off |
|---|---|---|---|
| L | ~7% | High-density payloads, clean prints | Little recovery from damage |
| M | ~15% | General-purpose clean display | Default for most cases |
| Q | ~25% | Outdoor, packaging, mild glare | Smaller data budget |
| H | ~30% | Industrial, harsh environments | Forces a denser, finer symbol |
Test the worst case, not the average case: a long URL with UTM parameters plus a sticker stuck to a textured surface is the realistic test, not a freshly printed sheet under a desk lamp. For pixel size decisions on dense payloads, the Bulk QR Code Generator 128px guide explains when smaller canvases still read clearly and when they do not.
Filenames, Quiet Zones, and PNG Handling
Each generated PNG carries a deterministic filename derived from its two-digit batch position and a short ASCII stem from the content. A line reading https://example.com becomes 01-example-com.png, while a payload without ASCII letters or numbers falls back to qr-code. Filenames are convenience labels; they do not affect what the symbol encodes. After download, keep a clear quiet zone around the image and never recolor, crop, stretch, or cover the three finder patterns in the corners. Doing any of those things can break a reader even when the underlying data is intact. The page exposes individual download links rather than a combined archive to keep the tool dependency-light; each click is explicit, which prevents 20 simultaneous browser download prompts and makes it obvious which files you actually chose to keep. If you need to send the batch to a colleague, zip them manually on your own machine after verification.
Why Target-Device Scanning Is the Only Real Verification
A generated PNG is not proof that every scanner will read the intended content. Long UTF-8 text, emojis, print size, contrast, camera focus, display glare, physical damage, and reader behavior all influence success. Some QR readers interpret URLs, contact text, or other payloads differently, and the underlying qrcode 1.5.4 library notes that full ECI support is not implemented, which can affect how extended characters are decoded. The most reliable workflow is to scan every final PNG with the device, OS, and application your audience will actually use, then compare the decoded payload character for character against the source line. Do not publish, print, label inventory, distribute event material, or replace an existing code based on an unchecked image. For payments, authentication secrets, safety instructions, or any irreversible action, treat the QR code as untrusted until that physical scan has succeeded on the intended reader. All encoding and PNG rendering stays inside the current browser tab; nothing is uploaded, shortened, tracked, or recorded, so you can repeat the verification cycle without leaving a trail.
For a deeper look, see Create a Descending List in Bulk URL Generator.
For a deeper look, see Bulk QR Code Generator on Android: A Browser Workflow.