Files & Images Runs locally Ready to use Built-in examples No tracking

QR Code Generator

Generate QR codes locally in your browser for URLs, plain text or WiFi credentials, with four error-correction levels and adjustable module size. Download as SVG or PNG.

A menu that wants a URL, a poster that asks for a follow, a home network whose password nobody wants to type — turning the content into a QR code settles it in one scan. Text, links and WiFi credentials all work, generation is instant, and the content is encoded in the pattern itself, so there is no expiry and no scan limit. Before printing, raise the error-correction level; the specifics are below.

Error correction runs from L to H, and higher means a denser code: M is enough on screen, while printing and outdoor use want H. A WiFi code follows the fixed format WIFI:T:WPA;S:name;P:password;;, which most phones can join from directly. For printed material keep the quiet zone around the code, stay above roughly 2 cm a side, and shorten long URLs first with a link shortener.

How to use

  1. Choose the content type: text, URL or WiFi.
  2. Enter the content and set the error-correction level for the intended use.
  3. Adjust the module size if needed.
  4. Download as SVG for print, or PNG for screen.

How it works

Generate and download

Paste a URL or any text into the box and press generate for an instant code; test-scan it, then download SVG or PNG with the buttons below. Generation is entirely local.

Choosing an error-correction level

Error correction strengthens from L to H: higher levels survive occlusion and smudging better but produce denser codes for the same content. M is fine on screens; H for print and outdoor use.

The WiFi QR format

WiFi codes follow a fixed format: WIFI:T:WPA;S:your-network;P:password;; (semicolons separate fields; escape any semicolon inside the name or password with a backslash). iPhones and most Android cameras join the network straight after scanning.

Print preparation

For printed material keep the quiet zone (this tool's margin parameter exists for that) and make the code at least 2 cm per side. Longer URLs mean denser codes — shorten with a link service first.

Code example

JavaScript Build an SVG (vector, scales losslessly)

// a QR code is a module matrix plus error correction; once you have the matrix, emit SVG
// following the qrcode-generator approach: addData -> make -> one path per dark module
function qrSvg(text, cell = 4, margin = 2) {
  const qr = qrcode(0, 'M');            // typeNumber 0 = pick the version automatically
  qr.addData(text, 'Byte');             // UTF-8 goes through Byte mode
  qr.make();
  const n = qr.getModuleCount();
  const size = (n + margin * 2) * cell;
  let path = '';
  for (let r = 0; r < n; r++) {
    for (let c = 0; c < n; c++) {
      if (qr.isDark(r, c)) { path += 'M' + (c + margin) * cell + ' ' + (r + margin) * cell + 'h' + cell + 'v' + cell + 'h-' + cell + 'z'; }
    }
  }
  return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + size + ' ' + size + '"><rect width="100%" height="100%" fill="#fff"/><path d="' + path + '" fill="#000"/></svg>';
}

Python Generate a PNG in Python

import qrcode

qr = qrcode.QRCode(
    version=None,                      # pick the version automatically
    error_correction=qrcode.constants.ERROR_CORRECT_M,
    box_size=10,                       # 10 pixels per module
    border=4,                          # quiet zone (the spec wants at least 4 modules)
)
qr.add_data('https://example.com')
qr.make(fit=True)
qr.make_image(fill_color='black', back_color='white').save('qr.png')

FAQ

Do generated QR codes expire?

Never. Content is encoded directly into the graphic — a static code with no expiry; as long as the destination URL lives, it scans years later.

Is there a content length limit?

Yes. Capacity depends on error-correction level and content; plain URLs up to a few hundred characters are fine, beyond which it errors clearly. Shorten long links first — the code gets sparser and easier to scan.

Can a QR code hold an image or file?

No. Codes carry text only — upload the image to a host or cloud drive and encode the share link.

The code won't scan — how do I troubleshoot?

Check in order: content complete (no stray spaces or newlines copied), quiet zone sufficient, contrast not inverted (dark code on light background), print size not too small. Screen glare also defeats scanners — change the angle.

Are generation records kept on a server?

No. Generation is pure local computation — the server never knows what you typed or generated. History lives only in your browser's local storage.

SVG or PNG download — which for what?

SVG is vector: infinitely scalable without blur, right for print, laser engraving and re-layout in editors. PNG is bitmap, right for chat and documents. For print, always SVG.

How do I regenerate quickly with different text?

Just edit the input — the code refreshes in real time; error-correction, module size and margin changes apply instantly, no re-clicking.