Skip to main content

QR Code Generator

Generate QR codes for URLs, text, email, phone and WiFi.

Reviewed by · Last reviewed

How to Use the QR Code Generator

  1. Type or paste the payload into the text area at the top. The default is https://zeroutil.com, but you can replace it with any URL, plain sentence, email scheme (mailto:), phone scheme (tel:), SMS scheme (sms:), geo location, or a structured Wi-Fi or vCard string.
  2. Pick a pixel size in the Size dropdown. 128 px suits inline email thumbnails, 256 px is a web default, 512 px is safe for flyers, and 1024 px prints at poster scale without pixelation.
  3. Adjust the foreground and background colors with the two color swatches. The preview updates instantly and recomputes the rendered canvas.
  4. Download PNG or SVG. PNG is a rasterized snapshot of the canvas at the chosen size; SVG is resolution-independent and ideal for print, Illustrator, or Figma where you want crisp scaling.
  5. Test scan with a phone before sending or printing, ideally from roughly the distance a real user will use (desk scan vs. across a room billboard).

What This Tool Does and How It Encodes

The generator uses the qrcode JavaScript library, which implements the ISO/IEC 18004 spec. As you type, it renders the matrix to an HTML <canvas> 2D context through QRCode.toCanvas, with a 2-module quiet-zone margin and your selected colors. The SVG download path calls QRCode.toString with type: "svg", wraps the result in a Blob, and triggers a synthetic download link; PNG grabs canvas.toDataURL("image/png").

Internally the library picks the smallest QR version (1 through 40) that fits your data, then masks the matrix for readability. Payload encoding, Reed-Solomon error-correction math, and masking all happen on your device\'s JavaScript engine. No payload is transmitted to our servers; generation works even after you put the tab in airplane mode.

Real Scenarios Where a QR Code Earns Its Keep

  • Putting a Wi-Fi QR code at a cafe counter so guests join without typing a WPA2 password.
  • Printing a vCard QR on a business card so contact details land in the phone book in one tap.
  • Linking a product package to a how-to video without committing shelf space to a URL.
  • Replacing the URL on a conference slide so back-row attendees can open the link from their seats.
  • Sending someone a complex deep link (calendar RSVP, Zoom meeting with passcode) as a scannable image.
  • Generating a static payment link for Venmo, PayPal, or a UPI handle in a market stall.

Encoding and Print Pitfalls

  • Too much data bumps you to a larger QR version, which means more and finer modules that are harder to scan. Keep URLs under 100 characters where possible; use a shortener for anything over 300.
  • Low contrast kills scanning. Light gray on white or pastel-on-pastel color schemes break the scanner's binarization step. Stick to a dark foreground on a clearly brighter background.
  • Inverted codes (light on dark) work on many iPhone/Android cameras but fail on older or industrial scanners that assume dark-on-light.
  • Quiet-zone violations: placing text or art inside the 4-module border confuses scanners. The library gives you 2 modules; add more whitespace around the export if you will set it on a busy background.
  • Tiny print sizes: a QR code should be at least 2 cm by 2 cm at 30 cm reading distance, and roughly one-tenth of the scan distance at billboard scale.
  • Logos in the center work only if you bump error correction to H (30 percent), which the default library setting does not enable; ask a designer before overlaying.

QR Code Versions, Error Correction, and DPI

A QR code\'s "version" is its matrix size. Version 1 is 21 by 21 modules; each subsequent version adds 4 modules per side, up to version 40 at 177 by 177. Error-correction level is L (7 percent recovery), M (15 percent), Q (25 percent), or H (30 percent). Higher correction tolerates smudges but shrinks payload. Data capacity peaks at 7,089 numeric, 4,296 alphanumeric, or 2,953 byte characters at version 40 / level L. For print, a module should render at roughly 0.5 mm at arm\'s length; at 300 DPI that is 6 pixels per module, so a version 10 code (57 modules) wants about 350 pixels of image.

How It Compares to Other QR Tools

Dynamic QR services (Bitly, Beaconstac, QRCodeMonkey) generate a short URL that redirects to your destination, letting you change the target later and collect scan analytics. Useful for marketing, but every scan bounces through a third-party server, creating a privacy and reliability dependency. A static generator like this one writes the final URL directly into the code, so scans go straight to the destination with zero tracking. Platform tools win elsewhere: Google\'s qrencode CLI for scripted batch generation, or a label printer\'s built-in generator for shipping labels. For a one-off sticker, poster, or Wi-Fi card, a client-side generator is the simplest, most private option.

