HakoTools

QR Code Generator (SVG & PNG, Error Correction Level)

Paste a link or any text and get a QR code you can scan straight away. Choose how much damage it can survive, catch a low-contrast color pair before it goes to print, and export it as a crisp SVG for large formats.

Published: / Published by the HakoTools team

How it works

What does this QR code generator do differently?

It exposes the two settings that actually decide whether a printed QR code scans reliably: the error correction level and the color contrast between the modules and the background. Most generators hide the first and don't check the second. This one lets you set the level explicitly and warns you before you download a code that a scanner is likely to reject.

How to use it

  1. Paste the URL or text you want to encode
  2. Pick an error correction level, output size, and colors (the defaults work for most uses)
  3. Press Generate QR code to see the preview
  4. Download it as PNG (screens, slides) or SVG (print, large formats)
  5. Scan the result with a phone camera before you rely on it

Which error correction level should I pick?

M is the right default for most cases. It recovers roughly 15% of the code if part of it is damaged or obscured. Go up to H only when the code will be printed small, laminated, or exposed to wear, because a higher level packs more recovery data into the same text, which increases the module count and therefore the printed size for a given scan distance.

The four levels trade capacity for damage resistance. Here is the maximum payload for plain text or a URL at the largest QR version (40), by level:

0 B1,250 B2,500 B3,750 B5,000 BL (~7% recovery): Max payload, 8-bit byte mode, version 40 2,953 BL (~7% recovery)M (~15% recovery): Max payload, 8-bit byte mode, version 40 2,331 BM (~15% recovery)Q (~25% recovery): Max payload, 8-bit byte mode, version 40 1,663 BQ (~25% recovery)H (~30% recovery): Max payload, 8-bit byte mode, version 40 1,273 BH (~30% recovery)
Max payload, 8-bit byte mode, version 40

In practice you will never need a version-40 code for a URL; even a long link with tracking parameters is a few hundred bytes. The chart matters mainly for choosing between L/M and Q/H when you know the code will take some physical damage.

Why does contrast matter for QR codes?

A scanner finds a QR code by looking for the three large corner squares and reading the pattern between them as dark or light modules. If the foreground and background are too close in luminance, or if the colors are inverted (light modules on a dark background), many scanners cannot lock onto the pattern at all. This tool checks the pair you pick before you export:

Color pairResult
Black on whitePasses the check
White on black (inverted)Flagged as low contrast
Light gray on whiteFlagged as low contrast
Navy on pale bluePasses the check

Keep the foreground darker than the background, and avoid pairs that sit close together on the color wheel (a pale color on a similarly pale one), especially if the code will be printed rather than viewed on a backlit screen.

Can I download a QR code as SVG?

Yes, alongside PNG. SVG is vector data, so a QR code exported as SVG stays perfectly sharp whether you place it on a business card or blow it up for a poster. PNG is simpler to drop into a slide deck or a chat message, but it is locked to the pixel size you chose (256, 512, or 1024 px) and will blur if you scale it up further.

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

For text and URLs, this tool uses 8-bit byte mode, and the limit depends on the error correction level: from 1,273 B at level H up to 2,953 B at level L, as shown in the chart above. The QR code standard (ISO/IEC 18004) also defines numeric-only and alphanumeric-only modes with higher limits, but those don't apply to arbitrary text or a URL, which this tool is built for.

Is the text I enter sent anywhere?

No. Encoding happens entirely in your browser's JavaScript, so nothing you type is transmitted to a server. That makes it fine to encode things you wouldn't want passing through a third-party service, such as an internal system's URL or a Wi-Fi password (the common format for that is WIFI:T:WPA;S:network-name;P:password;;).

What else can I make with the other free tools?

If you also need a 1D barcode for something other than a URL, the EAN-13 barcode generator covers that. To resize a downloaded PNG before you print or share it, use the image resizer.

Notes

  • Keep the foreground darker than the background; the tool warns you otherwise
  • A 4-module quiet zone (blank margin) is added automatically around the code and should not be cropped
  • Always scan a printed copy before distributing it, especially at small sizes
  • Nothing you enter is uploaded; the code is generated and downloaded locally

Frequently asked questions

Which error correction level should I pick?
M (about 15% recovery) is the safe default for screens and clean printing. Use H (about 30%) if the code will be printed small, laminated, or exposed to dirt and scratches, such as on equipment labels or outdoor signage. Picking L or M keeps the code visually simpler and easier for older scanners to read at a distance.
Why does my QR code look unreadable after I change the colors?
Most scanners expect dark modules on a light background and need enough contrast between the two to find the code's edges. This tool checks the relative luminance of your foreground and background and warns you when the pair is too close, or when the colors are inverted, before you export the file.
Should I download PNG or SVG?
Use PNG for screens, slides, and anywhere a fixed pixel size is fine. Use SVG for print, because it is vector data and stays sharp at any size, from a business card to a poster, without the blurring a raster image gets when scaled up.
Is the text or URL I enter sent to a server?
No. Encoding happens entirely in your browser with JavaScript, and nothing you type is transmitted anywhere. That also makes it safe to encode information you would not want to send to a third-party service, such as an internal URL or a Wi-Fi password.
Share this tool: