Tools / Developer / QR Code Generator
Client-side

QR Code Generator

Turn any URL or text into a static QR code locally in your browser, pick a size, and download SVG or PNG without sending your input anywhere.

What it does

  • Encodes any URL or text, up to 2,331 bytes
  • Four output sizes: 128, 256, 512 and 1024 px
  • Vector SVG for print, PNG for screens and documents
  • Static code: no redirect, no expiry, no scan tracking
  • Generated locally with Rust and WebAssembly

This QR code generator turns a URL, a line of text, a Wi-Fi string or any other content into a QR code and lets you download it as SVG or PNG. The code is built in your browser by a Rust library compiled to WebAssembly, so the text you encode is never sent to a server. As the guide to generating QR codes without uploading explains, the content behind a QR code is often the sensitive part: a staging URL, a private meeting link, network credentials.

How to create a QR code

  1. Type or paste the content in the Text or URL field. Line breaks are kept.
  2. Pick an output size: 128, 256 (default), 512 or 1024 pixels.
  3. Click Generate, or press Ctrl+Enter (Cmd+Enter on macOS). The code appears instantly.
  4. Click Download SVG or Download PNG. The files are saved as qrcode.svg and qrcode.png.

If you change the text or the size, click Generate again before downloading so the file matches what you see.

SVG or PNG: which one to download

  • SVG is a vector file. It stays sharp at any print size, from a business card to a poster, and opens in Illustrator, Inkscape, Figma or Affinity. The selected size is a minimum: the generator rounds the module size up to whole pixels and adds the standard four module quiet zone, so a 128 px request can produce a slightly larger SVG (for example 145 px for a short text).
  • PNG is a raster image rendered at exactly the size you selected. Use it for slides, emails, web pages and word processors that do not handle SVG well. For print, prefer 1024 px or the SVG.

What you can encode

The generator encodes the exact text you type. Phone camera apps then recognize common formats and offer the matching action:

  • Web links: https://example.com/menu opens in the browser. Always include https:// so the scanner recognizes it as a link.
  • Wi-Fi access: WIFI:T:WPA;S:NetworkName;P:password;; lets guests join a network without typing the password.
  • Email and phone: mailto:contact@example.com or tel:+15551234567.
  • Plain text: an asset tag, a serial number, a short note, a one time setup code.

The encoder picks the most compact mode automatically. With the medium (M) error correction level it uses, a code holds up to 5,596 digits, 3,391 uppercase alphanumeric characters, or 2,331 bytes of general text. Accented letters and emoji take two to four bytes each in UTF-8. Past that limit, generation fails with an error. Keep in mind that short content makes a less dense code that scans faster and from further away, so shorten long URLs where you can.

Static QR codes: no expiry, no tracking

Every code made here is static: your URL or text is written directly into the pattern. There is no redirect server in between, so the code keeps working as long as the destination exists, it cannot be switched off by a subscription ending, and nobody logs who scans it. The flip side is that a static code cannot be edited after printing. If the destination may change, point the code at a URL you control and redirect it yourself.

Limits to know before printing

  • Classic black on white: the code is drawn with black modules on a white background, the high-contrast layout every phone camera and scanner reads, including our own QR code reader. Colors are not customizable.
  • No logo or custom styling: the tool does not add logos, rounded modules or frames.
  • Error correction is fixed at level M, which tolerates roughly 15% of damaged or hidden area. It is not configurable.
  • One code at a time: there is no batch mode in the web tool.

Compared with design apps and the command line

Many online generators default to "dynamic" codes: the printed code contains a short link to their server, which then redirects to your URL. That is how they offer scan statistics and editable destinations, but the code depends on their service staying up. On the command line, qrencode -o code.png "https://example.com" does the same job offline if you have it installed. This page gives you that offline behavior without installing anything: once the page has loaded, generation works even with the network disconnected.

Privacy: the encoded text stays on your device

The text you type is passed to a WebAssembly module running in your browser tab, and the SVG and PNG files are created locally with the Canvas API. No request carries your content to a server. You can check this in the Network tab of your browser's developer tools. This matters for internal URLs, Wi-Fi passwords, unpublished campaign links and anything else you would not paste into a stranger's form.

Frequently asked questions

Is this QR code generator free?
Yes. There is no account, no watermark, no limit on the number of codes and no expiry date. The codes are static, so they never stop working because of a plan or a trial ending.
Do the QR codes expire?
No. The content is stored inside the code itself, not on a server. The code works as long as the link or text it contains is still valid.
Can I track how many people scan my code?
Not with the code itself, because there is no redirect server. If you need statistics, encode a URL with campaign parameters (for example ?utm_source=poster) and read them in your own analytics.
What size should I use for print?
Download the SVG, which scales without blur, or the 1024 px PNG. As a rule of thumb, the printed code should be large enough to scan from the expected distance, and you should always keep the light margin around it.
How do I make a QR code for Wi-Fi?
Type WIFI:T:WPA;S:YourNetwork;P:YourPassword;; with your own network name and password, then generate. Use T:nopass for an open network. Since generation is local, the password is not sent anywhere.
Why does my code fail to scan?
The most common causes are a print that is too small, a missing quiet zone after cropping, or a print with too little contrast (for example on a dark or glossy surface). Test with several phones before printing in volume.
Is my text sent to a server?
No. The code is computed in your browser via WebAssembly and the files are created locally. Nothing is uploaded or stored.

Related tools: decode an existing code from a screenshot with the QR code reader, and clean up a link that contains special characters with the URL encoder and decoder before you encode it.