Create beautiful, customizable QR codes instantly for websites, WiFi, contact cards, payments and more. Everything runs locally in your browser.
DATA
QR
Type
Opens a website.
A bare domain gets https:// added, so a code never opens a search instead of the site.
100%
Checking…
The image is being drawn and read back.
The symbol
Version
225×25 modules
Error correction
Mrecovers 15%
Encoding
Byte (UTF-8)
Mask
2of 8, chosen by penalty
The data
Data length
24bytes
Capacity used
92%of 26
Output
512×512PNG
Modules
—each
What the code holds
https://inertiapixel.com
Format
Quality
512×512 px
Everything happens locally in your browser. Your QR code data is never uploaded or stored.
These are static QR codes: the data is inside the symbol itself. Nothing here redirects through a server, so nothing can expire, be tracked, or stop working when a service does.
What is a QR code?
A QR code is a grid of black and white squares that holds text. Not a link to text — the text itself, encoded directly into the pattern. Point a camera at it and the phone reads the squares back into the characters that went in, and then does whatever those characters suggest: open a page, join a network, save a contact.
It was invented in 1994 by Denso Wave to track car parts along a production line, where the problem was that a traditional barcode holds about twenty characters and has to be scanned the right way up. A QR code holds thousands, reads at any angle, and keeps working with a third of it missing. Those three properties are why it ended up on menus and packaging thirty years later rather than staying in a factory.
Everything on this page happens in your browser. The encoder, the renderer, the decoder that checks the result and the export are all JavaScript running on your machine. That matters more here than for most tools, because the things people put in QR codes are WiFi passwords, home addresses and wallet addresses.
How QR codes work
Four things are happening in that grid at once, and knowing which is which explains every design rule further down.
The three corners find it
The large concentric squares in three corners are finder patterns. A scanner sweeps the camera image looking for a run of dark, light, dark, light, dark in a 1:1:3:1:1 ratio — a proportion rare enough in the everyday world to be a reliable signal. Three of them give it the orientation and the corners; a smaller square near the fourth corner gives it the perspective.
This is why the corner styling here only ever changes the radius. Round the corners and it still measures 1:1:3:1:1 through the middle. Change the proportions and the code stops being found at all — not read incorrectly, not found, which is a much harder failure to debug.
The blank border tells it where to stop
The quiet zone is four modules of nothing around the symbol. Without it a scanner cannot tell where the code ends and the packaging begins. Cropping it is the most common reason a printed code fails, and it fails after the print run.
The data spirals in from the bottom right
Characters become bits, bits become bytes, and the bytes are laid into the grid along a zig-zag two modules wide, running up and down and right to left. Then the whole thing is XORed with one of eight mask patterns — chosen by scoring each one against four penalty rules — to break up large blank areas and any accidental 1:1:3:1:1 runs that would confuse the finder search.
Reed–Solomon rebuilds what is missing
This is the clever part, and the reason a logo in the middle works at all. Along with your data, the code carries error-correction bytes computed over a finite field — the same mathematics that keeps a scratched CD playing. A reader can reconstruct whole missing bytes from what survives, up to a limit set by the correction level.
What a symbol is made of
1version 5, level Q → 37 × 37 modules23 finder patterns 3 × 49 modules found by the camera4 timing patterns alternating fixes the module grid5 format information 2 × 15 modules level and mask, BCH-protected6 data + correction 134 codewords 62 data, 72 correction78 72 correction codewords across 4 blocks, 18 each9 → 9 wrong codewords per block can be rebuilt, 36 in all
The check under the preview on this page uses exactly that machinery. It draws the finished image, reads the pixels back into a matrix and runs a real decoder with real error correction over it. If your logo has eaten more than the correction can rebuild, the decode fails and the tool says so — rather than showing a tick and leaving you to find out in print.
Types of QR code
A QR code always holds a string. What makes one a “WiFi code” is that the string follows a convention the scanner recognises. Getting those conventions exactly right — including the escaping — is most of what this tool does.
The same idea, four conventions
1https://inertiapixel.com → opens a page2WIFI:T:WPA;S:Guest Network;P:hunter2;; → offers to join3tel:+442079460000 → opens the dialler4BEGIN:VCARD…END:VCARD → offers to save a contact
URL
The commonest by far. Scanning opens the page. A short address makes a smaller, easier-to-scan code, which is the one genuine argument for a link shortener — and the argument against is that the shortener can disappear.
WiFi
Network name, password and security type. The phone offers to join without anyone reading a password off a card. Semicolons and colons in the password are escaped, which is what stops a code that looks right from failing to connect.
Email
A mailto link with the subject and body pre-filled. Spaces have to be encoded as %20 rather than +, which is the difference between a subject line and a subject line full of plus signs.
Phone
A tel: link. The phone opens its dialler with the number in. Start with + and the country code — without it, a code printed on something that travels only works at home.
SMS
Opens a new message to a number, optionally with the text already written. Uses the SMSTO form, which Android and every scanner descended from zxing understand consistently.
WhatsApp
A wa.me link, which opens a chat with the number and pre-fills a message. The country code is required and the plus is dropped — that is the format WhatsApp expects.
vCard
A contact card: name, company, title, phone, email, website and address. Scanning offers to save it to the address book, which is what makes it the thing worth putting on a business card.
UPI
An Indian payment request. Google Pay, PhonePe, Paytm and BHIM all read it. Leaving the amount out lets the payer enter it, which is usually what a counter wants.
Cryptocurrency
A wallet address, in the URI scheme that chain uses. Bitcoin takes BIP-21 with an amount; Ethereum calls the same thing value. USDT gets a bare address, because it lives on several chains and the address alone does not say which.
Calendar event
A VEVENT with a title, times, location and description. Times are written as UTC, which is what makes an event land at the right hour for someone reading the code in another country.
Static vs dynamic QR codes
Every code this tool makes is static: the data lives in the squares. A dynamic code holds a short link to somebody’s server, which redirects to wherever you currently point it. Both are ordinary QR codes — the difference is entirely in what the string inside says.
A comparison of static and dynamic QR codes
Static
Dynamic
What it holds
Your data, directly
A short link to a redirect service
Editable after printing
No
Yes
Scan analytics
None
Yes, on the service's dashboard
Needs a service
No
Yes, permanently
Ongoing cost
None
Usually a subscription
Stops working if the provider does
Never
Yes
Works offline
Yes — WiFi, vCard and text need no network at all
No, the redirect must resolve
Symbol size
Grows with the data
Always small, whatever it points at
Privacy
Nobody sees the scan
The provider logs every scan
Made by this tool
Yes
No
When static is right: WiFi credentials, contact cards, phone numbers, payment identifiers, anything that has to work without a network, and any URL you control. It never expires, nobody logs the scan, and there is no third party who can change what it does.
When dynamic earns its keep:a printed campaign whose destination is genuinely not decided yet, or one where you need scan counts by location and time. Be clear-eyed about the trade — you are printing somebody else’s domain onto your packaging, permanently.
There is a middle path worth knowing: point a static code at a URL on your own domain and put a redirect behind it. You keep the ability to change the destination, and the code depends on nothing but you.
QR code error correction levels
Every QR code carries redundant data so a reader can reconstruct what a scratch, a fold or a logo has destroyed. The level decides how much redundancy, and therefore how much room is left for your data at a given size.
L — Low
recovers about 7%
The most data in the smallest symbol. Right for a screen, a slide, or anywhere the code is clean, well lit and briefly on show. Wrong for anything printed, and wrong for anything with a logo.
M — Medium
recovers about 15%
The usual default and a sensible one. Comfortable for print in good condition — a leaflet, a page, a business card that lives in a wallet rather than a pocket.
Q — Quartile
recovers about 25%
Room for a small logo, and margin for a surface that will be handled. Table cards, signage, packaging that stays indoors.
H — High
recovers about 30%
Anything with a logo over it, anything outdoors, anything that will be folded, wiped down or worn. Also the right answer for a payment code, where a failed scan costs more than a larger symbol.
The trade is size. The same URL at level H needs a bigger symbol than at level L, which means smaller modules if the printed size is fixed — and smaller modules are harder to scan. Raising the level is not free, and past a point it makes things worse rather than better. The tool shows how many pixels each module gets and warns when the number drops too low.
How to create a QR code
Choose the type. URL for a link, WiFi for network credentials, vCard for a contact. The type decides which fields appear and which convention the string follows.
Fill in the fields. The preview updates as you type. Warnings appear under any field that will cause trouble — a phone number without a country code, a UPI ID in the wrong shape.
Pick the error-correction level. M for a screen, Q for print, H for a logo or anything that will be handled.
Style it, if you want to. Colours, module shapes, corner eyes, a logo, a frame and a label. Everything here costs a little reliability, and the check says how much.
Read the check.“Successfully scannable” means the finished image was decoded back to exactly what went in. Warnings beneath cover the things a decode cannot see.
Test it on a real phone — ideally two, one iPhone and one Android. The check here is rigorous and works from perfect pixels; a camera at an angle in a dim room is a harder problem.
Download. SVG for print and design tools, PNG for the web. Use Print quality if it is going on paper. For a one-dimensional code instead — a retail EAN or a Code 128 label — the barcode generator is the other tool.
QR code design best practices
Contrast is the whole game
A scanner does not see your colours; it sees a camera image it has to turn into black and white, often in bad light at an angle. Aim for a contrast ratio of 7:1 or better, and get there by darkening the foreground rather than lightening the background. Two mid-tones that look distinct on a calibrated screen can be indistinguishable to a phone camera under fluorescent light. The colour picker reports the contrast ratio between two colours if you want to check a brand pair before using it here.
Keep the modules darker than the background. Inverted codes are legal and a good many scanners refuse them outright, because the specification describes dark on light and plenty of implementations took that literally.
Never crop the quiet zone
Four modules of blank border, on all four sides. Not three because the layout is tight, and not zero because it sits on a white background anyway — a white background with a photograph 2 mm away is not a quiet zone. This is the most common cause of a printed code failing, and the most expensive, because it is discovered after the print run.
Put the logo in the middle and keep it small
The centre is the only place a logo belongs: the three corners are how the code is found, and covering one is fatal rather than merely damaging. Stay at or under 20% of the width, raise the correction to H, and give it a backing plate so it reads against the modules. Then look at what the check says — coverage that is fine here can fail on a phone, because this check works from a perfect image.
Size it for the distance
The working rule is a tenth of the scanning distance: read from one metre, about 10 cm across; from three metres, about 30 cm. Below roughly 2 cm printed, most phones struggle no matter how good the printing is. Less data means a lower version, which means bigger modules at the same physical size — which is why a shorter URL genuinely scans better. Dropping the campaign parameters is the cheapest saving available: the canonical URL generator will strip them and show you what went.
Print at the right resolution, and test on the real thing
Use the SVG for print: it is vector, so there is no resolution to get wrong. If something demands a raster, use Print quality — at least four pixels per module, and ideally 300 dpi at final size. Then test on the actual substrate. Gloss reflects, matte does not; fabric distorts; a curved bottle bends the grid. None of that shows up on a screen.
Say what the scan will do
A code with “View the menu” under it is scanned far more often than a bare square, and that difference dwarfs anything styling achieves. The frames here exist for that reason rather than for decoration.
Common use cases
The same generator, with different answers to the same three questions: how far away is it read from, how rough a life will it have, and what does the person scanning it get?
Business cards
A vCard in the corner saves the recipient typing seven fields into their phone, which is the difference between being saved and being lost.
Restaurant menus
A table card gets wiped, spilled on and folded. Level H and a generous quiet zone are what keep it working after a month of service.
Product packaging
Small, printed once, and impossible to fix. Level H, square modules, high contrast and a size you have tested on the actual substrate.
Marketing campaigns
A poster read from three metres needs a code around 30 cm across. Add a label saying what the scan gets — it raises the number of people who bother more than any styling does.
Event tickets
Printed, pocketed, creased and scanned in a queue under bad lighting. Everything argues for the strongest correction and the simplest shapes.
Payments
A payment code that does not scan is worse than no code at all. Level H, no logo, black on white, and check the identifier in your own app before printing.
WiFi sharing
A framed code on the wall of a café or in a guest room. Nobody reads out a password again, and nobody mistypes one.
App downloads
A link to a store page, usually with a logo in the middle. Level H, and check the coverage warning rather than trusting that it looked fine on the designer's screen.
Contact information
On a van, a shopfront or an email signature. A vCard or a phone code turns a number people have to remember into one tap.
Website sharing
On a slide, at the end of a talk, on the back of a leaflet. The simplest case, and the one where a shorter URL genuinely pays for itself.
Frequently asked questions
Is this QR Code Generator free?
Yes. Every type, every design option, the logo, the frames, the scan check and all five download formats are free, with no account, no sign-up, no watermark and no limit on how many codes you make. The codes never expire, because there is nothing to expire — the data is inside the symbol.
Is my data uploaded anywhere?
No. The QR code is generated, styled, checked and exported by JavaScript running in your browser. Nothing is sent to a server, nothing is stored and nothing is logged. You can disconnect from the network after the page loads and it keeps working — which matters more here than almost anywhere, because the things people put in QR codes are WiFi passwords, home addresses, phone numbers and wallet addresses.
Do these codes ever expire?
Never. These are static QR codes: the data is encoded in the black and white squares themselves. There is no server in the middle, no account attached, and nothing that stops working when a company changes its pricing or shuts down. A code printed today will scan in twenty years.
What is the difference between a static and a dynamic QR code?
A static code holds your data directly. A dynamic code holds a short link to somebody's server, which redirects to wherever you point it — so it can be edited after printing and it can count scans, and it also stops working the moment that service does, or the moment you stop paying. This tool makes static codes only, and does not pretend otherwise. If you need to change a destination later, point a static code at a URL you control and change the redirect at your end.
Can I add a logo?
Yes — PNG, JPEG, SVG or WebP, resized and centred automatically, with an optional backing plate so it reads cleanly against the modules. A logo destroys the modules underneath it, and the error correction rebuilds them up to its limit. That is why the check below the preview matters: it actually decodes the finished image and tells you whether the correction managed it, rather than showing a tick and hoping.
How big can the logo be?
Between 10% and 30% of the width. At level H the error correction can rebuild about 30% of the symbol, so a 20% logo is comfortable and a 30% one is on the edge — and the edge is a bad place to be, because a phone at an angle in poor light has less to work with than the perfect image being checked here. If the check says it scans and the coverage warning is showing, it means exactly that: fine on screen, risky in the wild.
What do the error-correction levels mean?
How much of the symbol can be lost and still read. L recovers about 7%, M about 15%, Q about 25% and H about 30%. Stronger correction takes up room, so the same data needs a bigger symbol — which is the trade. Use M for a screen, Q for print, and H for anything with a logo on it or anything that will be handled, folded or left outdoors.
How do I know it will actually scan?
It is checked, not guessed at. The finished image — colours, module shapes, logo and all — is drawn to a canvas, read back a pixel at a time into a module matrix and put through a real QR decoder with genuine Reed–Solomon error correction. If the data that comes out is the data that went in, it scans. The warnings underneath cover what a decode cannot see: contrast, quiet zone and printed size, all of which matter to a camera in bad light and not at all to perfect pixels.
Can I create a WiFi QR code?
Yes. Enter the network name, the password and the security type, and scanning it offers to join the network without anyone typing anything. Semicolons, colons, commas and quotes in the password are escaped for you — an unescaped one is the usual reason a WiFi code appears to work and then fails to connect, because the scanner reads the password as ending early.
Which WiFi security type should I choose?
WPA covers WPA, WPA2 and WPA3, which is nearly every network made this century. WEP is there for genuinely old equipment and comes with a warning: it has been broken since 2001 and many current devices refuse to join a WEP network at all. Open is for networks with no password, and the password field is ignored.
Can I create a UPI payment QR code?
Yes. Enter a UPI ID, optionally a payee name, amount and note, and it produces a upi://pay link that Google Pay, PhonePe, Paytm and BHIM all recognise. Leaving the amount empty lets the payer type it, which is what a shop counter usually wants. Check the UPI ID against your own app before printing anything — nothing here can verify it, and a payment code with a typo sends money to a stranger.
Can I create a cryptocurrency QR code?
Yes, for Bitcoin, Ethereum, Solana and USDT. Each chain has its own URI scheme and this uses the right one — BIP-21 for Bitcoin, an amount as `value` for Ethereum. USDT is the exception and gets a bare address, because USDT exists on a dozen networks and its address alone does not say which; a URI naming one would send funds to the wrong chain. Verify every address in your own wallet before you print it. Nothing here talks to any chain.
What is a vCard QR code?
A contact card. Scanning it offers to save the name, company, phone, email, website and address straight to the phone's address book, which is what makes it the most useful thing to put on a business card. Commas and semicolons in the fields are escaped, because both are structural in the vCard format and an unescaped comma in a company name splits it into two fields.
What size should my QR code be?
The usual rule of thumb is a tenth of the scanning distance: a code read from a metre away wants to be about 10 cm across. Below about 2 cm printed, most phones struggle regardless of resolution. In pixels, aim for at least three or four pixels per module — the panel shows you how many you have at the current size, and warns when it drops too low.
Which download format should I use?
SVG for anything going to print or into a design tool: it is vector, so it scales to a billboard with no loss. PNG for the web and for anywhere transparency matters. WebP for the smallest file that still has transparency. JPEG only if something demands it — it has no alpha channel, so a transparent background gets flattened, and its compression puts soft halos around the module edges. PDF goes through your browser's print dialog, which produces a real vector page.
What do Standard, HD and Print quality do?
They multiply the pixel dimensions by one, two and four. Standard is the size you chose, which suits a screen. HD suits a retina display or a small print. Print gives you enough resolution that a code placed at 300 dpi still has crisp module edges. It makes no difference to SVG, which has no pixels to multiply.
Can I use custom colours?
Yes — foreground, background and the three corner eyes separately, plus a transparent background. What matters is contrast: a scanner works from a camera image in poor light and needs far more separation than a screen does. Aim for a ratio of 7:1 or better, keep the modules darker than the background, and check the panel — it measures the ratio and says when it is marginal.
Can I invert the colours — light code on a dark background?
You can, and it is legal. A good many scanners still refuse it, because the specification describes dark modules on a light background and plenty of implementations took that literally. The tool warns when the foreground is lighter than the background. If the design demands it, test on more than one phone before committing to print.
What are the different module shapes for?
Appearance, and they cost a little reliability. Square fills each cell completely and is the most robust. Rounded is nearly as good. Dots, circular and diamond shrink the mark inside its cell, which leaves gaps between neighbouring modules — it looks softer and gives a camera slightly less to work with, especially in print. The check will still tell you whether the result reads.
Why can't the corner squares be changed more?
Because they are how a scanner finds the code at all. A reader looks for three concentric squares with a 1:1:3:1:1 ratio of dark to light, and those proportions are what identifies a QR code in a camera frame full of other things. The eye styles here change the corner radius and never the proportions, which is the difference between a styled code and one that quietly stops being found.
What is the quiet zone and why does it matter?
The blank border around the symbol. The specification asks for four modules, and it is not decoration: it is what tells a scanner where the code stops and the rest of the world starts. Cropping it — putting a code hard against a box edge, or against a busy photograph — is the single most common reason a printed QR code fails, and it fails after ten thousand have been printed.
How much data can a QR code hold?
At the very largest size and the weakest correction, 7,089 digits, 4,296 letters and digits, or 2,953 bytes of arbitrary text. In practice much less is a good idea: more data means more modules, smaller modules at the same physical size, and a harder scan. A long URL is better shortened, and a paragraph is better linked to.
Does it handle non-English text?
Yes. Anything outside the digits-and-capitals set is encoded as UTF-8 in byte mode, which is what every modern scanner assumes and what makes accents, Cyrillic, Arabic, Japanese and emoji all come out the other side intact. Plain digits and plain uppercase get denser encodings automatically, which is why a phone number produces a much smaller code than the same number of letters would.
Can I copy the code instead of downloading it?
Three ways: the image to your clipboard as a PNG, the SVG markup as text to paste into a design tool or a page, and the raw data the code holds — useful for checking exactly what a scanner will see, or for pasting into something else.
Are there keyboard shortcuts?
Ctrl/Cmd+Shift+C copies the image, Ctrl/Cmd+Shift+D downloads it in the chosen format, Ctrl/Cmd+Shift+Delete resets everything, and Ctrl/Cmd+F searches the types and templates. There is no generate shortcut that does anything, because the code is rebuilt as you type.
Does it work offline?
Once the page has loaded, yes. Everything runs locally — the encoder, the renderer, the decoder that checks it and the export. A connection is only needed to load the page the first time.
Keep going
Tools that pair with this one
Same engine, same privacy model — everything below runs in your browser too.