QR code generator
Turn a link, Wi-Fi login, contact or message into a scannable code. Static codes never expire, never track scans and work offline.
A QR code is a grid of black and white squares that a camera reads as text. These four things decide whether it works on a poster, a menu or a screen.
Every QR code has the same fixed landmarks around its data. Your phone finds these first, then reads the rest. Pick a part to see where it lives in this real code for fileformer.com.
A QR code can store text in three main modes, and each packs characters differently. Digits only take 10 bits per 3 digits. Upper-case letters, digits and nine symbols take 11 bits per pair. Anything else is UTF-8 at 8 bits a byte. This is the exact bit stream for the content in the generator above, using the most compact mode that fits it. It also shows the smallest code version that can hold it at each error-correction level.
The data bytes are treated as the coefficients of a polynomial, then divided by a fixed generator polynomial using arithmetic in the finite field GF(256). The remainder becomes the error-correction bytes. Type up to 17 characters for the smallest code, version 1, and pick a level. Your browser does the division, then lets you damage bytes and checks whether the reader would notice.
The camera app recognises the format of the text inside and offers the right action. Built into iOS and Android: no scanner app needed.
https://…plain textWIFI:T:WPA;S:name;P:pass;;mailto:…?subject=…tel:+44…SMSTO:number:messageBEGIN:VCARD … END:VCARDgeo:lat,lng“Dynamic” QR services put their own short link in the code and redirect it. That's handy, until the subscription lapses and every printed code stops working.
Capacities for versions 1 to 10, computed from the data codeword counts in ISO/IEC 18004. Version 40, the largest at 177 × 177, holds 2,953 bytes at level L. Below that are the payload formats phone cameras recognise and act on.
https://fileformer.comOpened in the browser. Phones show the domain first so you can check it.WIFI:T:WPA;S:Cafe;P:latte42;H:false;;Joins the network. Escape \ ; , : and " in the name and password with a backslash.BEGIN:VCARDVERSION:3.0FN:Ana RuizTEL:+44…END:VCARDOffered as a new contact. MECARD:N:Ruiz,Ana;TEL:…;; is a shorter Japanese format.mailto:hello@example.com?subject=HiOpens a draft. Spaces in the subject must be %20.tel:+442079460958 · SMSTO:+44…:HelloDials, or opens a text message with the body filled in.geo:51.5074,-0.1278Opens the maps app at the point. RFC 5870 defines the format.BEGIN:VEVENTSUMMARY:LaunchDTSTART:20261015T090000ZEND:VEVENTOffered as an event to add.https://apps.apple.com/app/id…Store links open directly in the App Store or Google Play.00013.33 bits per digit0 to 9 only. Three digits in 10 bits.00105.5 bits per character0-9, A: Z, space and $ % * + − . / : upper case only, so URLs typed in capitals pack tighter.01008 bits per byteAny data. Text is normally UTF-8; old readers assumed ISO-8859-1 unless an ECI header said otherwise.100013 bits per characterShift JIS double-byte characters, packed into 13 bits each.