A QR code is a two-dimensional barcode that packs text — a URL, a phone number, a Wi-Fi password, a plain sentence — into a pattern of black and white squares that a camera can read in a fraction of a second. This tool builds one directly in your browser: type or paste whatever you want encoded, and a scannable code appears immediately, with no upload, no account, and no third party sitting between the code and whoever scans it.
How a QR code actually stores data
Unlike a traditional barcode, which is a single line of varying-width stripes that can only hold a short numeric or alphanumeric string, a QR code is genuinely two-dimensional — it uses both height and width to pack in far more information. The pattern breaks down into a few functionally distinct regions: three large squares in three of the four corners (the "finder patterns") that let a scanner instantly recognize the image as a QR code and figure out its orientation regardless of the angle it's photographed from; smaller alignment patterns that correct for lens distortion; a timing pattern of alternating black and white modules that lets the scanner calibrate exactly where each data cell starts and ends; and then the actual data region, which is where your encoded text lives, spread across a grid using one of several data-encoding modes depending on what kind of characters you're storing (numeric-only, alphanumeric, byte/binary, or Kanji).
That data region also carries deliberate redundancy, generated using Reed-Solomon error correction — the same family of error-correcting code used in CDs, DVDs, and satellite communication. This is precisely what the error-correction level setting controls, and it's the single most important tradeoff in generating a usable code: more redundancy means the code can be damaged, obscured, or partially printed incorrectly and still scan successfully, at the cost of leaving less room in a given code size for your actual content.
Choosing a size and error-correction level that actually work
The right settings depend entirely on where the code is going to be scanned, not on some universal default. A QR code printed large on a poster or a storefront window, viewed from several feet away by a phone camera in decent lighting, can comfortably use a lower error-correction level — Low or Medium — since nothing is likely to obscure it and a lower level packs the same data into a visually simpler, easier-to-scan pattern. A QR code destined for a business card, a product label, or anywhere it might get a logo overlaid on top of it, on the other hand, benefits from High error correction specifically because that overlaid logo is, from the code's perspective, exactly the kind of localized damage the redundancy exists to tolerate.
Size matters just as much as error-correction level, and the two interact. A QR code with a lot of data encoded at a high error-correction level produces a denser grid — more individual squares packed into the same physical area — and a denser grid needs to be printed or displayed larger, or scanned from closer up, for a camera to resolve each square distinctly. If you've ever seen a QR code that phones struggle to scan, it's very often this: too much data, too much error correction, printed too small, so the individual modules blur together under a typical phone camera's resolution and focus distance. As a rule of thumb, keep the encoded content short — a compact URL rather than a long one wherever you have the choice — and match error correction to the actual risk of the code getting damaged or obscured, rather than defaulting to the highest setting out of caution.
What you can actually encode
Most QR codes in the wild link to a URL, and that's the simplest and most universal use — any phone's default camera app recognizes a URL inside a QR code and offers to open it directly, no separate scanner app required. But a QR code is really just a container for text, and several well-established conventions let that text trigger specific device behaviors beyond opening a browser. A string formatted as WIFI:T:WPA;S:NetworkName;P:Password;; prompts most phones to offer joining that Wi-Fi network directly. A string starting with tel: prompts a phone call; mailto: opens a pre-addressed email; sms: opens a pre-addressed text message. A vCard-formatted block of text (the same format used for exporting a contact) lets someone scan a code and save your contact details directly, which is the mechanism behind most "digital business card" products. None of this requires anything special from the QR code itself — it's entirely a matter of formatting the text you encode in a way your phone's operating system already knows how to interpret, and this tool will happily encode any of it exactly as typed.
Static versus dynamic QR codes
It's worth understanding this distinction even though this tool only makes the first kind. A static QR code, like the ones generated here, encodes its final destination directly — the URL or text is baked into the code itself, permanently, the moment it's generated. A dynamic QR code instead encodes a short URL controlled by a third-party service, which then redirects to your real destination; the appeal is that you can change where it redirects to later without reprinting the code, and the service can show you scan analytics. The tradeoff is a genuine one: a dynamic code depends on that third-party service staying online indefinitely — if the company shuts down or the subscription lapses, every printed code pointing at it breaks permanently, all at once, with no way to fix the already-printed materials. A static code has no such dependency; once generated, it works for as long as the destination URL itself stays valid, with nothing else that can go wrong in between. For anything printed in bulk or meant to last (packaging, signage, a book), that permanence is usually worth more than the ability to redirect it later.
Common QR code mistakes worth avoiding
The most frequent failure isn't a technical one — it's encoding a URL that's needlessly long, then wondering why the resulting code looks dense and scans unreliably from a normal distance. Shortening the destination URL before encoding it, or linking to a clean, short path rather than one full of tracking parameters, produces a visibly simpler and more reliably scannable code for free. A close second is insufficient quiet zone — the plain white margin QR codes need around their edge for a scanner to distinguish where the code starts. Cropping a QR code too tightly, or placing it directly against a busy background with no white border, is a common reason an otherwise correctly generated code fails to scan even though it looks fine to a human eye. This tool renders a code with a sensible built-in margin by default specifically to avoid that problem, but it's worth keeping in mind if you're placing the exported image into a larger design.
Always scan a QR code yourself, on an actual phone camera, at the size and distance it will realistically be viewed from, before committing it to print in any quantity. A code that looks perfectly readable at full size on a laptop screen can behave very differently once shrunk onto a flyer or business card — testing at the real intended scale is the only reliable way to catch a scanning problem before it's expensive to fix.