Frequently Asked Questions

Is the QR code built on a server or locally in my browser?

Entirely in the browser. The <code>qrcode</code> npm package ships as JavaScript that runs on your tab, draws to an HTML canvas, and serializes via <code>canvas.toDataURL</code> for PNG or a Blob for SVG. No request goes to our origin or any other service, so your payload (which may be a Wi-Fi password, a private link, or a phone number) never leaves your device.

Which error-correction level does this tool use, and can I change it?

The <code>qrcode</code> library defaults to level M, which corrects up to 15 percent of damaged or obscured modules and is the right trade-off for screen-shared or slightly smudged prints. This UI does not expose a selector, so if you need level H for a logo overlay or level L to pack more data into a smaller code, a command-line tool like <code>qrencode -l H</code> or a design-focused generator gives you that knob.

What is the correct Wi-Fi QR payload format?

Use <code>WIFI:T:WPA;S:NetworkName;P:Password;H:false;;</code> where T is the auth type (WPA, WEP, or nopass for open), S is the SSID, P is the password, and H signals a hidden network. Escape special characters - semicolons, commas, and backslashes in the password must be prefixed with a backslash. iOS 11 and above, Android 10 and above, and most modern cameras parse this directly from the camera app.

How long can the text be before the QR code stops scanning?

In theory, a version-40 code holds up to 4,296 alphanumeric or 2,953 byte characters at error-correction level L. In practice, anything above 300 characters produces a dense matrix (version 15+) that requires a high-resolution print and a good camera. Keep URLs short, and for anything longer than a sentence, consider hosting the payload behind a URL.

How big should I print the QR code for reliable scanning?

A widely used rule of thumb is minimum width equal to distance divided by ten. At 30 cm reading distance on a business card, that is 3 cm on a side, but 2 cm still works with error-correction level M. For a poster scanned from 5 m, go 50 cm wide. Always verify with the actual camera model your audience will use - phone cameras below 8 MP struggle with codes below 2 cm.

Why does the PNG look blocky when I open it in Photoshop?

QR codes are intentionally made of sharp black and white pixels, with no anti-aliasing. The PNG export uses nearest-neighbor geometry, so blowing up a 256-pixel PNG to 2000 pixels produces stepped edges. Download the SVG instead - it scales losslessly because it describes each module as a vector rectangle - then re-rasterize at your target print resolution.

Can I embed a logo in the center of the QR code?

Yes, but only if you first bump error correction up to level H (30 percent). Level M, which this tool uses, tolerates at most about 15 percent damage; covering 10 percent of the modules with a logo plus a small amount of real-world smudging already pushes it past the scanner's recovery budget. For logo-embedded codes, use a design tool that lets you set level H explicitly.

Do inverted (light on dark) QR codes still scan?

Modern phone cameras (iOS 14+, Android 9+) scan inverted codes correctly because the ZXing and Apple VisionKit pipelines both auto-detect module polarity. Older dedicated scanners, kiosks, and industrial readers often assume dark modules on light background; an inverted code scans as garbage. If you will ship to diverse hardware, keep it dark-on-light.

Why does the same text sometimes produce a different-looking QR code?

QR codes apply one of eight masking patterns chosen to balance black and white modules and avoid scanner-confusing shapes. The encoder picks the mask with the best penalty score, so two nearly identical inputs can pick different masks and look different. The decoded payload is identical.

Can I generate a dynamic QR code that changes destination later?

Not with a static generator. Dynamic QR codes always point to a short URL on a third-party service (Bitly, Beaconstac, QRCodeChimp), which then 302-redirects to whatever destination you configured. That gives you analytics and retargeting but ties the code to that vendor's uptime. If you own a domain, you can roll your own by encoding a short path on your site and configuring the redirect on your own server - all the flexibility, none of the lock-in.

Can a scanner tell me who generated the QR code?

No. The code stores only the payload you typed, nothing about the creator or a timestamp. A scanned URL might reveal your domain, and a Wi-Fi payload exposes SSID and password in plaintext, but the QR binary itself is anonymous. For tamper-evidence, sign the payload separately (for example, as a JWT) before encoding.

Learn more

More QR & Barcode