TOOL № 009 / CALCULATORS / RUNS IN YOUR BROWSER — NOTHING UPLOADED

QR Code Generator

Turn any text, URL, email, phone number, or WiFi network into a QR code. Choose the size, error-correction level, and colors, then download it as a PNG.

Any text or URL works. Tap a preset above for the right format for email, phone, SMS, or WiFi.

About this QR code generator

A QR code is just a grid that encodes text — a URL, a phone number, a WiFi login, anything you'd otherwise type by hand. This tool builds that grid entirely in your browser: type or paste any content, and the code updates. Beyond a plain URL or text, four presets format the content correctly for the scanning conventions most phones expect: tapping "Email" inserts a mailto: template, "Phone" a tel: template, "SMS" an sms: template, and "WiFi" the specific WIFI:T:...;S:...;P:...;; format that lets a phone camera join a network directly without typing the password. Edit the placeholder details in each template before generating.

Error correction is worth understanding rather than leaving on autopilot. A QR code encodes extra redundant data alongside your actual content, so that if part of the printed code gets smudged, scratched, or partially covered by a logo, a scanner can still reconstruct the rest. Low correction (~7% redundancy) packs the most usable data into the smallest, simplest-looking code — fine for a clean digital display. High correction (~30% redundancy) survives real-world wear and tear far better, which matters if the code will be printed, stuck outdoors, or placed on a well-worn menu or package, at the cost of a visually denser code for the same content length.

Longer content needs a larger, more complex grid to encode, and very long text combined with a high error-correction level can occasionally produce a code too dense to scan reliably at small print sizes — if that happens, try shortening the content, lowering the correction level, or increasing the output size.

Colors are customizable, but contrast matters more than aesthetics here: a scanner reads the code by distinguishing dark modules from light ones, so low-contrast color combinations (like two similar mid-tones) can make a code unreadable even though it looks fine on screen. This tool checks the contrast between your chosen colors and flags a warning if it's too low to scan reliably.

This is the one tool on the site that uses a small third-party JavaScript library to handle the QR encoding math itself, since implementing the QR standard correctly from scratch is a genuinely complex, easy-to-get-wrong undertaking. Everything still runs locally in your browser — nothing you type is uploaded anywhere.

Frequently asked questions

What can I put in a QR code?

Any text up to a few thousand characters: a website URL, plain text, an email address, phone number, SMS message, or WiFi network details. Use the preset buttons for the correct format for email, phone, SMS, and WiFi so phone cameras recognize the content type automatically.

What does the error-correction level actually do?

It controls how much redundant data is built into the code so a scanner can still read it even if part of the code is damaged or obscured. Higher levels survive more damage but produce a visually denser code for the same content — use High for anything that will be printed and handled, Low for a clean digital-only display.

Why won't my QR code scan?

Usually one of three things: the content is too long for a dense, small code (try shortening it or increasing the size), the foreground and background colors don't have enough contrast, or the printed size is too small for a phone camera to focus on. Try the default black-on-white colors and a larger size first.

Can I use any colors I want?

Yes, but low-contrast combinations risk not scanning at all. This tool checks the contrast ratio between your chosen colors and warns you if it's too low for reliable scanning.

Is my content uploaded anywhere?

No. The QR code is generated entirely in your browser using a small JavaScript library; nothing you type is sent to any server.