AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I make a QR code online for free?

Open AnyTool QR Code Generator, choose a content type — URL, text, email, phone, SMS, WiFi, vCard or geo — and fill in the fields. A live QR code appears instantly. Adjust the size, quiet zone, error-correction level and colours, optionally drop in a centre logo, then download a PNG or vector SVG or copy the image. Everything is generated in your browser, so nothing is uploaded.

  • Eight content types with the exact format scanners expect (mailto:, tel:, SMSTO:, WIFI:…, vCard 3.0, geo:)
  • Custom size, quiet zone, error-correction level (L/M/Q/H) and foreground/background colours
  • Optional centre logo read locally — capped at ~22% and auto-set to H correction so it still scans
  • Download crisp PNG or resolution-independent SVG, or copy the image to the clipboard
  • 100% client-side — no server, no CDN, your data and logo never leave the browser

What is

QR Code Error Correction

QR code error correction is built-in redundancy (Reed–Solomon coding) that lets a code still be read when part of it is dirty, damaged or covered. It comes in four levels — L (~7%), M (~15%), Q (~25%) and H (~30% recoverable) — and a logo overlay requires the highest level, H, so the obscured centre can be reconstructed.

Generators

Related terms

Quiet zoneFinder patternvCardReed–Solomon coding

Frequently Asked Questions

Use level H, which recovers about 30% of the code. It lets the centre be covered by a logo and still scan reliably.

QR codes have four error-correction levels — L (~7%), M (~15%), Q (~25%) and H (~30% recoverable). When you place a logo in the centre you are deliberately obscuring part of the data, so you need the highest redundancy: level H. AnyTool automatically switches to H when you add a logo, keeps the logo under about 22% of the code area, and never covers the three corner finder patterns, so the code stays scannable. Even so, you should test the finished code with a real phone before printing.

Pick the WiFi type, enter your network name, password and encryption, and the tool builds a WIFI: code that joins the network when scanned.

Choose the WiFi content type in AnyTool QR Code Generator, then enter the network name (SSID), the encryption (WPA, WEP or open) and the password. The tool encodes the standard WIFI:T:WPA;S:NetworkName;P:password;; string, escaping any special characters in the name or password for you, and marks the network hidden if you ask. Most modern phones join the network automatically when they scan it. Because everything runs in your browser, your WiFi password is never uploaded.

No. These are static QR codes with the data baked in — there is no tracking, no redirect and no expiry, and nothing is uploaded.

AnyTool creates static QR codes: the content you enter is encoded directly into the pattern, so the code works forever, has no redirect link, and cannot be tracked, edited or made to expire. That also means it is fully private — the code is generated entirely in your browser with no server or CDN, so the data you encode and any logo you add never leave your device. The trade-off is that, unlike a paid dynamic code, you cannot change the destination after printing, so double-check the content first.

Usually low contrast, too little quiet zone, an oversized logo, or content so long the code is very dense. Fix those and re-test.

The most common scan failures come from low contrast (use a dark foreground on a light background), a missing quiet zone (leave at least four modules of empty space around the code), a logo that is too big or covers a corner finder pattern, or content so long that the code becomes a dense mass of tiny modules. AnyTool shows a live scannability hint that checks your contrast, error-correction level and logo size, but you should always scan the finished code with a couple of real phones before printing it at the final size.

Detailed Explanation

Technical Details

Content Types and Payload Encoding

AnyTool QR Code Generator builds the correct payload string for eight content types so that standard phone cameras recognise them. A URL becomes a plain link (a bare domain is prefixed with https://), an email becomes a mailto: URI with optional subject and body, a phone number becomes tel:, and an SMS becomes the widely-supported SMSTO:number:message form. WiFi credentials are encoded as the MeCard-style WIFI:T:WPA;S:ssid;P:password;; string with hidden-network support, a contact is written as a vCard 3.0 record (BEGIN:VCARD … END:VCARD), and a location becomes a geo:lat,lng URI. Special characters such as backslash, semicolon, comma and colon are escaped per the WIFI and vCard rules so the code stays valid.

  • URL, text, email (mailto:), phone (tel:), SMS (SMSTO:) supported
  • WiFi encoded as WIFI:T:WPA;S:ssid;P:password;; with hidden-network flag
  • Contacts use vCard 3.0; locations use geo:lat,lng
  • Special characters escaped per WIFI and vCard rules
  • Bare domains are auto-prefixed with https://
Methodology

Error Correction, Colours and Logo Overlay

The code can be tuned for size (up to 1024px), quiet-zone margin (the spec recommends at least four modules), foreground and background colours, and one of four Reed–Solomon error-correction levels: L (~7%), M (~15%), Q (~25%) or H (~30% recoverable). An optional centre logo is read locally from the user’s device and drawn onto the rendered canvas over a small white backing plate; the generator caps the logo at about 22% of the code area, automatically raises error correction to H, and never overlaps the three corner finder patterns so the code remains scannable. A live scannability hint computes the foreground/background contrast ratio and warns when contrast is low, when a logo is present without H-level correction, or when the logo is oversized.

  • Four error-correction levels: L ~7%, M ~15%, Q ~25%, H ~30%
  • Logo overlay capped at ~22% and auto-switches to H correction
  • Adjustable size, quiet-zone margin and custom hex colours
  • Live scannability hint checks contrast, EC level and logo size
  • PNG export includes the logo; vector SVG export is raster-logo-free
Privacy & Security

Privacy, Output and Honest Limitations

All encoding and rendering happen in the browser using a bundled QR library, with no server call and no CDN, so the content entered (including WiFi passwords and vCard details) and any logo image never leave the device, and the page works offline once cached. Output can be downloaded as a PNG, exported as a resolution-independent SVG for print, or copied to the clipboard as an image. These are static QR codes: the data is baked into the pattern, so they never expire and cannot be tracked or edited after the fact, but the destination also cannot be changed once printed. Very long content forces a denser code that is harder to scan, and logos plus low contrast reduce scan reliability, so the tool recommends keeping payloads short, preserving the quiet zone, and testing the finished code on real phones before printing.

  • No server, no CDN — content and logo never leave the browser
  • Outputs: PNG, vector SVG, or clipboard image; works offline
  • Static codes: no expiry, no tracking, but destination is fixed once printed
  • Long content yields denser, harder-to-scan codes
  • Test on real phones before printing at final size
QR code generation: in-browser (AnyTool) vs typical online generators
CapabilityAnyToolTypical online generators
ProcessingRuns in your browser, no CDNOften server-side / API
PrivacyContent & logo never uploaded; offline-capableMay upload content and logo
Content typesURL, text, email, phone, SMS, WiFi, vCard, geoVaries; some gated behind sign-up
Logo overlayLocal file, capped ~22%, auto H correctionOften paid or upload-based
OutputPNG + vector SVG + copy imagePNG free; SVG often paid
Code typeStatic (no expiry, no tracking)Often dynamic, may expire on free tier
Scannability helpLive contrast / EC / logo-size hintRare
Cost / signupFree, no signup, no watermarkOften watermarked or gated

AnyTool generates every QR code locally in the browser and uploads nothing — including any logo you add.