QR Code Generator: Create Custom QR Codes Online for Free
Generate a custom QR code online for free — URLs, text, or Wi-Fi credentials, with adjustable size and error correction. No sign-up.
Try it now: QR Code Generator — Generate a QR code from any text or URL and download it as SVG or PNG. Encoded entirely in your browser — the data never reaches a server, unlike most QR sites.
What a QR Code Generator Actually Encodes
A QR code has no idea what its content means — it's a grid of black and white modules representing bytes, and the scanning app decides what to do with those bytes based on their format. A qr code generatortakes whatever text you give it, runs it through the QR encoding algorithm (choosing a numeric, alphanumeric, or byte mode depending on the characters involved), and lays the result out as a square symbol at one of forty defined sizes, called versions. The tool doesn't know or care whether that text is a sentence, a link, or a block of key-value pairs formatted like a Wi-Fi credential string — it only encodes and arranges. That distinction matters, because it means the interesting decisions in generating a QR code — what to put in it, and how much damage it should tolerate — happen before encoding, not during it.
Error Correction Level: What L, M, Q, and H Actually Mean
QR codes use Reed-Solomon error correction, which stores redundant data alongside the actual payload so the code can still be read correctly even if part of it is damaged, dirty, or covered. There are four standard levels, and each one states roughly how much of the code's total area can be unreadable before the scan fails:
- L (Low) — about 7%. The most data per symbol size, the least tolerance for damage. Fine for a code displayed cleanly on a screen with nothing overlapping it.
- M (Medium) — about 15%.A reasonable default when you don't know exactly how or where the code will be printed or displayed.
- Q (Quartile) — about 25%. Meaningful headroom for print wear, a smudge, or a corner folded into a receipt.
- H (High) — about 30%.The level that matters if you're placing a logo in the center of the code — that logo physically obscures modules, and H is what keeps the code scannable with a third of it covered.
The tradeoff runs in one direction only: for the exact same input text, a higher correction level produces a visually denser code at a given size (or a larger code at the same module size), because more of its capacity is spent on redundancy instead of your data. If you're encoding a long URL with tracking parameters and need every module for actual data, L or M keeps the code as small and simple as possible. If the code is going on a poster that will be printed small, displayed somewhere with glare, or has a logo sitting on top of it, spend the extra density on Q or H — a code that fails to scan is useless regardless of how efficiently it was packed.
Choosing What to Actually Put in the Code
The content type you encode changes what happens the instant a phone camera reads the code, because the scanning app pattern-matches the decoded text before showing it to the user:
- Plain text just gets displayed — no action is inferred. Use it for something a person needs to read, like a serial number or a short message, not something they need to act on.
- A URL (starting with
http://orhttps://) is recognized and offered as a link to open — this is the overwhelming majority of real-world QR use, and it's the format worth double-checking most carefully, since a typo'd URL still encodes fine and still scans, it just goes nowhere useful. - A vCard — a small block of text in the
BEGIN:VCARD/END:VCARDformat withFN,TEL, andEMAILfields — is recognized by most phones as a contact and offered with a “save contact” prompt instead of being opened as a link or shown as text. - Wi-Fi credentials, formatted as
WIFI:T:WPA;S:network-name;P:password;;, are recognized by both iOS and Android as a network-join request, and the phone offers to connect directly — no typing the password on a keyboard.
None of this formatting is enforced by the generator — it's a convention that scanning apps look for, which is exactly why it's worth getting the format right before you generate the code, rather than discovering after printing five hundred flyers that a stray semicolon in the Wi-Fi string made every phone treat it as plain text.
Why Client-Side Generation Matters for Sensitive Content
A Wi-Fi password and a personal vCard are both credentials in a loose sense — one gets a stranger onto your network, the other hands out a phone number and email address to anyone who scans it. Most QR generators found through a search are backed by a server: your text gets sent there, encoded, and a code image is sent back — which means the plaintext password or contact detail passed through, and possibly got logged, at a domain you have no reason to trust. GenKitLab's QR Code Generator encodes entirely in your browser — the QR encoding algorithm runs in JavaScript on your machine, and the text you type never reaches a server at all. For a URL that's a nice-to-have; for a Wi-Fi password or a vCard with a direct phone number, it's the difference between a tool you can actually use for that content and one you shouldn't.
The output downloads as either SVG or PNG. SVG is the better choice whenever the code will be resized or printed at a size you haven't settled on yet — it's vector data, so there's no scaling artifact at any size, unlike a fixed-resolution PNG blown up past its native dimensions. If the code contains a URL, it's worth confirming the link is encoded the way you expect — URL Encoder & Decoder will show you exactly which characters in a query string get percent-encoded, which matters if the QR code is pointing at a URL with special characters in a tracking parameter.
Frequently asked questions
›What does the error correction level in a QR code actually control?
It controls how much of the code's total area can be damaged, dirty, or covered and still scan correctly — roughly 7% at level L, 15% at M, 25% at Q, and 30% at H. Higher levels store more redundant data alongside your content, which makes the code denser or larger for the same input, but far more tolerant of a logo overlay, glare, or print wear.
›Which error correction level should I use if I'm adding a logo to the QR code?
Use H (High), which tolerates roughly 30% of the code being obscured. A logo sitting in the center physically covers modules, and only the highest correction level reliably keeps the code scannable once a real chunk of it is hidden.
›Does putting a URL vs. plain text in a QR code change how it behaves when scanned?
Yes. A scanning app pattern-matches the decoded text: a string starting with http:// or https:// is offered as a link to open, while plain text is just displayed with no action offered. The QR code itself doesn't know the difference — the behavior comes entirely from the scanning app recognizing the format.
›Can a QR code store Wi-Fi credentials so people don't have to type the password?
Yes — formatting the content as WIFI:T:WPA;S:network-name;P:password;; is a convention both iOS and Android recognize, and scanning it offers to join the network directly instead of opening a link or showing text. Getting the punctuation exact matters, since a malformed string just gets treated as plain text.
›Is it safe to generate a QR code containing a Wi-Fi password or personal contact details?
It's safe with a generator that encodes entirely client-side, meaning the text never leaves your browser to reach a server. Many QR sites process the content server-side, which sends the plaintext password or contact detail to a third party. GenKitLab's QR Code Generator runs the encoding in JavaScript locally — nothing you type is uploaded.
›Should I download a QR code as SVG or PNG?
SVG if you don't yet know the final print or display size, since it scales without artifacts at any dimension. PNG is fine once you've settled on a fixed size, particularly for pasting directly into a document or slide at that size.
Last updated