# UseQR — full agent surface Free forever. Keyless. No signup, no watermark, no limits. MIT source: https://github.com/rajkaria/useqr ## Generic generate GET https://useqr.app/api/v1/qr Required: data (aliases: text, content, url, q) Optional: size|width (64-4096, default 512) · format|type (png default, svg, json = module matrix, base64 = data URI) · color|fg (hex) · bg|light (hex or "transparent") · style|dots (square, rounded, dot, diamond, star, vertical-bars, horizontal-bars, organic) · eye (square, rounded, circle, leaf, diamond) · ec (L M Q H) · margin|quiet (0-10 modules, default 4) Deterministic → responses are cache-forever. Errors are application/problem+json with a "fix" field containing a corrected copy-pasteable call. Examples: curl "https://useqr.app/api/v1/qr?data=hello&size=512" -o qr.png curl "https://useqr.app/api/v1/qr?text=hello&format=svg" # alias + svg curl "https://useqr.app/api/v1/qr?data=hello&format=json" # matrix of 0/1 Google Sheets: =IMAGE("https://useqr.app/api/v1/qr?data="&ENCODEURL(A2)) ## Typed endpoints (same builders as the web UI; style params above work too) - GET https://useqr.app/api/v1/url?url=&utm_source=&utm_medium=&utm_campaign=&utm_term=&utm_content=&utm_id= Example: https://useqr.app/api/v1/url?url=example.com&utm_source=poster&utm_medium=qr - GET https://useqr.app/api/v1/text?text= Example: https://useqr.app/api/v1/text?text=hello - GET https://useqr.app/api/v1/wifi?ssid=&password=&security=&hidden= Example: https://useqr.app/api/v1/wifi?ssid=CafeGuest&password=espresso&security=WPA - GET https://useqr.app/api/v1/vcard?fn=&ln=&org=&title=&phone=&phone2=&email=&url=&street=&city=®ion=&zip=&country=¬e=&version= Example: https://useqr.app/api/v1/vcard?fn=Asha&ln=Rao&phone=%2B919876543210&email=asha%40example.com - GET https://useqr.app/api/v1/mecard?fn=&ln=&phone=&email=&url=¬e= Example: https://useqr.app/api/v1/mecard?fn=Asha&ln=Rao&phone=%2B919876543210 - GET https://useqr.app/api/v1/email?to=&subject=&body=&cc= Example: https://useqr.app/api/v1/email?to=hi%40example.com&subject=Hello - GET https://useqr.app/api/v1/phone?number= Example: https://useqr.app/api/v1/phone?number=%2B14155550123 - GET https://useqr.app/api/v1/sms?number=&message= Example: https://useqr.app/api/v1/sms?number=%2B14155550123&message=Hi - GET https://useqr.app/api/v1/whatsapp?number=&message= Example: https://useqr.app/api/v1/whatsapp?number=919876543210&message=Hi - GET https://useqr.app/api/v1/telegram?username= Example: https://useqr.app/api/v1/telegram?username=durov - GET https://useqr.app/api/v1/event?title=&start=&end=&location=&description=&allday=&reminder= Example: https://useqr.app/api/v1/event?title=Launch&start=2026-09-01T18:00:00%2B05:30 - GET https://useqr.app/api/v1/geo?lat=&lng= Example: https://useqr.app/api/v1/geo?lat=19.076&lng=72.8777 - GET https://useqr.app/api/v1/upi?pa=&pn=&am=&tn=&mc=&tr= Example: https://useqr.app/api/v1/upi?pa=shop%40okhdfcbank&pn=Sharma%20Store&am=499.00 - GET https://useqr.app/api/v1/paypal?user=&amount= Example: https://useqr.app/api/v1/paypal?user=ashadesigns&amount=25.00 - GET https://useqr.app/api/v1/bitcoin?address=&amount=&label=&message= Example: https://useqr.app/api/v1/bitcoin?address=bc1q...&amount=0.001 - GET https://useqr.app/api/v1/ethereum?address=&chain=&value= Example: https://useqr.app/api/v1/ethereum?address=0x...&chain=1 - GET https://useqr.app/api/v1/pix?key=&name=&city=&amount=&txid= Example: https://useqr.app/api/v1/pix?key=a%40b.com&name=Loja&city=SaoPaulo - GET https://useqr.app/api/v1/epc?name=&iban=&amount=&bic=&remittance= Example: https://useqr.app/api/v1/epc?name=ACME&iban=DE89370400440532013000&amount=100 - GET https://useqr.app/api/v1/social?ig=&x=&li=&yt=&tt=&gh=&fb=&web= Example: https://useqr.app/api/v1/social?ig=useqr&gh=useqr - GET https://useqr.app/api/v1/app-download?ios=&android=&fallback= Example: https://useqr.app/api/v1/app-download?ios=https://apps.apple.com/...&android=https://play.google.com/... - GET https://useqr.app/api/v1/google-review?placeid= Example: https://useqr.app/api/v1/google-review?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4 - GET https://useqr.app/api/v1/menu?url=&utm_source=&utm_medium=&utm_campaign=&utm_term=&utm_content=&utm_id= Example: https://useqr.app/api/v1/menu?url=example.com/menu.pdf - GET https://useqr.app/api/v1/feedback?url=&utm_source=&utm_medium=&utm_campaign=&utm_term=&utm_content=&utm_id= Example: https://useqr.app/api/v1/feedback?url=forms.gle/abc - GET https://useqr.app/api/v1/pdf?url=&utm_source=&utm_medium=&utm_campaign=&utm_term=&utm_content=&utm_id= Example: https://useqr.app/api/v1/pdf?url=example.com/manual.pdf - GET https://useqr.app/api/v1/coupon?code=&url=&utm_source=&utm_medium=&utm_campaign=&utm_term=&utm_content=&utm_id= Example: https://useqr.app/api/v1/coupon?code=SAVE20 - GET https://useqr.app/api/v1/litecoin?address=&amount=&label=&message= Example: https://useqr.app/api/v1/litecoin?address=LcHKX9RQ7EmuALKweCkSTZ1zqFRHvJnDvL&amount=1.5 - GET https://useqr.app/api/v1/bitcoin-cash?address=&amount=&label=&message= Example: https://useqr.app/api/v1/bitcoin-cash?address=qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a - GET https://useqr.app/api/v1/dogecoin?address=&amount=&label=&message= Example: https://useqr.app/api/v1/dogecoin?address=DH5yaieqoZN36fDVciNyRueRGvGLR3mr7L&amount=100 - GET https://useqr.app/api/v1/crypto?chain=&scheme=&address=&amount=&label=&message= Example: https://useqr.app/api/v1/crypto?chain=dash&address=XnZfEsGeJhVRhJpuLYUvbeCHNCcvxqoMTh - GET https://useqr.app/api/v1/json?json= Example: https://useqr.app/api/v1/json?json=%7B%22a%22%3A1%7D - GET https://useqr.app/api/v1/base64?text=&b64= Example: https://useqr.app/api/v1/base64?text=hello - GET https://useqr.app/api/v1/ssh?url= Example: https://useqr.app/api/v1/ssh?url=git%40github.com%3Auser%2Frepo.git ## Batch POST https://useqr.app/api/v1/qr/batch Body: {"items":[{"data":"one"},{"data":"two","format":"svg","size":512}]} (≤100) Returns per-item base64 PNGs or SVG strings, with per-item errors. ## Decode GET https://useqr.app/api/v1/decode?url=https%3A%2F%2Fexample.com%2Fqr.png POST https://useqr.app/api/v1/decode with raw image bytes, multipart "file", or {"url":…} Returns every QR code found: {count, codes:[{text, format}]}. ## Verify (the loop that makes styling safe) GET https://useqr.app/api/v1/verify?data=hello&color=333333&style=dot Renders, rasterizes, and decodes with zxing. Returns {scannable, decoded, matchesInput, version, ecLevel, contrast, issues[]} — issues are actionable. ## MCP server Streamable HTTP, stateless, no auth: https://useqr.app/api/mcp claude mcp add --transport http useqr https://useqr.app/api/mcp Claude Desktop config: {"mcpServers":{"useqr":{"type":"http","url":"https://useqr.app/api/mcp"}}} ### qr_generate Generate a QR code from any string (URL, text, or a pre-built payload). Returns the image plus a stable hosted URL you can embed. Use qr_generate_typed instead when the user wants WiFi, vCard, UPI, calendar, or another structured type — it handles the encoding rules. Free, keyless, no signup. ### qr_generate_typed Generate a structured QR code (wifi, vcard, upi, event, whatsapp, sms, email, geo, pix, epc, and more) from typed fields — escaping and format rules are handled for you. Example: type='wifi', fields={ssid:'CafeGuest', password:'espresso', security:'WPA'}. Field names per type: wifi(ssid,password,security,hidden) vcard(fn,ln,org,title,phone,email,url) upi(pa,pn,am,tn) event(title,start,end,location) whatsapp(number,message) sms(number,message) email(to,subject,body) geo(lat,lng) pix(key,name,city,amount) epc(name,iban,amount) telegram(username) paypal(user,amount) bitcoin(address,amount) ethereum(address,chain). ### qr_decode Read the QR code(s) in an image. Provide either a public image URL or base64-encoded image bytes. Returns the decoded text of every code found. ### qr_verify Verify that a QR code design actually scans: renders it, rasterizes it, and reads it back with a real decoder. Returns a report with scannability, contrast, and concrete fixes. Always use this before telling a user their styled code is ready to print. ### qr_batch Generate up to 1000 QR codes in one call. Each item is either {data:'…'} or {type:'wifi', fields:{…}} using the same typed builders as qr_generate_typed. A shared `style` applies to every item and each item may override it. Returns hosted URLs (paste those into documents — they render forever and cost nothing) plus the exact encoded payload per item. Give items an `id` when you need to match results back to your data. ### qr_size_recommend Recommend the minimum printed size for a QR code given the scanning distance. Input distance_cm (how far away people scan from) and optionally the data (longer data needs larger prints). Returns mm/cm/inches plus print guidance. ## Web pages (URL-as-state — compose links with form + style params) Form fields are query params documented per page; style params: style, eye, fg, bg (hex or "t"), eyefg, ballfg, ec, qz, label, labelbg. Template deep links: ?tpl= (see https://useqr.app/templates). - https://useqr.app/url — Free URL QR Code Generator - https://useqr.app/text — Free Text QR Code Generator - https://useqr.app/email — Free Email QR Code Generator - https://useqr.app/phone — Free Phone QR Code Generator - https://useqr.app/sms — Free SMS QR Code Generator - https://useqr.app/vcard — Free vCard QR Code Generator - https://useqr.app/mecard — Free MeCard QR Code Generator - https://useqr.app/whatsapp — Free WhatsApp QR Code Generator - https://useqr.app/telegram — Free Telegram QR Code Generator - https://useqr.app/social — Free Social Media QR Code Generator - https://useqr.app/wifi — Free WiFi QR Code Generator - https://useqr.app/calendar — Free Calendar Event QR Code Generator - https://useqr.app/location — Free Location QR Code Generator - https://useqr.app/app-download — Free App Download QR Code Generator - https://useqr.app/upi — Free UPI QR Code Generator - https://useqr.app/paypal — Free PayPal QR Code Generator - https://useqr.app/bitcoin — Free Bitcoin QR Code Generator - https://useqr.app/ethereum — Free Ethereum QR Code Generator - https://useqr.app/litecoin — Free Litecoin QR Code Generator - https://useqr.app/bitcoin-cash — Free Bitcoin Cash QR Code Generator - https://useqr.app/dogecoin — Free Dogecoin QR Code Generator - https://useqr.app/crypto — Free Crypto Payment QR Code Generator - https://useqr.app/pix — Free PIX QR Code Generator - https://useqr.app/epc — Free EPC QR Code Generator - https://useqr.app/google-review — Free Google Review QR Code Generator - https://useqr.app/menu — Free Menu QR Code Generator - https://useqr.app/feedback — Free Feedback QR Code Generator - https://useqr.app/coupon — Free Coupon QR Code Generator - https://useqr.app/pdf — Free PDF QR Code Generator - https://useqr.app/json — Free JSON QR Code Generator - https://useqr.app/base64 — Free Base64 QR Code Generator - https://useqr.app/ssh — Free SSH & Git URL QR Code Generator - https://useqr.app/scan — decode from image or camera (client-side) - https://useqr.app/validate — scannability stress-test with a 0-100 score - https://useqr.app/size-calculator — distance → minimum print size - https://useqr.app/compare — do two codes encode the same data - https://useqr.app/bulk — CSV → ZIP of verified codes (client-side) - https://useqr.app/wifi-card — printable WiFi card - https://useqr.app/sticker-sheet — Avery label sheets - https://useqr.app/templates — 58 ready-made use-case templates ## Promises No accounts. No tracking. Static generation never touches a server. Dynamic QR (editable destinations) is intentionally not offered yet — it requires an abuse-screening stack we won't ship half-built. ## Documentation index — every page, with its direct answer Each page is also served as plain markdown at {path}.md. Fetch that for the full text of any entry below. ### Are QR codes dead? https://useqr.app/docs/basics/are-qr-codes-dead.md No. "QR codes are dead" was a reasonable claim in 2012, when scanning required a separate app and codes led to desktop websites. iOS 11 added native camera scanning in September 2017, Android followed, and QR payments now move billions of transactions a month. The format outlived its obituaries. ### Are QR codes patented and free to use? https://useqr.app/docs/basics/are-qr-codes-patented-and-free-to-use.md Yes, QR codes are free to use. Denso Wave holds the original patents but publicly declared it would not enforce them for codes following the standard, and the foundational 1994 patents have since expired in any case. The name "QR Code" remains a registered trademark; the format itself costs nothing. ### Are QR codes still relevant? https://useqr.app/docs/basics/are-qr-codes-still-relevant.md Yes, and more so than during the pandemic peak. The difference is that usage has shifted from menus to payments, packaging and identity: UPI in India and PIX in Brazil now process billions of QR payments a month, and retail is standardising on 2D codes for point of sale by 2027. ### Do QR codes cost money? https://useqr.app/docs/basics/do-qr-codes-cost-money.md Generating a QR code costs nothing. The format is an open standard with no licence fee, and static codes can be produced free forever with no signup. Money enters with dynamic codes - editable redirects and scan analytics run on subscriptions typically billed monthly - plus design tools, printing and hardware scanners. ### Do QR codes expire? https://useqr.app/docs/basics/do-qr-codes-expire.md A static QR code never expires — the destination is encoded in the pattern, so nothing has to keep running. A dynamic QR code expires when the provider's subscription lapses or the company shuts down, which is the single biggest risk in printed QR work. ### FrameQR — a reserved canvas instead of a buried logo https://useqr.app/docs/basics/frame-qr.md FrameQR is a Denso Wave format that reserves a canvas area inside the code for a logo or picture at generation time, instead of hiding a logo under error correction as ordinary QR design does. Generation and reliable reading both go through Denso Wave software, which limits it to controlled deployments. ### The history of QR codes https://useqr.app/docs/basics/history-of-qr-codes.md QR codes were invented in 1994 by a team led by Masahiro Hara at Denso Wave, a Toyota subsidiary, to track car parts faster than barcodes allowed. Denso Wave patented the format and then declined to enforce the patents, which is why the format became universal. ### How do QR codes work? https://useqr.app/docs/basics/how-do-qr-codes-work.md A scanner finds the three corner squares, works out the code's grid and orientation, samples every cell as black or white, reads the format bits to learn the mask and error-correction level, un-masks the data, corrects errors with Reed–Solomon, and reassembles the original text. ### How many people scan QR codes? https://useqr.app/docs/basics/how-many-people-scan-qr-codes.md No reliable global figure exists. Static QR codes are decoded entirely on the phone, so a scan leaves no record anywhere unless the person opens the link. The trustworthy large-scale numbers are payment networks' own counts - UPI alone reports over ten billion transactions a month - everything else is extrapolation from vendor samples. ### iQR codes — Denso Wave's high-capacity proprietary variant https://useqr.app/docs/basics/iqr-code.md iQR is a proprietary Denso Wave format, not part of ISO/IEC 18004. It comes in square and rectangular versions, packs about 80% more data than a QR code of the same size, and reaches roughly 40,000 numeric characters - but only Denso-compatible industrial readers decode it, so phones cannot. ### Micro QR codes — the small variant and its big trap https://useqr.app/docs/basics/micro-qr-code.md Micro QR is the small-format variant of the QR standard - four sizes from 11 x 11 to 17 x 17 modules, one finder pattern instead of three, a two-module quiet zone, and a ceiling of 35 numeric characters. Industrial scanners read it reliably; most phone cameras do not, so never use it for consumers. ### Model 1 vs Model 2 QR codes https://useqr.app/docs/basics/model-1-vs-model-2-qr.md Model 1 is the original 1994 QR code, topping out at version 14 (73 x 73 modules) with no alignment patterns. Model 2 added alignment patterns and extends to version 40 (177 x 177). Every QR code you meet today is Model 2, which is what ISO/IEC 18004 standardises; generators simply call it "QR code". ### QR code adoption statistics — what is actually known https://useqr.app/docs/basics/qr-code-adoption-statistics.md Treat most QR statistics with suspicion, because they come from dynamic-QR vendors measuring only their own codes. The verifiable anchors are structural. Every iPhone and Android phone has scanned natively since 2017-2018, India's UPI passed 10 billion transactions a month in 2023, and retail point of sale standardises on 2D codes under GS1 Sunrise 2027. ### QR code benefits and drawbacks https://useqr.app/docs/basics/qr-code-benefits-and-drawbacks.md QR codes are free to generate, readable by any modern phone camera, hold up to 2,953 bytes and survive up to 30% damage. Against that, they need a smartphone, printed codes cannot be edited, destinations can die, and fake codes are easy to plant. Weigh both before printing. ### QR code licensing and trademark — what you must credit https://useqr.app/docs/basics/qr-code-licensing-and-trademark.md You need no licence to make, print or scan standard QR codes. "QR Code" is a registered trademark of Denso Wave, which asks publications and products using the term to carry the credit "QR Code is a registered trademark of DENSO WAVE INCORPORATED". The proprietary variants SQRC, FrameQR and iQR are separately licensed. ### ISO/IEC 18004 — the QR code standard explained https://useqr.app/docs/basics/qr-code-standards-iso-18004.md ISO/IEC 18004 is the international standard defining the QR code symbology - encoding modes, error correction, masking and all forty symbol versions. It has run through four editions, in 2000, 2006, 2015 and 2024. It deliberately says nothing about payloads; URLs, WiFi strings and vCards are conventions layered on top. ### QR code vs Aztec code https://useqr.app/docs/basics/qr-code-vs-aztec.md Aztec codes place their finder bullseye in the centre and need no quiet zone, which suits cramped tickets - airline boarding passes under the IATA BCBP standard and many rail tickets use Aztec. QR codes need a four-module margin but hold more data and are read natively by every phone camera. ### QR code vs barcode https://useqr.app/docs/basics/qr-code-vs-barcode.md A traditional barcode stores about 20 characters in one dimension and must be scanned in roughly the right orientation. A QR code stores up to 2,953 bytes in two dimensions, reads at any angle, and survives up to 30% damage. Retail is now migrating from one to the other. ### QR code vs Data Matrix https://useqr.app/docs/basics/qr-code-vs-datamatrix.md QR and Data Matrix are both 2D matrix codes with Reed-Solomon error correction. Data Matrix marks smaller - a 10 x 10 symbol with a one-module quiet zone - which is why pharma serialisation and PCB marking use it. QR holds more, 2,953 versus 1,556 bytes, and every phone camera reads it natively. ### QR code vs MaxiCode https://useqr.app/docs/basics/qr-code-vs-maxicode.md MaxiCode is a fixed-size 2D code - about 25 x 25 mm, 866 hexagonal modules around a central bullseye - designed by UPS in 1992 for high-speed parcel sortation. It holds roughly 93 characters. Unless you are printing UPS shipping labels you will never need one; use a QR code. ### QR code vs NFC https://useqr.app/docs/basics/qr-code-vs-nfc.md A QR code is printed and costs nothing per item; NFC needs a chip in every object and costs cents to dollars each. NFC is faster and needs no camera, but only works at a couple of centimetres and not on every phone. For most public-facing uses, QR wins on cost and reach. ### QR code vs PDF417 https://useqr.app/docs/basics/qr-code-vs-pdf417.md PDF417 is a stacked linear barcode from 1991 - wide, ribbon-shaped and readable by laser scanners, which is why US driving licences under AAMVA rules and printed boarding passes still carry it. A QR code stores the same data in a fraction of the area and any phone camera can read it. ### QR code vs short link https://useqr.app/docs/basics/qr-code-vs-short-link.md Use a QR code when the reader holds a camera, and a short link when they must type or remember the address. They combine well. A 25-character URL fits a 25 x 25 module QR code, while an 80-character URL forces 37 x 37 - finer modules that are harder to scan at the same printed size. ### QR codes after COVID — what stuck and what receded https://useqr.app/docs/basics/qr-codes-after-covid.md The pandemic made scanning a habit. Menus, check-ins and vaccine certificates put a QR code in front of nearly everyone between 2020 and 2021. Check-in systems vanished with the emergency, PDF menus receded on merit, and what stuck was payments, ticketing and packaging - uses that were growing anyway. ### QR codes around the world — one symbol, many dialects https://useqr.app/docs/basics/qr-codes-around-the-world.md The symbol is identical worldwide; the payload is not. India's UPI, Brazil's PIX, China's WeChat Pay and Alipay, Southeast Asia's EMVCo national schemes and Europe's EPC transfer format all put different data inside the same square. Knowing which ecosystem your audience lives in decides which QR code to generate. ### rMQR — the rectangular Micro QR code https://useqr.app/docs/basics/rmqr-rectangular-micro-qr.md rMQR is a rectangular QR variant standardised as ISO/IEC 23941 in 2022. Its 32 sizes run from 7 to 17 modules tall and 27 to 139 wide, holding up to 361 alphanumeric characters or 219 bytes. It suits shelf edges and cable labels, but phone cameras largely cannot read it yet. ### SQRC — the QR code with a private compartment https://useqr.app/docs/basics/sqrc-secure-qr.md SQRC is a Denso Wave format that splits a code into public data any scanner can read and a private part readable only by readers holding a matching key. The symbol looks like an ordinary QR code. It suits access control with dedicated hardware; it is not encryption for public campaigns. ### Static vs dynamic QR codes https://useqr.app/docs/basics/static-vs-dynamic-qr-codes.md A static QR code contains its destination directly, so it never expires and cannot be tracked or edited. A dynamic code contains a short link that redirects through a provider, making it editable and trackable — and dependent on that provider staying online and paid. ### The economics of free QR code generators https://useqr.app/docs/basics/the-economics-of-free-qr-code-generators.md A static QR code is pure client-side maths, so serving a generator costs close to nothing - which is why so many free ones exist. The expensive part is dynamic infrastructure, meaning redirects, analytics and account systems. Most "free" generators are funnels for that subscription; UseQR simply is not one. ### What is a QR code? https://useqr.app/docs/basics/what-is-a-qr-code.md A QR code is a two-dimensional barcode that stores data as a grid of black and white squares. A camera reads the pattern and recovers the original text — usually a web address. It was invented in 1994 by Denso Wave to track car parts, and the format is free for anyone to use. ### When not to use a QR code https://useqr.app/docs/basics/when-not-to-use-a-qr-code.md Do not use a QR code where the audience is moving, where a tappable link already exists, where it would be the only route to essential information, or where the code cannot be printed at least a tenth of the viewing distance. In those cases it is decoration at best. ### Who invented the QR code? https://useqr.app/docs/basics/who-invented-the-qr-code.md The QR code was invented in 1994 by Masahiro Hara, an engineer at Denso, the Toyota Group components maker in Japan. Hara led a two-person development team and has said the idea of a two-dimensional grid came from Go, the board game he played at lunchtime. ### Who pays when a QR code is free? https://useqr.app/docs/basics/who-pays-when-a-qr-code-is-free.md Someone always covers the cost. With free QR generators the payer is usually you, later - through subscription upsells, expiring redirects, watermarks, adverts or your data. You can identify the model in thirty seconds by decoding your own code and checking whether it points at your URL or the generator's redirect domain. ### Why QR codes took off in Asia first https://useqr.app/docs/basics/why-qr-took-off-in-asia-first.md Japan had phones that scanned QR codes by 2002 - Sharp's J-SH09 shipped a reader a full fifteen years before iPhones scanned natively - and the format's kanji mode suited Japanese text. China then made QR the interface for payments through WeChat Pay and Alipay. The West waited for 2017's native cameras. ### Why use a QR code? https://useqr.app/docs/basics/why-use-qr-codes.md A QR code is worth using when it removes typing at a moment when typing is the obstacle: joining WiFi, paying at a counter, opening a menu, saving a contact. It is not worth using where a tappable link already exists, or where the audience is moving. ### Accessible QR code design https://useqr.app/docs/design/accessible-qr-code-design.md Accessible QR design means never making the code the only path — pair it with a visible short URL, give digital codes real alt text, mount physical codes 1.2 to 1.4 metres high within reach ranges, and size generously beyond the 10:1 rule. QR contrast is luminance-based, so codes meeting the 40-point rule are inherently colourblind-safe. ### Animated QR codes https://useqr.app/docs/design/animated-qr-codes.md An animated QR code is safe when every single frame decodes to the same payload on its own. Animate colours, module shapes or the background — never the data, and never leave a mid-transition frame that breaks modules. Export as GIF, APNG or video, and decode a sample of frames before publishing. ### Artistic and AI-generated QR codes https://useqr.app/docs/design/artistic-and-ai-generated-qr-codes.md AI art QR codes work by conditioning image generation on the code matrix so each module's centre keeps roughly the right luminance while the artwork flows around it. They can look striking, and they fail far more often than plain codes. Use them where art is the point, never where the scan matters. ### Brand colour QR codes that still scan https://useqr.app/docs/design/brand-color-qr-codes-that-still-scan.md Take the brand hex, compute its luminance, and check the difference against white — 40 points is the floor, 60 the safe target. If the swatch fails, darken that hue for the modules only and keep the exact colour in the surrounding artwork. Colour the modules, never the background, and keep the eyes darkest. ### Custom QR code eye shapes — what survives detection https://useqr.app/docs/design/custom-eye-shapes.md Eye shapes can be restyled as long as each finder pattern stays a solid concentric dark-light-dark structure preserving the 1:1:3:1:1 scanline ratio. Square and rounded are safest, circles preserve the ratio through their centres, and leaf and diamond carry slightly more risk at angles and small sizes. ### Does "scan me" text increase scans — the honest answer https://useqr.app/docs/design/does-scan-me-text-increase-scans.md There is no rigorous public dataset proving how much a "scan me" label increases QR scans — vendor figures are unpublished and unverifiable. The mechanism is plausible, since a label that names the destination reduces hesitation. The reliable path is a two-code test with distinct UTM parameters on your own audience. ### Dot-style QR codes — how far circles can go https://useqr.app/docs/design/dot-style-qr-codes.md Dot-style QR codes draw each module as a circle at about 84% of the cell width, keeping roughly 55% of the ink — enough for decoders that sample module centres, but the first style to fail as codes get denser or smaller. Keep the version low, the print generous, and the finder eyes solid. ### Gradient QR codes that still scan https://useqr.app/docs/design/gradient-qr-codes.md A gradient QR code scans reliably when every stop of the gradient — especially the lightest — keeps at least a 40 percentage-point luminance difference against the background. Apply the gradient to the modules only, keep the background solid and light, and decode the finished render to prove the weakest point still reads. ### Halftone QR codes https://useqr.app/docs/design/halftone-qr-codes.md A halftone QR code subdivides each module into a 3×3 grid, keeps the centre subcell at the module's true dark or light value, and lets the outer subcells carry a photograph's tones. Decoders sample module centres, so the code still reads while the texture shows the image. Margin drops, so verify on real phones. ### Inverted QR codes — the card pattern for dark designs https://useqr.app/docs/design/inverted-qr-codes.md True inversion — light modules on a dark background — fails on many scanners and should be a last resort. When the design around a code is dark, keep the code itself dark-on-light and place it on a solid light panel that contains the full four-module quiet zone, with the panel's corner radius kept smaller than the quiet zone. ### Logo size limits by error-correction level https://useqr.app/docs/design/logo-size-limits-by-error-correction-level.md Error correction level sets the logo budget — L tolerates 7% damage and allows no logo, M around 15% allows roughly 10% coverage, Q around 25% allows 18%, and H around 30% allows about 20%. Stay under the ceiling because print damage and camera angle spend the same budget as the logo. ### Minimum on-screen duration for a QR code https://useqr.app/docs/design/minimum-on-screen-duration-for-a-qr-code.md A primed viewer needs about 8–12 seconds — 2–3 to unlock and open the camera, 2–3 to aim, 1–2 to focus, under 1 to decode, plus reaction time. Show a QR code for at least 15–20 seconds, or keep it persistently in a corner for the whole segment. ### Multiple QR codes on one page https://useqr.app/docs/design/multiple-qr-codes-on-one-page.md Default camera apps latch onto one code — usually the largest or most central — so codes competing in one field of view misfire. Separate codes by at least twice the quiet zone, label each with where it leads, and when the list grows past three or four, collapse them into one hub code. ### Organic and fluid QR styles — controlled merging https://useqr.app/docs/design/organic-and-fluid-qr-styles.md Organic QR styles are safe when they only join modules that are already dark neighbours — rounding free corners while keeping runs connected. They fail when styling bridges ink into cells that should be light, which changes sampled values. Verify every organic export by decoding it at final size, not by eye. ### Per-corner eye styling — three eyes, three looks https://useqr.app/docs/design/per-corner-eye-styling.md The three QR eyes can each carry a different shape or colour, because detection checks every finder pattern's 1:1:3:1:1 ratio individually rather than requiring the corners to match. Each corner must independently keep a solid ring, clear light gap and full contrast — replacing an eye's centre with a brand glyph is where per-corner styling breaks. ### Alt text and screen readers for QR codes https://useqr.app/docs/design/qr-code-alt-text-and-screen-readers.md Alt text for a QR code should state what scanning does and where it leads — "QR code linking to the dinner menu at example.com/menu" — never just "QR code". Pair every on-screen code with a clickable link or short URL, because a screen-reader user cannot aim a camera at their own display. ### QR code aspect ratio and padding https://useqr.app/docs/design/qr-code-aspect-and-padding.md A QR code is square by specification — any layout that stretches it distorts the decoder's grid geometry. Padding around it is the quiet zone, at least 4 modules on every side, scaling with the code rather than set in fixed pixels. In CSS, reserve a square box and never crop with object-fit cover. ### Choosing QR code colours that scan https://useqr.app/docs/design/qr-code-colors-that-scan.md Decoders threshold on luminance, not hue, so the rule is a luminance difference of at least 40% between modules and background, dark on light. Apply the brand colour to the modules and keep the background white — colouring the background is where most branded codes fail. ### QR code contrast — the 40% minimum, measured https://useqr.app/docs/design/qr-code-contrast-ratio-minimum.md A QR code needs a luminance difference of at least 40 percentage points between modules and background, with the modules darker. Luminance, not hue, is what decoders threshold on. Compute 0.2126R + 0.7152G + 0.0722B for each colour, subtract, and aim above 60 points for print and poor light. ### QR code design best practices — seven rules ranked https://useqr.app/docs/design/qr-code-design-best-practices.md Seven rules cover almost every design failure. Keep a 40% luminance difference with dark modules on light, preserve a four-module quiet zone, size the code at one tenth of scan distance, leave the three corner squares intact, cap logos near 20% at error correction H, style modules without merging them, and decode the finished artwork before printing. ### The QR code design checklist https://useqr.app/docs/design/qr-code-design-checklist.md Twelve checks before a QR code ships — payload correct and short, HTTPS, error-correction level chosen, contrast at least 40%, dark-on-light polarity, quiet zone 4 modules or more, logo under the coverage budget, size at least distance ÷ 10, vector export, no stretching or cropping, decode-verified, and a proof scanned from the final medium. ### Ten QR code design mistakes https://useqr.app/docs/design/qr-code-design-mistakes.md The ten commonest QR design mistakes are inverted colours, contrast under 40%, quiet zone under 4 modules, logo over the error-correction budget, code smaller than distance ÷ 10, stretched aspect, upscaled raster exports, busy backgrounds, missing labels, and never test-scanning the final artwork. Each violates a specific number, and each has a fix. ### QR code favicon and OG image tricks https://useqr.app/docs/design/qr-code-favicon-and-og-image-tricks.md A QR code in an Open Graph image works — at the standard 1200×630 px, give the code at least 300 px and it scans from another screen. A QR favicon cannot work: a version 1 code spans 29 modules including quiet zone, and 32 px leaves about one pixel per module, far below what any camera resolves. ### QR code frames and CTA labels, done safely https://useqr.app/docs/design/qr-code-frames-and-cta-labels.md A frame or label around a QR code is safe when it sits entirely outside the four-module quiet zone, and useful when it names what scanning does — "Scan for the menu" beats "Scan me". UseQR renders labels below the code via the label parameter, sized at 3.2 times the module by default. ### QR code grids and sheets https://useqr.app/docs/design/qr-code-grids-and-sheets.md When printing many QR codes on one sheet, give every cell its own quiet zone of at least 4 modules so the cutting knife can wander through the gutter without shaving readable margin. Generate the codes in bulk, lay them out to the label geometry, and decode a sample from the printed sheet. ### QR codes on a dark-mode website https://useqr.app/docs/design/qr-code-in-a-dark-mode-website.md Dark mode flips your page background, and a transparent-background QR code silently becomes light-on-dark — which many scanners refuse. Give every embedded code its own explicit light card, dark modules on a white rectangle that ignores the theme. If you swap colours per theme, swap both foreground and background so polarity stays dark-on-light. ### QR code module shapes compared — square to organic https://useqr.app/docs/design/qr-code-module-shapes-compared.md Module shapes are safe when each module keeps roughly 60% or more of its ink and neighbouring modules never merge into ambiguous blobs. Square is the 100% baseline, rounded keeps about 91% of the ink, dots about 55%, and the risk rises in that order — always decode the styled export before using it. ### Put a short URL next to every QR code https://useqr.app/docs/design/qr-code-next-to-a-short-url-fallback.md Print a short, readable URL directly under every QR code. It rescues users with broken cameras, screen-reader users, and anyone photographing the page for later, and it costs one line of type. Keep it under about 25 characters, lowercase, with no query strings — a URL nobody can retype is not a fallback. ### QR code on a busy background — diagnosis and the white-card rule https://useqr.app/docs/design/qr-code-on-a-busy-background.md A busy background breaks a QR code by collapsing contrast locally — the telltale symptom is inconsistency, scanning from some angles, phones or distances but not others. Confirm by testing the same code on plain white, then fix it with a solid light card carrying the full four-module quiet zone. ### Putting a QR code on video https://useqr.app/docs/design/qr-code-on-video.md A QR code burned into video must obey the 10:1 rule for the viewer's distance, not the screen's size. A viewer 3 m from a TV needs the code at least 30 cm wide on that screen — roughly a quarter of a 55-inch panel. Keep it in one fixed position for the whole time it is shown. ### QR code placement in a layout https://useqr.app/docs/design/qr-code-placement-in-a-layout.md Place print QR codes bottom-right, where Western reading order ends and calls to action are expected. Keep the code out of gutters, folds and spines, at least 10 mm from any trim edge or fold, and give each visual zone at most one code with a label saying where it leads. ### Typography pairing for QR codes https://useqr.app/docs/design/qr-code-typography-pairing.md Size the call-to-action label so its x-height is about 1.5–2 modules of the code it accompanies — then the text is readable at roughly the distance the code scans. Use a medium or bold weight, dark on light, set directly above or below the code, and never inside the quiet zone. ### Adding a logo to a QR code, safely https://useqr.app/docs/design/qr-code-with-logo-best-practices.md Keep the logo central, under about 20–25% of the code area, at error-correction level Q or H, on a solid light panel with two or three modules of clearance. Never let it touch a corner square, and verify by decoding the finished artwork. ### Designing QR codes for colourblind users https://useqr.app/docs/design/qr-codes-for-colorblind-users.md QR decoding is luminance-based, so colour vision deficiency does not stop anyone scanning a properly contrasted code. What fails colourblind users is the material around the code, red versus green framing, colour-only legends and low-contrast CTA labels. Keep a 40% luminance difference and label codes with text, not colour. ### QR codes on photos and textures https://useqr.app/docs/design/qr-codes-on-photos-and-textures.md A photo or texture behind a QR code varies in brightness module to module, so contrast must hold at the worst point — the darkest patch of the image behind the code must stay at least 40 luminance points above the modules. The reliable fix is a solid light backing card containing the full quiet zone. ### Rounded vs square QR modules — when rounding costs you https://useqr.app/docs/design/rounded-vs-square-modules.md Rounded modules are safe because decoders sample near module centres, which rounding never touches — a 0.32-module corner radius still keeps about 91% of the ink. Rounding only becomes a risk in tiny print, where the radius shrinks to a pixel or two and blur erodes the thinned corners of every module. ### Stable Diffusion QR codes — do they scan? https://useqr.app/docs/design/stable-diffusion-qr-codes-do-they-scan.md Sometimes, and not reliably. Diffusion models preserve the code's overall pattern but shift luminance locally, so some modules end up on the wrong side of the decoder's threshold. Expect a meaningful share of generations to fail on at least one phone. Test every output with a real decoder, several devices and both close and far distances. ### Transparent background QR codes — the moving floor https://useqr.app/docs/design/transparent-background-qr-codes.md A transparent-background QR code makes whatever ends up behind it the real background, so the 40-point contrast rule must be re-checked against each placement — a dark web theme or dark paper silently inverts the code. Use transparency for clean compositing onto light surfaces, and verify a screenshot of the final context. ### Why light-on-dark QR codes fail https://useqr.app/docs/design/why-light-on-dark-qr-codes-fail.md Most decoders binarise the image expecting dark modules on a light background, so an inverted code reads as its own negative. Support for inverted codes is inconsistent — Apple's camera tries both polarities, many Android cameras and embedded scanner libraries do not. Keep modules dark, or place the code on a light panel. ### Agent-safe API design https://useqr.app/docs/developers/agent-safe-api-design.md An agent-safe API minimises the decisions an agent must get right: no key to obtain, aliases so a guessed parameter name still works, deterministic idempotent GETs that are safe to retry, no destructive side effects, and errors that return a corrected call. Design for the retry loop, because an agent's first attempt is a guess. ### Building a decode-verify loop https://useqr.app/docs/developers/building-a-decode-verify-loop.md A decode-verify loop renders the QR code exactly as it will ship, rasterises it to a bitmap, decodes the bitmap with a real decoder such as zxing, and compares the result against the input. If they differ, the code does not ship. UseQR exposes this as GET /api/v1/verify, returning scannable, decoded, matchesInput, contrast and issues. ### Bulk QR generation at scale https://useqr.app/docs/developers/bulk-qr-generation-at-scale.md For up to 1,000 codes per call, POST to https://useqr.app/api/v1/qr/batch with output url — no key needed, and per-item failures return fixes without failing the batch. For millions, generate locally with a pure-JS library and a worker pool. Either way, keep a manifest mapping each payload to its file, because a QR image is unreadable to humans. ### Caching and CDN strategy for QR images https://useqr.app/docs/developers/caching-and-cdn-strategy-for-qr-images.md A QR image is a pure function of its parameters, so it can be cached forever. Serve API-generated codes with Cache-Control public, max-age 31536000, immutable; key stored files by a hash of the generation inputs; and never cache-bust — changing the URL of a QR image just re-downloads identical bytes. ### Decode a QR code programmatically https://useqr.app/docs/developers/decode-a-qr-code-programmatically.md POST image bytes to https://useqr.app/api/v1/decode (raw body, multipart file or JSON url field) to get back every decoded code as JSON — no API key. For local or private decoding, use zxing-cpp or pyzbar in Python, or the zbarimg command line tool. Decoding returns the payload text only, never the styling. ### Free QR code APIs compared https://useqr.app/docs/developers/free-qr-code-api-comparison.md Three free QR APIs are worth knowing: goqr.me's qrserver (keyless, long-established, has a decode endpoint), QuickChart (open source, self-hostable, rate-limited hosted tier) and UseQR (keyless, adds verify, batch and MCP). Google Charts' QR API was deprecated in 2012 and no longer works, so migrate anything still calling it. ### A free QR code API with no key https://useqr.app/docs/developers/free-qr-code-api-no-key.md UseQR's REST API needs no signup, no API key and no SDK. GET /api/v1/qr?data=hello returns a PNG. The shortest form is /q/hello.png, which drops straight into a markdown image tag. Responses are deterministic and cacheable forever. ### Generate a QR code in C# https://useqr.app/docs/developers/generate-a-qr-code-in-csharp.md QRCoder is the .NET standard: CreateQrCode(text, ECCLevel.Q) then PngByteQRCode.GetGraphic(20) returns PNG bytes with no System.Drawing dependency, so it runs on Linux containers. Expose it as an ASP.NET minimal API endpoint, or fetch the keyless API with HttpClient and Uri.EscapeDataString. ### Generate a QR code in Excel VBA https://useqr.app/docs/developers/generate-a-qr-code-in-excel-vba.md Shapes.AddPicture accepts a URL directly, so one VBA call places a QR code from the keyless API onto the sheet — no download step. Encode cell values with Application.WorksheetFunction.EncodeURL, loop a range to make a code per row, and use URLDownloadToFile when you need the PNG on disk. ### Generate a QR code in Go https://useqr.app/docs/developers/generate-a-qr-code-in-go.md With skip2/go-qrcode, one line writes a file: qrcode.WriteFile("https://example.com", qrcode.Medium, 512, "qr.png"). Encode returns PNG bytes for HTTP handlers. Alternatively fetch the keyless API with net/http and url.QueryEscape the payload. Verify styled codes with GET /api/v1/verify before shipping. ### Generate a QR code in Google Apps Script https://useqr.app/docs/developers/generate-a-qr-code-in-google-apps-script.md UrlFetchApp.fetch the keyless API and you have a QR blob: save it to Drive with DriveApp.createFile, place it in a Sheet with insertImage, or write =IMAGE() formulas into a column so every row gets its own code. No key, no OAuth scopes beyond fetch and the destination service. ### Generate a QR code in Java https://useqr.app/docs/developers/generate-a-qr-code-in-java.md ZXing is the standard: MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 512, 512, hints) returns a BitMatrix, and MatrixToImageWriter (in the javase artifact) writes the PNG. Set ERROR_CORRECTION and MARGIN through the EncodeHintType map. Or skip dependencies entirely and download from the keyless API with HttpClient. ### Generate a QR code in JavaScript and React https://useqr.app/docs/developers/generate-a-qr-code-in-javascript.md For a QR code in a browser or React app, either point an at the keyless API — one line, no dependency — or use a client-side library such as qrcode when the payload must not leave the device. Use the API for public URLs, local generation for credentials. ### Generate a QR code in Kotlin https://useqr.app/docs/developers/generate-a-qr-code-in-kotlin.md On Android, BarcodeEncoder from zxing-android-embedded produces a Bitmap in one call: BarcodeEncoder().encodeBitmap(text, BarcodeFormat.QR_CODE, 512, 512). Display it in Compose via asImageBitmap(). For styled codes, fetch the keyless API inside a coroutine on Dispatchers.IO, or load its URL directly with an image library. ### Generate a QR code in Next.js https://useqr.app/docs/developers/generate-a-qr-code-in-nextjs.md Point next/image at the keyless API (add useqr.app to images.remotePatterns), or proxy it through a route handler so codes are cached at your own edge. For build-time codes, fetch during static generation; for OG images, compose the PNG into ImageResponse. No key or SDK required. ### Generate a QR code in Node.js https://useqr.app/docs/developers/generate-a-qr-code-in-node.md In Node, the qrcode npm package covers everything offline: QRCode.toFile for files, toDataURL for embedding, toString for SVG, and toFileStream to pipe PNG straight into an HTTP response. If you would rather not own an imaging dependency, fetch the keyless API and relay the bytes. ### Generate a QR code in PHP https://useqr.app/docs/developers/generate-a-qr-code-in-php.md Install endroid/qr-code with Composer, construct a QrCode, and write it with PngWriter — saveToFile, getString or getDataUri cover files, HTTP responses and inline embedding. With no Composer available, file_get_contents against the keyless API and file_put_contents the bytes. Verify styled codes with GET /api/v1/verify. ### Generate a QR code in Python https://useqr.app/docs/developers/generate-a-qr-code-in-python.md Two options: call the keyless HTTP API with requests, which needs no dependencies beyond requests and no key, or use the qrcode library locally when you cannot make network calls. The API is better when you want styling and verification without pulling in an imaging stack. ### Generate a QR code in React https://useqr.app/docs/developers/generate-a-qr-code-in-react.md In React, the simplest QR component is an pointing at the keyless API with the payload URL-encoded — cacheable and dependency-free. For payloads that must stay on the device, render from qrcode.react. Both re-render automatically when the value prop changes; always pair the code with a real link. ### Generate a QR code in Ruby https://useqr.app/docs/developers/generate-a-qr-code-in-ruby.md The rqrcode gem covers Ruby: RQRCode::QRCode.new("https://example.com") then as_svg for vector output or as_png (pure-Ruby ChunkyPNG, no ImageMagick) for raster. In Rails, a helper returning as_svg keeps codes inline and crisp. Or fetch the keyless API with Net::HTTP and URI.encode_www_form. ### Generate a QR code in Rust https://useqr.app/docs/developers/generate-a-qr-code-in-rust.md The qrcode crate encodes and the image crate saves: QrCode::new(b"data"), then .render::>().build() and .save("qr.png"). It also renders SVG and terminal strings natively. For styled codes without renderer code, fetch the keyless API with reqwest and write the bytes. ### Generate a QR code in Svelte https://useqr.app/docs/developers/generate-a-qr-code-in-svelte.md In Svelte 5, derive the keyless API URL from state — const src = $derived(`https://useqr.app/api/v1/qr?data=${encodeURIComponent(text)}&size=512`) — and bind it to an img. For payloads that must stay on the device, render locally with the qrcode npm library inside $effect. No component library needed. ### Generate a QR code in Swift https://useqr.app/docs/developers/generate-a-qr-code-in-swift.md Apple platforms have a QR encoder built in: CIFilter.qrCodeGenerator() from CoreImage, available since iOS 7. Set message and correctionLevel, scale the tiny output with CGAffineTransform (never interpolated resizing), and wrap the CGImage for SwiftUI. No package needed; use the keyless API only for styled codes. ### Generate a QR code in Vue https://useqr.app/docs/developers/generate-a-qr-code-in-vue.md In Vue 3, compute the keyless API URL from your reactive state and bind it to an img — computed(() => `https://useqr.app/api/v1/qr?data=${encodeURIComponent(text.value)}`) — or render locally with the qrcode npm library when the payload must not leave the browser. Verify styled codes with GET /api/v1/verify. ### Generate a QR code with curl https://useqr.app/docs/developers/generate-a-qr-code-with-curl.md curl -o qr.png \"https://useqr.app/q/hello.png\" is the whole thing. No key, no auth header, no SDK. Add query parameters for size, format and styling, and use format=svg when you want vector output for print. ### OpenAPI for QR generation https://useqr.app/docs/developers/openapi-for-qr-generation.md UseQR's full API surface is described in an OpenAPI 3.1 document at https://useqr.app/api/openapi.json — generate, typed payloads, batch, decode and verify. It declares no security schemes, so it imports into GPT Actions with authentication set to None and generates typed clients with tools like openapi-typescript without any auth plumbing. ### QR code generation performance https://useqr.app/docs/developers/qr-code-generation-performance.md Encoding a QR matrix is trivial — microseconds to low milliseconds on any modern CPU. Rendering dominates the cost: building an SVG string is cheap, rasterising a PNG is 10 to 100 times more expensive. Performance only matters in batch jobs, hot API paths and serverless cold starts; for one code at a time, everything is fast enough. ### QR codes in a shell script https://useqr.app/docs/developers/qr-code-in-a-shell-script.md Two routes: curl the keyless API (curl -o qr.png "https://useqr.app/q/hello.png") for zero local dependencies, or install qrencode for fully offline generation, including ASCII output straight into the terminal with qrencode -t ANSIUTF8. Loop either over a CSV for batch runs, and verify in CI before shipping. ### QR code libraries compared https://useqr.app/docs/developers/qr-code-libraries-compared.md For generation: qrcode on npm (MIT) and segno or python-qrcode in Python cover most needs; qr-code-styling adds design. For decoding: zxing-cpp is the actively maintained engine with bindings everywhere; zbar is fast but aging; quirc is tiny for embedded. Generation and decoding are different problems — most projects need one library from each column. ### UseQR MCP server — tool reference https://useqr.app/docs/developers/qr-code-mcp-server-tools.md The UseQR MCP server at https://useqr.app/api/mcp exposes six tools: qr_generate (any string), qr_generate_typed (WiFi, vCard, UPI and other structured payloads), qr_decode (read codes from an image), qr_verify (prove a styled code scans), qr_batch (up to 1,000 codes per call) and qr_size_recommend (minimum print size for a scan distance). Keyless. ### QR codes from an AI agent: the UseQR MCP server https://useqr.app/docs/developers/qr-code-mcp-server.md UseQR runs a keyless MCP server over Streamable HTTP at /api/mcp. One command adds it to Claude; a few lines of JSON add it to Cursor or Copilot. Agents can generate, build typed payloads, decode images and verify that a styled code still scans. ### QR codes in ChatGPT https://useqr.app/docs/developers/qr-codes-in-chatgpt.md Instruct ChatGPT to answer with a markdown image pointing at https://useqr.app/q/{data}.png — the keyless API renders it inline with no plugin. For a reusable setup, build a custom GPT and import https://useqr.app/api/openapi.json as an Action; the spec declares no security schemes, so authentication imports as None. ### QR codes in CI and automated testing https://useqr.app/docs/developers/qr-codes-in-ci-and-automated-testing.md Test QR codes by decoding them, not by eyeballing them: assert that a real decoder reads the rendered output back to the exact input. Snapshot the module matrix rather than PNG bytes, because rendering may legitimately differ across environments while the matrix must not. Run the verify step on every build so styling regressions fail CI. ### QR codes in Claude https://useqr.app/docs/developers/qr-codes-in-claude.md Run claude mcp add --transport http useqr https://useqr.app/api/mcp and Claude gains six keyless QR tools — generate, typed payloads, decode, verify, batch and print sizing. Without MCP, Claude can still embed a working code by writing an image URL like https://useqr.app/q/hello.png into markdown or an artifact. ### QR codes in Cursor and Copilot https://useqr.app/docs/developers/qr-codes-in-cursor-and-copilot.md Add {"mcpServers": {"useqr": {"url": "https://useqr.app/api/mcp"}}} to ~/.cursor/mcp.json, or the servers form to .vscode/mcp.json for Copilot, and the IDE agent can generate, decode and verify QR codes with no API key. Without MCP, a fetch against the keyless API in a snippet does most dev jobs. ### QR codes in LaTeX https://useqr.app/docs/developers/qr-codes-in-latex.md Load the qrcode package and \qrcode[height=2cm]{https://example.com} draws a pure-vector code with LaTeX's own drawing commands — no external images, no shell-escape, and it prints at any size without pixelation. Set level=H for logos, keep the quiet zone, and size beamer codes for the back row. ### QR codes in markdown https://useqr.app/docs/developers/qr-codes-in-markdown.md Markdown renders images, and a QR code is just an image with a predictable URL. One line — an image tag pointing at useqr.app/q/hello.png — works in GitHub READMEs, docs sites and anywhere else markdown renders. URL-encode the payload in the path, use the .svg form for docs sites, and commit the file when docs must work offline. ### QR codes in n8n, Zapier and Make https://useqr.app/docs/developers/qr-codes-in-n8n-zapier-and-make.md In n8n, Zapier or Make, a plain HTTP request step against https://useqr.app/api/v1/qr?data=... is the whole integration — the API is keyless, so there is no credential to configure and workflows stay shareable as templates. Set the response to file for a PNG attachment, or add format=base64 when the platform prefers a string. ### QR codes in serverless functions https://useqr.app/docs/developers/qr-codes-in-serverless-functions.md Pure-JavaScript QR generators run in every serverless runtime with negligible cold-start cost — encoding is milliseconds and the library is small. The pitfall is native dependencies for PNG rasterisation, which break on mismatched platform binaries. Emit SVG from the function, or skip the function entirely and embed a keyless API URL. ### Read QR codes from a webcam in the browser https://useqr.app/docs/developers/read-qr-codes-from-a-webcam-in-the-browser.md Use the built-in BarcodeDetector API where it exists (Chromium browsers), and fall back to zxing-wasm elsewhere — Firefox and Safari do not ship BarcodeDetector. Open the camera with getUserMedia using facingMode environment, then decode frames in a requestAnimationFrame loop. Everything runs locally; no frame ever needs to leave the device. ### Self-hosting a QR generator https://useqr.app/docs/developers/self-hosting-a-qr-generator.md Self-hosting a QR generator buys two things no hosted service can promise: a provable privacy boundary and permanence on your own terms. UseQR is MIT-licensed — clone github.com/rajkaria/useqr, pnpm install, pnpm verify, and deploy the Next.js app anywhere Node runs; the whole surface, API and MCP server included, comes with it. ### Using QR codes from an AI agent https://useqr.app/docs/developers/using-qr-codes-from-an-ai-agent.md An agent can use QR codes at four levels of integration: emit https://useqr.app/q/{data}.png inline in markdown (zero setup), call the keyless REST API, call typed endpoints for WiFi or payment payloads, or connect the MCP server for generate, decode and verify tools. Every level is keyless, and every error returns a corrected call the agent can retry. ### Why you should verify that a QR code decodes https://useqr.app/docs/developers/why-verify-that-your-qr-code-decodes.md Rendering a QR code proves nothing about whether it scans. Styling, colour, logos and print all consume error-correction budget invisibly. The only reliable check is to rasterise the final output and read it back with a real decoder. ### ZXing vs quirc vs zbar https://useqr.app/docs/developers/zxing-vs-quirc-vs-zbar.md ZXing is the reference family — the Java original is in maintenance mode but zxing-cpp is actively developed with bindings for Python, WebAssembly and mobile. zbar is a fast C decoder kept alive by a community fork. quirc is a few thousand lines of dependency-free C for embedded targets. For new projects, zxing-cpp is the safe default. ### The EU Digital Product Passport and QR codes https://useqr.app/docs/ecommerce/eu-digital-product-passport.md The EU Digital Product Passport, created by the Ecodesign for Sustainable Products Regulation, attaches a structured data record to individual products via a data carrier on the item — in practice usually a QR code. Batteries go first, with passports required from 2027 under the Battery Regulation; other priority categories follow via delegated acts. ### GS1 Digital Link for retail — one code for the till and the phone https://useqr.app/docs/ecommerce/gs1-digital-link-for-retail.md GS1 Digital Link puts the GTIN inside an ordinary URL, so a single QR code can be scanned at the point of sale like a barcode and by a shopper's phone like a web link. GS1's Sunrise 2027 programme targets retail scanners accepting 2D codes by end-2027; until then brands print both symbols. ### Measuring offline-to-online conversion with QR codes https://useqr.app/docs/ecommerce/measuring-offline-to-online-conversion.md A static QR code gives you sessions by placement, not scans — the difference is people whose page never loaded. Give every placement its own UTM-tagged URL, read sessions as the floor of true scan volume, and use coupon-code redemption as tracking-free ground truth when you need revenue attribution that survives blocked analytics. ### Preventing coupon QR code fraud https://useqr.app/docs/ecommerce/preventing-coupon-qr-fraud.md Assume any static coupon QR code will be screenshotted and shared — a code is copied in one tap and forwarded to thousands. Either cap the exposure so spreading is acceptable, or issue single-use server-validated tokens that burn on redemption. Expiry windows and location checks close the remaining gaps. ### QR codes for asset tagging https://useqr.app/docs/ecommerce/qr-code-asset-tagging.md Assets are long-lived where inventory flows, so asset tags optimise for durability over cost: laminated polyester, anodised aluminium or direct engraving, carrying an opaque asset ID that resolves in your register. A tag must outlive repaints, solvents and a decade of handling, and the payload must outlive system migrations. ### QR codes for a market stall https://useqr.app/docs/ecommerce/qr-code-for-a-market-stall.md A market stall runs on three laminated sheets: a payment QR for your region's scheme — UPI, PIX, PayNow or an EU EPC code — a price list with product codes, and a follow code. Laminate matt, weight everything against wind, and remember a customer cannot scan a code shown on your own phone with that phone. ### QR codes for a pop-up shop https://useqr.app/docs/ecommerce/qr-code-for-a-pop-up-shop.md A pop-up's QR codes should outlive the pop-up — point every code at a domain you control so the poster someone photographs still works next month. Core kit: a catalogue code, a payment code, and one follow code, sized by scan distance — 2 cm at the counter, 5 cm or more on windows and A-frames. ### QR codes for Amazon sellers — what inserts may and may not do https://useqr.app/docs/ecommerce/qr-code-for-amazon-sellers.md Amazon's policies restrict product inserts that solicit reviews — asking for positive reviews, offering incentives for reviews, or routing unhappy customers away from reviewing. What remains allowed and valuable: QR codes for manuals, warranty registration, setup help and support. Design the insert around product use, not review capture. ### QR codes for care instructions on apparel and textiles https://useqr.app/docs/ecommerce/qr-code-for-care-instructions.md A care label QR code works on printed satin or polyester labels down to about 1.5 cm, but woven labels cannot resolve modules finely enough — put the code on a printed insert or hang tag instead. The code supplements the mandated care symbols and carries video guides, repair advice and material provenance. ### QR codes for click and collect https://useqr.app/docs/ecommerce/qr-code-for-click-and-collect.md Click-and-collect QR codes are consumer-presented: the customer shows a code from their phone and the store scans it. Keep the payload a short opaque token, not a long URL, so hardware scanners read it fast off a screen, and always print a human-readable fallback code beside it for when scanning fails. ### QR codes for endless aisle — rescuing the out-of-stock sale https://useqr.app/docs/ecommerce/qr-code-for-endless-aisle.md An endless-aisle QR code turns an out-of-stock or out-of-range moment into an online order — the shelf code opens the full catalogue with live availability and ship-to-home or collect options. The customer's own phone beats a kiosk on cost and queueing, and UTM parameters per aisle make the rescue measurable. ### QR codes for Etsy sellers https://useqr.app/docs/ecommerce/qr-code-for-etsy-sellers.md For an Etsy seller the highest-value codes are a thank-you card linking care instructions and a way to reach you again. Check Etsy's current seller policies before pointing buyers off-platform — fee-avoidance diversion is restricted — and test codes printed on a home label printer at 2 cm before committing a batch. ### QR codes for ingredients and allergen information https://useqr.app/docs/ecommerce/qr-code-for-ingredients-and-allergens.md A QR code may supplement ingredient and allergen information but never replace it — EU food information law and FDA labelling rules require the declarations on the pack itself. Use the code for depth the label cannot hold: full sourcing, per-batch data, precautionary detail and recall communication. ### QR codes for loyalty programmes https://useqr.app/docs/ecommerce/qr-code-for-loyalty-programs.md The winning pattern is QR-to-wallet-pass: one scan enrols the customer and puts a barcode-bearing card in Apple or Google Wallet, no app install. An app you must remember to open loses to a card that surfaces in the wallet; QR codes remove the friction at both enrolment and the till. ### QR codes for nutrition information https://useqr.app/docs/ecommerce/qr-code-for-nutrition-information.md The printed nutrition panel stays on the pack; a QR code adds what it cannot hold — nutrition per realistic portion sizes, diet and intolerance filters, and full micronutrient data. Industry experience is that nutrition codes are scanned by a small, highly motivated minority, so design for depth per scan, not volume. ### QR codes for product authentication — what works and what doesn't https://useqr.app/docs/ecommerce/qr-code-for-product-authentication.md A shared QR code proves nothing, because counterfeiters copy it along with the artwork. Real authentication needs a unique code per unit checked against a server, ideally with scan-anomaly detection, or a cryptographically signed payload. Even then, a perfect copy of a genuine code still validates, so pair codes with physical tamper evidence. ### QR codes for product manuals https://useqr.app/docs/ecommerce/qr-code-for-product-manuals.md Link a QR code on the product or quick-start card to the manual, but serve a mobile web page rather than a raw PDF, route by language automatically, and think about setup-time products first — a router's manual cannot require the WiFi the router has not yet provided. Keep the URL stable for the product's life. ### QR codes for referral programmes https://useqr.app/docs/ecommerce/qr-code-for-referral-programs.md A referral QR code puts a customer's unique referral link into the physical world — on packaging inserts, receipts and packing slips — so recommending your shop is a scan rather than a copied link. Attribution requires a unique code per customer, generated in bulk with the referral ID in the URL. ### QR codes for returns and exchanges https://useqr.app/docs/ecommerce/qr-code-for-returns-and-exchanges.md Modern label-free returns work by issuing the customer a QR code that a carrier or drop-off point scans, printing or applying the label on site. The code carries an opaque session token tied to the authorised return, not the customer's data. Start the flow from an order-aware code on the packing slip. ### QR codes for serialised products https://useqr.app/docs/ecommerce/qr-code-for-serialized-products.md Serialisation gives every unit its own QR code carrying an opaque serial that your server resolves. One investment powers authentication, recalls, warranty, and resale provenance simultaneously. Keep serials random and meaningless, put data server-side, and use GS1 SGTIN-style identifiers if codes must also serve retail scanning. ### QR codes for sustainability and recycling information https://useqr.app/docs/ecommerce/qr-code-for-sustainability-and-recycling-info.md Recycling rules differ by municipality, which is exactly what a printed pack cannot handle and a QR code can — the linked page can show disposal instructions for the scanner's local scheme. Behind the same code: material composition, take-back routes and substantiated claims. Unsubstantiated green claims behind a code are still greenwashing. ### QR codes for warranty registration https://useqr.app/docs/ecommerce/qr-code-for-warranty-registration.md Put the unit's serial number in the QR code's URL as a query parameter, so scanning opens a registration form with the product and serial already filled in. Registration friction comes almost entirely from typing; a prefilled form reduces the ask to name and email. Be transparent that registration is data collection. ### QR codes for wholesale catalogues https://useqr.app/docs/ecommerce/qr-code-for-wholesale-catalogs.md A wholesale catalogue works harder when every SKU carries a QR code linking a prefilled order line — SKU and pack size in the URL, landing in your B2B portal's order form. Buyers reorder from the printed page in seconds, and codes generated from the same spreadsheet that builds the catalogue stay in sync. ### QR codes in the unboxing experience https://useqr.app/docs/ecommerce/qr-code-in-the-unboxing-experience.md An unboxing insert earns one scan at most, so give each card exactly one call to action — a review, a follow, or registration, never all three. A 2 × 2 cm code on a matt-finished card, labelled with what the customer gets, outperforms a card crowded with competing codes. Marketplace sellers must check insert policies first. ### Can a QR code replace the printed manual? https://useqr.app/docs/ecommerce/qr-code-instead-of-a-printed-manual.md Usually the answer is a hybrid, not a replacement. Safety warnings, regulated instructions and everything needed to reach a working state should stay on paper; a QR code carries the full manual, troubleshooting and updates. Dropping paper entirely saves print cost but excludes customers without phones, signal or confident eyesight. ### QR codes for inventory management https://useqr.app/docs/ecommerce/qr-code-inventory-management.md QR codes beat 1D barcodes for inventory where phones are the scanners and labels are small — a 2 cm QR holds a full item URL that any phone camera reads, while barcodes need width and dedicated hardware. Encode short IDs pointing at your inventory system, print thermal labels in bulk, and stocktake by scanning. ### QR codes on a packing slip https://useqr.app/docs/ecommerce/qr-code-on-a-packing-slip.md A packing-slip QR code should carry the order ID in its URL, so returns, reorders and support open already knowing the order. Generate one code per slip at fulfilment time via bulk or API. Packing-slip codes reach a customer who has just opened their parcel — the highest-attention print placement a shop owns. ### QR code on a product label — placement, size and separation https://useqr.app/docs/ecommerce/qr-code-on-a-product-label.md Keep a product-label QR code at least 2 cm away from the EAN or UPC barcode so point-of-sale scanners do not capture the wrong symbol, print it at 2 × 2 cm or larger, and point it at a stable URL on your own domain. New artwork should encode a GS1 Digital Link. ### QR codes on shelf-edge labels https://useqr.app/docs/ecommerce/qr-code-on-a-shelf-edge-label.md A shelf-edge QR code is scanned from 15 to 25 cm, so 2 cm is the working floor by the 10:1 rule. On electronic shelf labels, give every module at least 2 e-ink pixels and full contrast. Encode by product or by shelf position, not both — planogram churn breaks codes that conflate them. ### Using QR codes to get more Google reviews https://useqr.app/docs/ecommerce/qr-codes-for-google-reviews.md Link directly to Google's write-a-review endpoint for your Place ID, so the star dialog opens immediately instead of your listing. Put the code on the receipt or bill, ask every customer, and never offer anything in return — incentivised reviews violate Google's policies. ### QR codes on product packaging https://useqr.app/docs/ecommerce/qr-codes-on-product-packaging.md A packaging QR code has to work for as long as the product exists, which makes permanence the design constraint rather than size. Point it at a stable path on your own domain, never a campaign URL or a third-party shortener, and use error correction Q. ### How to 3D print a QR code https://useqr.app/docs/how-to/how-to-3d-print-a-qr-code.md Print the code in two colours — a light base with dark raised modules via a filament swap or multi-material setup — with modules at least 2 mm square and matt filament. Single-colour relief codes rely on shadows and scan unreliably. Extrude the SVG about 1 mm and scan a test piece first. ### How to add a QR code to a business card https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-business-card.md Decide the payload first — a vCard saves your details straight to the phone and needs no hosting; a URL stays sparse and lets the destination evolve. Print at 1.6–2 cm minimum (cards are scanned at 15–20 cm), as vector, on the back or a clean corner, and scan a printed proof before ordering hundreds. ### How to add a QR code to a LinkedIn banner https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-linkedin-banner.md Build the 1584×396 banner with a QR code around 300 pixels square in the right third, clear of the profile photo overlay, encoding your short profile URL rather than a dense vCard. Desktop viewers can scan it with a phone; viewers already on mobile cannot, so it complements rather than replaces the profile link. ### How to add a QR code to a livestream overlay https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-livestream-overlay.md In OBS add an Image source pointing at your QR PNG, place it in a corner clear of the webcam and captions, and keep it at least 200 pixels square on a 1080p canvas. A static overlay stays sharp even at low bitrates because encoders spend their bits on motion. ### How to add a QR code to a PDF https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-pdf.md The clean route is placing the code in the source document — Word, InDesign, Google Docs — before exporting, as SVG so it stays vector inside the PDF. Failing that, insert the image with a PDF editor, or regenerate the document. Zoom to 800% afterwards: crisp edges mean vector, fuzzy means rasterised. ### How to add a QR code to a resume https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-resume.md Link the code to your portfolio or LinkedIn — one URL, not a vCard-plus-links bundle — place it in the header or corner at 1.8–2 cm, and keep the printed text intact. Be clear-eyed about who it serves: applicant tracking systems ignore images entirely, so the code is purely for human readers of the printed or PDF page. ### How to add a QR code to a website https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-website.md Add an img tag whose src is a UseQR API URL — one line, no file to host. But use it only where a screen-to-phone handoff genuinely helps: continue on mobile, download an app, join WiFi, pay from a desktop page. A QR code standing in for a clickable link on the same screen is noise. ### How to add a QR code to a YouTube video https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-youtube-video.md YouTube's cards and end screens only hold tappable links, so a QR code must be burned into the video frames in your editor. Make it at least 25% of frame height for couch-distance viewing, keep it on screen for 10 seconds or more, and avoid the areas YouTube's own UI covers. ### How to add a QR code to a Zoom background https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-a-zoom-background.md Make a 1920×1080 image with the QR code in an upper corner and set it as your Zoom virtual background. Do not mirror the code — Zoom mirrors only your self-view, so a code that looks backwards to you is correct for participants. Verify from a second device. ### How to add a QR code to an email signature https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-an-email-signature.md Insert the code as a hosted image URL — the UseQR API link works directly in Gmail, Outlook and Apple Mail signature editors — displayed at roughly 100–120 px, about 2.5–3 cm on screen. Test in dark mode before rolling it out: several clients invert or recolour images, and an inverted QR code stops scanning. ### How to add a QR code to an Instagram story https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-an-instagram-story.md Add the code to a story as an image sticker on the 1080×1920 canvas — but be honest about the physics: viewers cannot point their camera at the screen they are watching on. Use Instagram's link sticker for in-app taps; the QR code earns its place for cross-device and printed contexts. ### How to add a QR code to Shopify https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-shopify.md Download your code as a PNG and add it to any Shopify page or section as an image. For coupons, encode your store's /discount/CODE URL so the discount applies automatically on scan. For per-product or per-order codes, call a keyless QR API from a Liquid template. ### How to add a QR code to Squarespace https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-squarespace.md Upload the PNG to an Image block anywhere on the page — no plugin or code injection needed. For codes that update with the page, drop an img tag pointing at a keyless QR API into a Markdown or Code block. Upload at twice display size so compression never softens modules. ### How to add a QR code to Wix https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-wix.md Add the downloaded PNG with an image element — free and permanent. Wix App Market QR widgets work but typically carry subscriptions for something a static image does for nothing. Generate the code externally, upload it, keep the quiet zone clear, and test the published page with a phone. ### How to add a QR code to WordPress https://useqr.app/docs/how-to/how-to-add-a-qr-code-to-wordpress.md Add the downloaded PNG with an Image block — no plugin required. Plugins that render QR codes through third-party services send your URLs out on every page view; a static image or a keyless API call keeps the page self-contained. Templates can generate per-post codes automatically. ### How to add UTM parameters to a QR code https://useqr.app/docs/how-to/how-to-add-utm-parameters-to-a-qr-code.md Append UTM parameters to the URL before generating: set utm_medium to qr, utm_source to the physical placement, utm_campaign to the campaign and utm_content to the individual asset. Budget for density — a full UTM set adds 60 to 100 characters, which can push the code up three versions. ### How to change what a QR code points to https://useqr.app/docs/how-to/how-to-change-what-a-qr-code-points-to.md A static QR code cannot be re-pointed — the modules literally are the encoded data. If the code contains a URL on a domain you control, change the server-side redirect and every printed code follows instantly. Otherwise your options are reprinting, or using a dynamic service on the next print run. ### How to edit a QR code after printing https://useqr.app/docs/how-to/how-to-edit-a-qr-code-after-printing.md You cannot edit printed ink, but you can often change what it does: if the code encodes a URL on your domain, update the redirect and every print follows. Otherwise, a new code stickered over the old works mechanically but looks like tampering to wary users, and reprinting is usually cheaper than it feels. ### How to embed a QR code in HTML https://useqr.app/docs/how-to/how-to-embed-a-qr-code-in-html.md Three ways: an img tag whose src is the UseQR API URL (one line, nothing to host), the /q/{data}.png direct path for markdown and READMEs, or inline SVG pasted into the page for zero external requests. Always set width and height, meaningful alt text, and loading="lazy" for below-the-fold codes. ### How to engrave a QR code https://useqr.app/docs/how-to/how-to-engrave-a-qr-code.md Engraving carries no ink, so contrast must come from the process: laser annealing makes dark oxide on stainless, engraving anodised aluminium exposes bright metal (so invert the artwork on dark anodise), and deep engraving needs an oxidiser or paint fill. Test one piece at several angles before the batch. ### How to make a high-resolution QR code https://useqr.app/docs/how-to/how-to-make-a-high-resolution-qr-code.md Work out the pixels you need from the print size — centimetres × DPI ÷ 2.54 — and generate at exactly that size; UseQR renders PNGs up to 4096 pixels. A 10 cm code at 300 DPI is 1181 px. Or skip the arithmetic entirely and download SVG, which has no resolution to run out of. ### How to make a QR code for print https://useqr.app/docs/how-to/how-to-make-a-qr-code-for-print.md Download SVG, or a PNG at 300 DPI at the final printed size. Size the code at one tenth of the scanning distance and never below 2 × 2 cm. Keep a quiet zone of 4 modules, print dark modules in 100% K, and scan a printed proof at real size before the run. ### How to make a QR code in Canva https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-canva.md Canva has a built-in QR code app — search "QR code" in the Apps panel, paste a URL, and it drops the code into your design. It only encodes URLs, though. For WiFi, vCard, payments or styled codes, generate the code at UseQR, download PNG or SVG, and upload it to Canva like any image. ### How to make a QR code in Excel https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-excel.md In Microsoft 365 Excel, =IMAGE("https://useqr.app/api/v1/qr?data="&ENCODEURL(A2)) renders a QR code in the cell; fill down for one per row. Older Excel versions lack IMAGE(), so use a VBA routine or upload the workbook to a bulk generator — UseQR reads .xlsx directly and works offline in the browser. ### How to make a QR code in Figma https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-figma.md Figma has no native QR generator, but it renders SVG losslessly: generate the code at UseQR, download SVG, and drag or paste it straight onto the canvas as editable vectors. Turn it into a component if it appears in many frames. Be wary of QR plugins — several send your payload to a third-party server. ### How to make a QR code in Google Docs https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-google-docs.md In Google Docs use Insert → Image → By URL and paste a UseQR API link such as https://useqr.app/api/v1/qr?data=your-link&size=600 — the code appears immediately, no download or upload needed. Docs fetches the image once and stores its own copy, so the document keeps working regardless of the URL later. ### How to make a QR code in Google Sheets https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-google-sheets.md Put =IMAGE("https://useqr.app/api/v1/qr?data="&ENCODEURL(A2)) in a cell and a QR code for A2's contents appears. Fill the formula down and every row gets its own code — no add-on, no signup. ENCODEURL keeps special characters safe; use IMAGE mode 4 for exact pixel sizing. ### How to make a QR code in Google Slides https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-google-slides.md In Google Slides use Insert → Image → By URL and paste a UseQR API link like https://useqr.app/api/v1/qr?data=your-link&size=1000 — the code lands on the slide instantly, no download needed. Size it at a tenth of the distance to the farthest scanner and keep it on screen at least 15–20 seconds. ### How to make a QR code in Illustrator https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-illustrator.md Illustrator has no QR generator, but it is the right tool for print QR work: place the SVG from UseQR (format=svg-tiny if standard SVG imports oddly), recolour fills only — never add strokes — scale uniformly, keep the group intact, and export PDF/X for the printer. Verify the exported file decodes before handoff. ### How to make a QR code in Notion https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-notion.md Add an image block in Notion, choose the Embed link tab, and paste https://useqr.app/q/your-data.png — the QR code renders immediately, no file to download or upload. The same URL works in markdown syntax and in database Files & media properties, so every row of a Notion database can carry its own code. ### How to make a QR code in Photoshop https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-photoshop.md Photoshop cannot generate QR codes, and it is a raster tool, so resolution discipline is everything: generate a PNG at 300 DPI at the final printed size — pixels = cm × 300 ÷ 2.54 — place it as a smart object, and never scale it above 100%. For print artwork, placing an SVG-derived vector smart object is better still. ### How to make a QR code in PowerPoint https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-powerpoint.md Generate the code, download SVG — PowerPoint has supported SVG since 2016 — and Insert → Pictures onto the slide. Size it by the room, not the slide: the code should be a tenth of the distance to the farthest scanner, shown for at least 15–20 seconds, one code per slide. ### How to make a QR code in Word https://useqr.app/docs/how-to/how-to-make-a-qr-code-in-word.md Insert the generated code with Insert → Pictures, set the exact printed size in centimetres in the Layout dialog, and give it square text wrapping so paragraphs cannot squash it. For one code per record — labels, letters, certificates — use mail merge with an IncludePicture field pointing at the UseQR API URL. ### How to make a QR code as an SVG https://useqr.app/docs/how-to/how-to-make-a-qr-code-svg.md Choose SVG as the download format in the generator, or add format=svg to the API URL. An SVG QR code is a vector — it scales from a business card to a billboard with perfectly sharp module edges, weighs a few kilobytes, and is the format every print workflow should start from. ### How to add a logo to a QR code https://useqr.app/docs/how-to/how-to-make-a-qr-code-with-a-logo.md Set error correction to Q or H, place the logo centrally at under about 20% of the code area, give it two or three modules of clear space, and verify the result decodes. Never let it touch a corner square — those are not protected by error correction. ### How to make a QR code work offline https://useqr.app/docs/how-to/how-to-make-a-qr-code-work-offline.md Make the payload the data itself. WiFi, vCard, plain text, calendar and coordinate codes act entirely on the scanning phone and work in airplane mode; URL codes need a network to be useful. The trade is capacity — everything must fit in the code, so payloads stay short and codes get denser. ### How to make a QR code https://useqr.app/docs/how-to/how-to-make-a-qr-code.md Pick the type, enter your details, check the size against the scanning distance, and download SVG for print or PNG for screens. With UseQR the whole thing happens in your browser — no signup, no watermark, and nothing is uploaded. ### How to make a sheet of QR code labels https://useqr.app/docs/how-to/how-to-make-a-sheet-of-qr-code-labels.md Use UseQR's free sticker sheet tool: choose identical or sequentially numbered codes, pick an Avery preset or a plain A4 grid, and download a print-ready PDF of up to 1,000 labels. For a different code per spreadsheet row, use the bulk tool instead. Leave cutting margins — they double as the quiet zone. ### How to make a transparent QR code https://useqr.app/docs/how-to/how-to-make-a-transparent-qr-code.md Turn on the transparent background toggle in the generator, or add bg=transparent to the API URL, and download PNG or SVG — both keep the alpha channel. Only the background is removed; the modules stay solid. Whatever shows through must still be at least 40% lighter than the modules or the code will not scan. ### How to make Avery labels with QR codes https://useqr.app/docs/how-to/how-to-make-avery-labels-with-qr-codes.md Generate the codes in UseQR's sticker sheet or bulk tool, pick the matching Avery preset — 5160 (66.7 × 25.4 mm, 30 per Letter sheet), 5163 (101.6 × 50.8 mm, 10 per sheet) or L7160 (63.5 × 38.1 mm, 21 per A4) — and print the PDF at 100% scale onto the label stock. ### How to make one QR code do different things by device https://useqr.app/docs/how-to/how-to-make-one-qr-code-do-different-things-by-device.md Encode a single URL on a domain you control and branch there: the server or a small script inspects the user agent and redirects iPhones to the App Store, Android to Play, and everyone else to a landing page. It works, but the redirect must stay alive as long as the print does. ### How to make QR codes from a spreadsheet https://useqr.app/docs/how-to/how-to-make-qr-codes-from-a-spreadsheet.md Upload your spreadsheet to UseQR's free bulk tool — .xlsx files work directly, no CSV export needed — map columns into the payload with merge fields like {{name}}, and download a ZIP of PNGs or SVGs, a grid PDF, or Avery label sheets. Every code is decode-verified before download. ### How to generate QR codes in bulk from a spreadsheet https://useqr.app/docs/how-to/how-to-make-qr-codes-in-bulk.md Export a CSV with one row per code, upload it, and download a ZIP of images, a grid PDF, or Avery-format label sheets. Verify every code decodes before printing — a systematic error found after 5,000 labels is expensive. ### How to proof a QR code with a print shop https://useqr.app/docs/how-to/how-to-proof-a-qr-code-with-a-print-shop.md Send the code as vector SVG or PDF with written instructions: do not rasterise or resample it, keep it 100% K rather than a rich-black build, never scale it down, and leave the quiet zone empty. Then ask for a hard proof at final size on the final stock, and scan the proof before signing off. ### How to put a QR code on a mug https://useqr.app/docs/how-to/how-to-put-a-qr-code-on-a-mug.md On a standard 11 oz mug (about 26 cm circumference) keep the code at 4 cm or less — roughly a sixth of the circumference — so curvature doesn't fold the grid away from the camera. Use dye sublimation or a fired ceramic decal if the mug will meet a dishwasher. ### How to put a QR code on a t-shirt https://useqr.app/docs/how-to/how-to-put-a-qr-code-on-a-t-shirt.md Print the code at least 10 cm square on the chest, dark modules on a light panel, using screen print or vinyl for the sharpest edges. Test it worn, not flat — drape curves and stretches the grid — and re-test after a few washes before ordering a batch. ### How to put a QR code on packaging https://useqr.app/docs/how-to/how-to-put-a-qr-code-on-packaging.md Put the code on a flat panel at least 10 mm from folds, edges and seams, sized 2.5 to 4 cm for hand-held scanning, printed dark on light with error correction Q or H so creases and scuffs stay within the damage budget. Retail products should also consider GS1 Digital Link. ### How to recover a lost QR code design https://useqr.app/docs/how-to/how-to-recover-a-lost-qr-code-design.md Scan any surviving copy — even a photo of it — to recover the exact payload, then regenerate the code from that. Styling cannot be recovered, because decoding reduces the image to bits and discards colours, shapes and logo. The remade code may look slightly different and scan identically. ### How to shorten a URL before making a QR code https://useqr.app/docs/how-to/how-to-shorten-a-url-before-making-a-qr-code.md Shortening cuts the code's version and grows every module: a 78-character URL needs version 5 while a 28-character link fits version 3, making modules about 27% larger at the same print size. But the shortener's domain is then in your ink forever, so prefer a short path on a domain you control. ### How to test a QR code before printing https://useqr.app/docs/how-to/how-to-test-a-qr-code-before-printing.md Test in two layers: the data (decode the actual image and read the payload character by character) and the physics (print at final size, scan from the real distance with an older phone in dim light and glare). Probe the damage margin before committing, because print-day failures are reprint-day costs. ### How to track QR code scans without a paid tool https://useqr.app/docs/how-to/how-to-track-qr-code-scans.md Point the code at a URL on your own domain carrying UTM parameters, and read the results in your own analytics. That gives you scan counts, timing and placement attribution with no third party in the path and no subscription that can lapse. ### How to use Google Analytics with QR codes https://useqr.app/docs/how-to/how-to-use-google-analytics-with-qr-codes.md Tag each code's URL with UTM parameters, then read scans in GA4 under Acquisition by filtering the session source and medium dimensions. Use the Realtime report to field-test a placement in seconds. GA cannot see scans that never loaded the page, and blockers make it undercount against server logs. ### A/B testing QR code placement https://useqr.app/docs/marketing/ab-testing-qr-code-placement.md Print two codes with identical destinations and distinct tracking parameters, change exactly one variable — position, size or wording — and compare scans. Be honest about volume, though — distinguishing a 1% from a 1.5% response takes roughly 8,000 impressions per variant, so on small runs test only big, obvious changes. ### One QR code for all your socials https://useqr.app/docs/marketing/one-qr-code-for-all-your-socials.md Print one code pointing at a hub page that lists every profile. The structural rule: you can update destinations without reprinting only if the hub lives on a domain you control. A hub on a link-in-bio service dies with your subscription; a page at yourdomain.com/links outlives every platform. ### Writing the text next to a QR code https://useqr.app/docs/marketing/qr-code-call-to-action.md The words beside a QR code matter more than its design. A stated, specific benefit — "Scan for the wine list" — consistently outperforms "Scan me", and a code with no text at all is close to decoration. ### QR code for a creator tip jar https://useqr.app/docs/marketing/qr-code-for-a-creator-tip-jar.md Match the rail to your audience — UPI in India, PIX in Brazil, PayNow in Singapore, EPC transfers in much of Europe, and payment-app profile links in the US. Leave the amount open, size the sign for a 1–2 m scan at 10–20 cm wide, and laminate anything that lives outdoors. ### QR code for a Discord invite https://useqr.app/docs/marketing/qr-code-for-a-discord-invite.md Discord invite links expire after seven days by default — the single biggest trap for print. Before generating the code, create an invite set to never expire with unlimited uses, encode that URL, and prepare moderation for the join surge a physical drop produces. Test-scan the printed proof before distributing. ### QR code for a giveaway https://useqr.app/docs/marketing/qr-code-for-a-giveaway.md Point the code at an entry form URL carrying a source parameter per placement, and enforce the rules server-side — a printed QR is public, copyable data, so it cannot limit entries to one per person or prove anyone stood in your venue. Print the terms URL beside the code, not only behind it. ### QR code for a LinkedIn profile https://useqr.app/docs/marketing/qr-code-for-a-linkedin-profile.md Set a custom public-profile URL, encode linkedin.com/in/yourname, and print it on name badges, resumes and closing slides. LinkedIn's app has a built-in QR for phone-to-phone connecting, but a plain URL code works from any camera. When the goal is saving contact details rather than connecting, a vCard code is the better payload. ### QR code for a newsletter signup https://useqr.app/docs/marketing/qr-code-for-a-newsletter-signup.md Point the code at a one-field signup form — email only — with a source parameter per placement, and put it where people wait, at tills, on packaging, badge backs and closing slides. On phones every extra form field costs signups, and for EU audiences confirmed double opt-in keeps the list clean and lawful. ### QR code for a podcast https://useqr.app/docs/marketing/qr-code-for-a-podcast.md Podcasts have no visual surface, and cover art fails the arithmetic — at the 56–60 px thumbnail size where art is actually seen, a QR code's modules are under 2 px and cannot resolve. Put codes on promo cards, stickers, event banners and slides instead, pointing at one follow page listing every app. ### QR code for a WhatsApp group https://useqr.app/docs/marketing/qr-code-for-a-whatsapp-group.md Encode the group's invite link — chat.whatsapp.com followed by an opaque invite code — but know that any admin who taps "reset link" instantly kills every printed copy, so agree link ownership before printing. For one-to-one chat a wa.me number link is the right payload instead, and joiners' phone numbers are visible to the whole group. ### QR code for a YouTube channel https://useqr.app/docs/marketing/qr-code-for-a-youtube-channel.md Put the QR code on physical things — merch, banners, business cards, packaging — pointing at your handle URL, youtube.com/@handle. Inside a video, descriptions and end screens are already tappable, so a code only earns its place for viewers watching on a TV, who cannot open links any other way. ### QR code for event photo sharing https://useqr.app/docs/marketing/qr-code-for-event-photo-sharing.md Make the shared album's invite link the code's destination, print it on table cards at 5 cm or larger, and decide privacy before the event — anyone with the link can usually view every guest's uploads. Download the archive promptly afterwards, because the album link is the shortest-lived thing on the table. ### QR code for your Instagram bio https://useqr.app/docs/marketing/qr-code-for-instagram-bio.md Point a QR code at instagram.com/yourusername and put it on packaging, posters and cards — it opens your profile, and your bio link, from any camera app. Even the maximum 30-character username gives a 52-character URL that fits a 33-module code small enough for a business card. ### QR codes in Reels and TikToks — usually the wrong tool https://useqr.app/docs/marketing/qr-code-in-a-reel-or-tiktok.md Usually, don't — a Reel or TikTok is watched on the very phone that would scan the code, so viewers must screenshot first. The exceptions are TV playback, desk viewers with a second device, and deliberate pause-and-screenshot tutorials. If you do it, hold the code on screen for at least five seconds. ### QR codes at trade shows https://useqr.app/docs/marketing/qr-codes-at-trade-shows.md Your own QR codes beat rented badge scanners for speed — a prefilled form code per demo station captures leads into your system the moment someone scans, with the station recorded as source, while organiser badge-scan exports often arrive days after the show. Size booth-panel codes 10–30 cm for 1–3 m viewing. ### QR codes for social media — what works and what is absurd https://useqr.app/docs/marketing/qr-codes-for-social-media.md A QR code earns its place where print meets a phone — packaging, posters, counters, badges, merch pointing at a profile URL. It is pointless inside a post viewed on the phone that would scan it; use a tappable link there. Print one code, to one destination you control. ### QR codes for webinar signup https://useqr.app/docs/marketing/qr-codes-for-webinar-signup.md For slide codes, size for the room — the ten-to-one rule means a back row 10 m away needs a code about a metre wide, a third of a typical projection. Audiences photograph slides and scan later, so leave the code up through Q&A and pair it with a short URL and a calendar step. ### QR codes in direct mail https://useqr.app/docs/marketing/qr-codes-in-direct-mail.md A QR code collapses a mailer's weakest step — typing a URL — into one scan, and mail is read at a table with the phone nearby, so dwell is on your side. Personalised per-recipient codes generated from your mailing list attribute responses to individual recipients, a measurement most channels cannot offer. ### QR codes in influencer campaigns https://useqr.app/docs/marketing/qr-codes-in-influencer-campaigns.md Give every influencer their own code — same landing page, distinct tracking parameter — so merch, inserts and meet-up signage attribute offline reach per person. Generate the set from a spreadsheet in one batch. Disclosure rules follow the campaign onto print, and scans measure response, not influence, so read them accordingly. ### QR codes in out-of-home advertising https://useqr.app/docs/marketing/qr-codes-in-out-of-home-advertising.md Placement physics decides everything — a scan needs a stopped viewer within reach and a code at least one tenth of the viewing distance wide. Street furniture and transit interiors, at 1 to 3 metres with 30 seconds or more of dwell, work well. A roadside billboard at 50 metres and 2 seconds never will. ### QR codes in print advertising https://useqr.app/docs/marketing/qr-codes-in-print-advertising.md Magazine presses print at resolutions far above the 300 DPI a QR code needs, so quality is rarely the problem — placement is. Keep the code out of the gutter, where binding curvature warps the grid, size it 3–4 cm for arm's-length reading, and give each publication its own tracking parameter. ### QR codes in TV ads https://useqr.app/docs/marketing/qr-codes-in-tv-ads.md TV QR codes work — Coinbase's 2022 Super Bowl ad, sixty seconds of a bouncing code, drove so much traffic the app buckled — but the physics are strict. At a typical 2.5–3 m viewing distance the code needs to be roughly a quarter of the screen wide and on screen for five seconds or more. ### What scan rate should you expect? https://useqr.app/docs/marketing/what-scan-rate-should-you-expect.md Nobody can tell you an average QR scan rate, because scan rate is scans divided by impressions and no platform can count who walked past a poster. Published vendor averages are survivorship-biased marketing. What actually predicts scans, in order: dwell time, a specific stated benefit, size for distance, and destination quality. ### BharatQR, explained https://useqr.app/docs/payments/bharatqr-explained.md BharatQR is India's interoperable payment QR built on the EMVCo merchant-presented format, launched in 2017 by NPCI with the card networks. One code accepts RuPay, Visa and Mastercard as well as UPI. You cannot self-generate one — your acquiring bank or PSP issues it with your merchant credentials. ### Crypto QR code safety — the address is the attack surface https://useqr.app/docs/payments/crypto-qr-code-safety.md Crypto QR risks concentrate in one place — the address. Malware swaps addresses on clipboards, fake codes get pasted over genuine ones, and a confirmed transfer cannot be reversed. Verify the first and last four characters on the receiving device, send a small test amount first, then send the balance. ### DuitNow QR in Malaysia — one code for every bank and wallet https://useqr.app/docs/payments/duitnow-qr-malaysia.md DuitNow QR is Malaysia's national QR payment standard, operated by Payments Network Malaysia (PayNet) under Bank Negara's Interoperable Credit Transfer Framework. One EMVCo-based code accepts payment from any participating Malaysian bank or e-wallet app, addressed by mobile number, NRIC, passport number or business registration number. ### EMVCo consumer-presented QR — when the customer shows the code https://useqr.app/docs/payments/emvco-consumer-presented-qr.md In EMVCo's consumer-presented mode the roles reverse — the customer's app displays a short-lived QR containing a payment token, and the merchant's scanner reads it. It suits high-throughput checkout lanes because the till initiates the charge, and the code rotates frequently, so a captured screenshot quickly expires. ### EMVCo merchant-presented QR — the spec behind PIX, QRIS and PromptPay https://useqr.app/docs/payments/emvco-merchant-presented-qr.md EMVCo's merchant-presented QR specification defines the tag-length-value payload behind PIX, PromptPay, QRIS, DuitNow, PayNow, VietQR and BharatQR. Every field is a two-digit id, two-digit length and value; ids 26 to 51 carry scheme-specific templates, field 54 the amount, and field 63 a CRC16 checksum closing the payload. ### The EPC QR code format (GiroCode), line by line https://useqr.app/docs/payments/epc-qr-code-format.md An EPC QR code is twelve lines of text in fixed order, starting with BCD and containing the beneficiary name, IBAN and optionally an amount. The whole payload must stay under 331 bytes, and lines 10 and 11 are mutually exclusive. ### Putting an EPC QR code on an invoice — placement and workflow https://useqr.app/docs/payments/epc-qr-on-an-invoice.md Place the EPC QR code next to the payment details near the invoice total, with the amount and invoice reference prefilled and the IBAN printed as text beside it. The payer scans it inside their banking app, sees name, IBAN and amount already filled in, and confirms — no typing, no transposed digits. ### Girocode explained — Germany's name for the EPC QR code https://useqr.app/docs/payments/girocode-explained.md Girocode is the German name for the EPC QR code — the same EPC069-12 twelve-line payload that begins BCD and prefills a SEPA credit transfer. It works only when scanned from inside a banking app; a phone camera sees plain text rather than a link, so nothing opens. ### Lightning invoice QR codes — BOLT11, LNURL and the uppercase trick https://useqr.app/docs/payments/lightning-invoice-qr.md A Lightning invoice is a bech32 string beginning lnbc that encodes amount, destination and expiry — often 200 or more characters that nobody could type, which is why Lightning payments travel as QR codes. Encode the invoice in upper case so the QR uses alphanumeric mode and stays noticeably smaller. ### PayNow QR in Singapore — proxies, UEN codes and the SGQR sticker https://useqr.app/docs/payments/paynow-qr-singapore.md PayNow is Singapore's instant transfer service, run by the Association of Banks in Singapore with MAS oversight. A PayNow QR addresses a proxy — mobile number, NRIC/FIN or a company's UEN — while SGQR combines PayNow and other payment schemes into the single unified sticker seen at most counters. ### PIX copia e cola — the copy-paste twin of the QR code https://useqr.app/docs/payments/pix-copia-e-cola.md PIX copia e cola is the same EMV BR Code string as the PIX QR code, presented as text for copy-and-paste. Generate one payload and offer both forms — the QR for another phone's camera, the text for the same-phone case, where a customer cannot scan a code displayed on their own screen. ### The PIX CRC16 checksum, and why hand-edited codes always fail https://useqr.app/docs/payments/pix-crc16-checksum.md PIX uses CRC16/CCITT-FALSE — polynomial 0x1021, initial value 0xFFFF, no reflection, no final XOR — computed over the entire payload including the literal 6304 prefix, and written as four uppercase hex digits in field 63. Any edit made without recomputing the checksum makes every banking app reject the code. ### PIX key types, and which to use on a printed code https://useqr.app/docs/payments/pix-key-types.md A PIX key can be a CPF, CNPJ, email, phone number or a random EVP UUID. For anything printed publicly, use a random EVP key: it works identically but reveals neither your tax id nor your phone number, and it can be rotated. ### The PIX QR code format: EMV BR Code explained https://useqr.app/docs/payments/pix-qr-code-format.md A PIX QR code is an EMVCo BR Code: tag-length-value fields ending in a CRC16/CCITT-FALSE checksum. The same string is also copia e cola, which people paste when they cannot scan — always print it alongside the code. ### A PIX QR code for a small business — the complete counter setup https://useqr.app/docs/payments/pix-qr-for-small-business.md A static PIX QR with a random EVP key covers counter payments at zero cost — the customer scans, types the amount, and pays instantly. Print the code at 4 cm or larger with the copia e cola string and your business name beside it, and reconcile payments from your bank or PSP statement. ### Static vs dynamic PIX QR codes — which one your business needs https://useqr.app/docs/payments/pix-static-vs-dynamic-qr.md A static PIX QR carries your key and optionally an amount, costs nothing, and can be reused forever — point of initiation field 01 is 11. A dynamic PIX QR is generated per transaction by a PSP, sets field 01 to 12, carries a resolvable URL, expires, and confirms payment by webhook. ### PIX vs UPI — the two giant instant-payment QR systems compared https://useqr.app/docs/payments/pix-vs-upi-compared.md PIX and UPI both settle instantly and cost individuals nothing, but differ architecturally — PIX encodes an EMVCo tag-length-value string with a CRC16 checksum, run by the Banco Central do Brasil since 2020; UPI encodes a upi://pay deep link, run by India's NPCI since 2016. Neither system can read the other's codes. ### Printing a UPI QR standee https://useqr.app/docs/payments/printing-a-upi-qr-standee.md Size the code with the 10:1 rule — customers scan a counter standee from 60–100 cm, so print the code 6–10 cm wide. A5 suits the counter, A4 a wall. Use matt lamination, since gloss glare is the classic standee failure, and print the business name and VPA beside the code. ### PromptPay QR in Thailand — how the national payment code works https://useqr.app/docs/payments/promptpay-qr-thailand.md PromptPay is Thailand's national instant-payment system, launched in 2017 under the Bank of Thailand's National e-Payment plan. Its QR codes are EMVCo merchant-presented payloads that address a proxy — a mobile number, national ID number or e-wallet ID — and every Thai banking app can read every code. ### QR codes for invoices — match the code to the customer's rail https://useqr.app/docs/payments/qr-code-for-invoices.md Match the invoice QR to the customer's payment rail — an EPC code for SEPA invoices, PIX for Brazil, UPI for India, a Swiss QR-bill in Switzerland, and a payment-link URL elsewhere. Prefill the exact amount and the invoice number as the reference, and place the code beside the total. ### QR codes on receipts — the post-purchase moment, printed at 203 dpi https://useqr.app/docs/payments/qr-code-on-a-receipt.md Receipt QR codes work because the moment is post-purchase — a review request, a digital copy, a warranty registration or a fiscal-authority code. On a 203 dpi thermal printer, size the code so each module is a whole number of printer dots, and keep it clear of the tear line. ### QR code tipping — open-amount codes done honestly https://useqr.app/docs/payments/qr-code-tipping.md A tipping QR is an open-amount payment code — UPI, PIX or PayNow with no amount set, or a Venmo or Cash App link in the US — worn on a badge or placed at the counter. The payer chooses the amount; your job is placement, a polite prompt, and saying where the money goes. ### QR payment standards compared: UPI, PIX, EPC, EMVCo https://useqr.app/docs/payments/qr-payment-standards-compared.md UPI uses its own upi:// deep link; PIX, PromptPay, QRIS, DuitNow and PayNow are all EMVCo tag-length-value profiles; EPC uses a twelve-line text block. They are structurally different and none are interchangeable, though all are merchant-presented. ### QR payments in Africa — mobile money first, QR as the overlay https://useqr.app/docs/payments/qr-payments-in-africa.md African QR payments layer on top of mobile money — M-Pesa built Kenya's rails on USSD in 2007, long before smartphones, and QR arrived later as a convenience. Ghana's GhQR and Nigeria's NQR now provide national interoperable QR standards, but USSD still carries most volume where data and smartphones are scarce. ### QRIS in Indonesia — the strongest case for one national QR standard https://useqr.app/docs/payments/qris-indonesia.md QRIS is Indonesia's single mandated payment QR standard. Since 1 January 2020, Bank Indonesia has required every payment QR in the country to be QRIS, so any licensed app — GoPay, OVO, DANA, ShopeePay or a bank app — can pay any QRIS code, and merchant fees are set nationally rather than negotiated. ### SEPA QR codes and instant payments — the code names the payment, not the speed https://useqr.app/docs/payments/sepa-qr-and-instant-payments.md An EPC QR code initiates a SEPA credit transfer but does not choose how fast it settles. If the payer's bank sends it as a SEPA Instant payment, the money arrives in under ten seconds at any hour. Since 2025, EU regulation requires euro-area banks to offer instant transfers at no premium. ### Static vs dynamic UPI QR codes https://useqr.app/docs/payments/static-vs-dynamic-upi-qr.md A static UPI code omits the amount, so the customer types it — that is the printed shop standee, generated once and used forever. A dynamic code sets am for a specific transaction and is shown on a screen. Printing a fixed amount is almost always a mistake. ### Stripe Payment Link QR codes — card checkout on a poster https://useqr.app/docs/payments/stripe-payment-link-qr.md A Stripe Payment Link is a hosted checkout URL, and a QR code of that URL turns any poster, invoice or menu into a card checkout. It suits card and international payments where no shared bank rail exists — but processing fees apply, and deactivating the link kills every printed code. ### The Swiss QR-bill — Switzerland's own payment code, not an EPC QR https://useqr.app/docs/payments/swiss-qr-bill.md The Swiss QR-bill is Switzerland's own invoice payment standard, not an EPC QR code. It fully replaced the orange and red payment slips on 30 September 2022, prints as a 46 x 46 mm code with a Swiss cross in the centre, and carries a QR-IBAN plus a 27-character QR reference. ### The UPI QR code format, parameter by parameter https://useqr.app/docs/payments/upi-qr-code-format.md A UPI QR code is a upi://pay deep link. pa (the VPA) and pn (payee name) are required; am, cu, tn, tr, mc and mode are optional. NPCI standardised it, so one code works in every UPI app — Google Pay, PhonePe, Paytm, BHIM and every bank app. ### UPI QR code limits and charges https://useqr.app/docs/payments/upi-qr-code-limits-and-charges.md Generating a UPI QR code costs nothing and receiving person-to-person payments is free, typically capped around ₹1 lakh per day. Merchant payments carry zero MDR as of 2026. Actual limits are layered — NPCI framework, then your bank, then your app — so the binding number lives with your bank. ### A UPI QR code for a freelancer https://useqr.app/docs/payments/upi-qr-for-a-freelancer.md Use a upi://pay code with tr set to the invoice number, so the payment comes back in your statement with a matchable reference. A personal VPA is fine to start; sustained business volume is safer on a PSP-issued merchant VPA. Embed the code in the PDF invoice itself. ### A UPI QR code for a small shop https://useqr.app/docs/payments/upi-qr-for-a-small-shop.md Generate a static code from your VPA with no amount, print it at 4 cm or larger on matt stock, put your business name in large text beside it, and check the standee at the start of every shift for a sticker pasted over it. ### A UPI QR code for donations https://useqr.app/docs/payments/upi-qr-for-donations.md Print an open-amount UPI code so donors choose what to give, register the VPA in the organisation's name rather than a person's, and print that name large beside the code. Donor apps display the bank-registered name on the confirmation screen, which is the trust signal that actually matters. ### A UPI QR code for rent collection https://useqr.app/docs/payments/upi-qr-for-rent-collection.md Give each tenant a code with a fixed amount and a reference that names the property — tn=RENT-FLAT-4B — and change tr monthly, for example FLAT4B-2026-08, so every statement line matches a month and a flat. For automatic collection, UPI Autopay mandates are a different rail set up in the payer's app. ### UPI QR codes in Hindi and regional languages https://useqr.app/docs/payments/upi-qr-in-hindi-and-regional-languages.md The QR payload is an ASCII upi:// URI and never needs translating — the payer's app displays its own language. Localise everything around the code instead: the call to action, the instructions and the printed name. A Hindi CTA beside an English one costs nothing and widens who scans. ### The merchant category code in a UPI QR https://useqr.app/docs/payments/upi-qr-merchant-category-code.md mc carries a four-digit ISO 18245 merchant category code — 5411 for grocery, 5812 for restaurants — classifying what the merchant sells. It feeds transaction limits, fee policy and app features. Use the MCC your PSP assigned; codes built from a personal VPA are effectively unclassified, treated like 0000. ### UPI QR security and common scams https://useqr.app/docs/payments/upi-qr-security-and-common-scams.md You never scan a QR code to receive money, and you never enter your UPI PIN to receive money — both actions only ever send it. Most UPI QR fraud is social: scan-to-receive stories, collect-request abuse, fake refunds and stickers pasted over genuine merchant codes. Check the payee name every time. ### UPI QR vs BharatQR https://useqr.app/docs/payments/upi-qr-vs-bharatqr.md A UPI QR code is a upi://pay deep link that only UPI apps read and only the UPI rail settles. BharatQR is an EMVCo tag-length-value code issued by your acquiring bank that routes card payments as well as UPI. Self-service generators, including UseQR, produce UPI codes. ### A UPI QR code with a fixed amount https://useqr.app/docs/payments/upi-qr-with-fixed-amount.md Add am with up to two decimal places to the upi://pay link and every scan pre-fills that exact amount — UPI apps treat it as merchant-set, so the payer cannot edit it. Fix the amount for tickets, tuition and price lists; leave it open for a general shop counter. ### A UPI QR code without an amount https://useqr.app/docs/payments/upi-qr-without-amount.md Leave am out of the upi://pay link and the payer types the amount before confirming. Open-amount codes suit shop counters, tips and donations where totals vary. The risk is a mis-keyed amount — ₹100 becomes ₹1,000 with one extra zero — so print prices clearly and watch larger credits. ### UPI transaction references — tr and tn https://useqr.app/docs/payments/upi-transaction-reference-tr-and-tn.md tr is your machine reference — 1 to 35 letters, digits, dots or dashes — and it comes back in settlement, so make it unique per transaction. tn is a short human note the payer sees on the confirmation screen. Use tr for reconciliation and tn for context, never the reverse. ### Venmo and Cash App QR codes — profile links, not payment standards https://useqr.app/docs/payments/venmo-and-cashapp-qr.md Venmo and Cash App QR codes are plain URLs — venmo.me profile links and cash.app $cashtag links — not open payment standards. They work only when both sides use the same app, which is the opposite of UPI or PIX, where one national code reaches every bank app. ### VietQR in Vietnam — payment codes that address bank accounts directly https://useqr.app/docs/payments/vietqr-vietnam.md VietQR is Vietnam's interoperable payment QR standard, operated by Napas on its 24/7 instant-transfer rail. Unlike proxy-based schemes, a VietQR code addresses a bank account directly — the payload carries the bank's identifier and the account number — so any Vietnamese banking app can credit any account. ### WeChat Pay and Alipay QR codes — how China's closed loops work https://useqr.app/docs/payments/wechat-pay-and-alipay-qr.md WeChat Pay and Alipay run China's two dominant QR payment systems as closed loops — their codes are proprietary app links rather than open EMVCo payloads, and only their own apps can pay them. Both offer merchant-presented and consumer-presented modes, and both now let foreign visitors link international cards. ### 300 dpi vs 600 dpi for QR codes https://useqr.app/docs/print/300-dpi-vs-600-dpi-for-qr.md At 300 dpi each dot is 0.085 mm, so any module of 0.34 mm or larger gets the four dots a clean edge needs — which covers codes above about 2 cm. Choose 600 dpi for very small codes and styled modules, and prefer vector output, which makes the resolution question disappear. ### Bleed, trim and safe area for QR codes https://useqr.app/docs/print/bleed-trim-and-safe-area-for-qr.md Keep the QR code and its full four-module quiet zone inside the safe area — at least 3 mm inside the trim line — and never let either run into bleed. Guillotines drift ±1–2 mm, and on an 85 × 55 mm business card that drift lands exactly on a quiet zone placed at the edge. ### Direct thermal vs thermal transfer for QR codes https://useqr.app/docs/print/direct-thermal-vs-thermal-transfer-for-qr.md Direct thermal prints on heat-sensitive paper that darkens again in heat and fades in sunlight — fine for labels living days to months. Thermal transfer melts ribbon resin onto the stock and is effectively permanent. Choose by label lifetime, then pick wax, wax-resin or resin ribbon by abrasion and chemical exposure. ### QR codes on Dymo and Brother label printers https://useqr.app/docs/print/dymo-and-brother-label-qr-codes.md Consumer label printers print reliable QR codes within hard limits — about 300 dpi on Dymo LabelWriter and Brother QL machines, 180 dpi on entry P-touch tape printers, and roughly 9–18 mm of printable height on 12–24 mm tape. That caps capacity — on 12 mm tape even a version 1 code is marginal. ### Ink spread and dot gain in QR codes https://useqr.app/docs/print/ink-spread-and-dot-gain-in-qr-codes.md Dot gain makes printed dark areas grow — typically 10–15% on coated stock, 20–25% on uncoated and up to 30% on newsprint. In a QR code the growth eats the light gaps between dark modules until they merge. Compensate with larger modules on absorbent stock and always scan a printed proof. ### Laminate and varnish effects on QR code scanning https://useqr.app/docs/print/laminate-and-varnish-effects-on-scanning.md Matt laminate costs a few per cent of measured contrast and removes the glare that actually stops scans — the right default for handled or outdoor codes. Gloss finishes add a mirror at exactly the angle a phone holds. Spot UV varnish over a code is a known killer — flood-coat, or knock it out over the code and quiet zone. ### The minimum size a QR code can be https://useqr.app/docs/print/minimum-qr-code-size.md Design to a 2 × 2 cm floor for close-range print. Smaller codes can technically work — a version 2 code is printable at 1 cm — but phone focus limits, module floors of 0.33–0.5 mm depending on the process, and real payload sizes make 2 cm the smallest reliable choice. ### What DPI should a QR code be printed at? https://useqr.app/docs/print/qr-code-dpi-for-printing.md Print QR codes from vector artwork — SVG or PDF — and DPI becomes irrelevant, because the RIP renders exact edges at the device's native resolution. If you must use raster, generate at final size × 300 dpi and never scale it up. ### QR codes in CMYK print https://useqr.app/docs/print/qr-code-in-cmyk-print.md Print QR modules as 100% K — single-plate black. Rich black and converted RGB black are four-colour builds, and normal press misregistration of around 0.1 mm puts a coloured fringe on every module edge, blurring the whole grid at once, which error correction cannot repair. ### Pre-press checklist for QR codes https://useqr.app/docs/print/qr-code-print-checklist.md Eight checks before any print run: scan a physical proof from the real distance, verify size against the ten-to-one rule, confirm the four-module quiet zone, keep the code clear of folds and trim, specify matt, supply vector, verify luminance contrast, and confirm the destination will still resolve. ### How a QR code size calculator works https://useqr.app/docs/print/qr-code-size-calculator-explained.md A QR size calculator derives the code's version from the payload and error correction level, then returns the larger of two constraints — printed side at least the scanning distance divided by ten, and each module at least the distance divided by 250. Dense payloads trigger the second rule, which is why long URLs need bigger codes. ### QR code size for a billboard https://useqr.app/docs/print/qr-code-size-for-a-billboard.md A billboard code read from 15 m must be about 1.5 m wide; from 50 m, 5 m wide. Most billboard QR codes are printed far smaller and are never scanned. QR earns its keep at pedestrian scale — bus shelters, platforms, street level — not with drivers passing at speed. ### QR code size for a business card https://useqr.app/docs/print/qr-code-size-for-a-business-card.md On an 85 × 55 mm card, make the code at least 1.6–2 cm for a short URL and 2.5–3 cm for a vCard. Cards are read in the hand at 15–25 cm, so distance is forgiving; module density is not — a 300-byte vCard needs version 13, which is 69 modules per side. ### QR code size for a flyer https://useqr.app/docs/print/qr-code-size-for-a-flyer.md A flyer is read in the hand at 20–40 cm, so print the QR code at 2 cm minimum and 2.5–3 cm where the layout allows. On a folded DL piece keep the code at least 8 mm clear of every fold — a crease through the pattern is the most common flyer failure. ### QR code size for a menu https://useqr.app/docs/print/qr-code-size-for-a-menu.md Print menu QR codes at 2.5–3 cm for a menu held in the hand and 4 cm if it lies flat on the table, with error correction Q for wear. Specify matt laminate — a gloss surface under a restaurant downlight throws a specular hotspot that no error correction can recover. ### QR code size for a name badge https://useqr.app/docs/print/qr-code-size-for-a-name-badge.md Make badge QR codes at least 3 cm, ideally 4–5 cm on a 10 × 7.5 cm badge. Conversation distance would demand an impossible 5–10 cm code, but people naturally hold a badge out at 20–30 cm to be scanned. Print the code on both sides — lanyard badges spin. ### QR code size for a poster https://useqr.app/docs/print/qr-code-size-for-a-poster.md Size a poster QR code at one tenth of the real viewing distance — 5 cm for a noticeboard read at 50 cm, 10 cm for a corridor at 1 m, 20–30 cm across a room at 2–3 m. Keep the code in the poster's lower half at eye height, because mounting height adds distance and angle. ### QR code size for a shipping label https://useqr.app/docs/print/qr-code-size-for-a-shipping-label.md Print shipping-label QR codes at 2–2.5 cm; handheld imagers and phone cameras read them from 10–30 cm. On a 203 dpi thermal printer make each module a whole number of printer dots — four dots is 0.5 mm — and generate the code in printer firmware rather than as a resized image. ### QR code size for a shop window https://useqr.app/docs/print/qr-code-size-for-a-shop-window.md Size shop-window QR codes at 10–20 cm for pavement viewing at 1–2 m, or 5 cm for an eye-level decal people walk right up to. Print on white-backed vinyl applied to the glass — dark modules on clear film float over the shop interior and have no stable background to contrast against. ### QR code size for a table tent https://useqr.app/docs/print/qr-code-size-for-a-table-tent.md Size table-tent QR codes at 3–4 cm — the diner directly in front sits 30–40 cm away, but the person across a four-top is 70–80 cm out and must lean in or turn the tent. Print the same code on both faces; a single-sided tent shows half the table a blank back. ### QR code size for a vehicle wrap https://useqr.app/docs/print/qr-code-size-for-a-vehicle-wrap.md Size vehicle-wrap QR codes for the parked case — 20 cm reads from 2 m on the pavement, 50 cm from across the street at 5 m. Do not aim codes at moving traffic; dwell time and angle rule it out and drivers should not scan. Use error correction Q for road grime and abrasion. ### QR code size for packaging https://useqr.app/docs/print/qr-code-size-for-packaging.md Size packaging QR codes at 2–3 cm for in-hand scanning and about 5 cm if shoppers scan from the shelf edge. On curved containers add roughly 25%, because modules near the label's edges foreshorten. Use error correction Q — transit scuffing is the localised damage EC exists to repair. ### What size should a QR code be? https://useqr.app/docs/print/qr-code-size-for-print.md Printed width should be at least the scanning distance divided by ten. A code read from 30 cm needs 3 cm; from 2 m, 20 cm; from 10 m, 1 m. If there is not enough room, shorten the payload so the code has fewer, larger modules rather than shrinking the code. ### QR code size on a TV screen https://useqr.app/docs/print/qr-code-size-on-a-tv-screen.md Size TV QR codes in centimetres of panel, not pixels — viewers sit 2–4 m away, which demands a 20–40 cm code. At 2.5 m that is 25 cm, which is 26% of a 43-inch screen's width, 21% of a 55-inch and 17% of a 65-inch. Keep it inside the title-safe area and hold it on screen. ### Etched vs printed QR codes — durability against contrast https://useqr.app/docs/print/qr-codes-etched-vs-printed.md Printing wins on contrast and cost; etching wins on lifetime. An etched mark alone is often low-contrast — same material, different texture — so etched codes usually need paint infill or an anneal-style colour change. Outdoors and on handled items, etch then fill: the geometry survives abrasion and the fill supplies contrast. ### QR codes in cold storage and freezers https://useqr.app/docs/print/qr-codes-in-cold-storage-and-freezers.md Cold rarely stops a scan — condensation and adhesive failure do. Frost and the fog that forms when goods move between freezer and dock obscure modules, and standard label adhesives will not bond below roughly +5 °C application temperature. Use freezer-grade adhesive, oversized modules with error correction H, and place labels where frost forms least. ### QR codes on curved surfaces https://useqr.app/docs/print/qr-codes-on-curved-surfaces.md Curvature foreshortens the far edges of a code and decoders only tolerate so much of that distortion. Keep the code width to one sixth of the cylinder circumference or less, centre it on the visible face, and for narrow tubes move the code to a flat surface such as the cap or a tag. ### QR codes on cylindrical packaging — cans, bottles and jars https://useqr.app/docs/print/qr-codes-on-cylindrical-packaging.md Divide the container's circumference by six to get the maximum QR code width. A slim 330 ml can (16.6 cm circumference) caps the code at about 2.8 cm; a standard can at 3.4 cm; a wine bottle at 3.9 cm. Below a 3 cm diameter, move the code to the cap or a tag. ### QR codes on fabric — what survives the weave https://useqr.app/docs/print/qr-codes-on-fabric.md Fabric texture breaks fine detail — keep modules at 1.5–2 mm minimum on knits, around 1 mm on tight weaves, and use error correction Q or H. DTG printing holds detail best, heat-transfer vinyl is close behind, screen printing is coarsest. Place codes where the garment lies flat, because stretch distortion breaks codes that scanned in the studio. ### QR codes on glass — why etched codes fail and what works https://useqr.app/docs/print/qr-codes-on-glass.md Sandblasted or laser-etched glass has almost no luminance contrast of its own — frosted marks read against whatever is behind the glass, so a bare etched code fails. Make glass codes scannable with paint infill, a printed white underlayer beneath dark modules, a fixed dark backing, or a removable window cling. ### QR codes on glossy surfaces — glare and how to beat it https://useqr.app/docs/print/qr-codes-on-glossy-surfaces-and-glare.md Gloss surfaces reflect light sources specularly — at the mirror angle the reflection saturates the camera and whites out modules, and a phone flash creates a hotspot exactly where the lens looks. Matt laminate scatters that reflection and scans far more reliably. Tilt glossy codes 15–30° away from lights and expected viewing angles. ### QR codes on metal — marking processes that scan https://useqr.app/docs/print/qr-codes-on-metal.md Metal gives a QR code decades of life but contrast is the battle — raw engraving is grey-on-grey until you add paint infill or an oxide layer. Laser annealing marks stainless steel black without cutting, photo-anodising seals dye under aluminium oxide, and brushed finishes scan better than polished because they scatter glare. ### QR codes on uncoated paper https://useqr.app/docs/print/qr-codes-on-uncoated-paper.md Uncoated paper absorbs ink, so printed modules gain roughly 15–25% and the white gaps between them narrow. Keep modules at 0.5 mm or larger, use plain square modules, and shorten the payload before shrinking the code. On brown kraft, add a white underprint to restore contrast. ### QR codes on wood — grain, species and laser settings https://useqr.app/docs/print/qr-codes-on-wood.md Wood grain competes with module edges, so engrave with modules at 1 mm or larger and choose pale, fine-grained species — maple and birch char to a dark, even mark, while walnut is too dark for good contrast and pine burns unevenly around resin. Seal outdoor pieces, because bare char weathers to grey. ### QR code durability outdoors https://useqr.app/docs/print/qr-codes-outdoors-durability.md Outdoor QR codes fail from UV fading, water ingress, abrasion and lichen — in that order. Use error correction Q or H, a UV-stable substrate with matt laminate, and expect printed vinyl to last two to five years depending on orientation and climate. ### QR codes that survive dishwashers https://useqr.app/docs/print/qr-codes-that-survive-dishwashers.md A dishwasher cycle is 60–75 °C water and alkaline detergent for over an hour, repeated hundreds of times. Only kiln-fired ceramic decals and laser-etched marks with fired or epoxy infill reliably survive it — surface UV prints fade within weeks of daily washing and vinyl peels. Test any process with 20 consecutive cycles, then scan. ### Spot colour and Pantone QR codes https://useqr.app/docs/print/spot-color-and-pantone-qr-codes.md A QR code in one dark Pantone spot prints from a single plate, so edges stay crisp with no registration risk. The ink must be dark — keep at least a 40% luminance difference against the stock. Navies, deep reds and greens work; yellows, oranges, pastels and every metallic fail. ### The 10:1 QR code distance rule, derived https://useqr.app/docs/print/the-10-to-1-distance-rule.md Print a QR code at least one tenth as wide as its scanning distance. At that ratio the code fills roughly 8% of a phone camera's frame, giving the decoder around 4 pixels per module on a mid-density code. Switch to 8:1 in poor light, at an angle, or for dense codes. ### QR codes on thermal printers — dots, density and fading https://useqr.app/docs/print/thermal-printer-qr-codes.md Thermal label printers are 203 or 300 dpi, so each module must be a whole number of printer dots — at 203 dpi one dot is 0.125 mm and a readable module needs at least four. Use the printer's native QR command rather than an image, and remember direct thermal prints fade in weeks to months in heat and light. ### UV fading and QR codes — which inks survive sunlight https://useqr.app/docs/print/uv-fading-and-qr-codes.md UV light breaks down inks asymmetrically — colour pigments fade years before carbon black, and dye-based inks fade fastest of all. A QR code fails once fading pushes contrast under roughly 40% luminance difference, long before it looks blank. Expect months from aqueous dye prints, years from solvent and UV-cured inks, decades from engraving. ### Weatherproof QR code stickers — the material stack that lasts https://useqr.app/docs/print/weatherproof-qr-code-stickers.md A weatherproof QR sticker is a stack — UV-stable printed vinyl, a matt UV overlaminate and an outdoor-grade adhesive. Monomeric vinyl lasts 1–3 years outdoors, polymeric 5–7, cast longer. Round the corners, squeegee the edges down hard, and when you need more than about seven years, an anodised metal plate beats any sticker. ### Why you should print QR codes from SVG https://useqr.app/docs/print/why-you-should-print-qr-codes-from-svg.md An SVG QR code is a set of exact rectangles, and the print RIP renders them at the device's native resolution with no interpolation. A raster PNG placed at the wrong size gets resampled instead — module edges become grey ramps, ink spread finishes them off, and the printed code fails. ### Zebra and label printer settings for QR codes https://useqr.app/docs/print/zebra-and-label-printer-qr-settings.md Three settings decide whether a Zebra-printed QR scans — darkness (too high bleeds modules together, too low prints grey), print speed (slower is sharper; 2–4 in/s for dense codes) and using the native ^BQ command so modules land on exact dot boundaries. Then verify by scanning a label from every new roll. ### ZPL QR code command reference — ^BQ explained https://useqr.app/docs/print/zpl-qr-code-command-reference.md In ZPL, ^BQ prints a QR code: ^BQa,b,c with a = orientation (N), b = model (default 2) and c = magnification 1–10 (dots per module). Error correction and input mode ride in the field data — ^FDQA,https://example.com^FS means EC level Q, automatic input. Magnification times printer dot size sets the module size. ### QR alignment pattern position table — versions 2 to 40 https://useqr.app/docs/reference/alignment-pattern-position-table.md Alignment pattern centres sit at fixed coordinates per version, tabulated in Annex E of ISO/IEC 18004. The first centre is always at module 6, the last always seven modules from the far edge, and a version with n coordinate values carries n² − 3 patterns — from one at version 2 to 46 at version 40. ### QR character set reference — modes, values and indicators https://useqr.app/docs/reference/character-set-reference.md Alphanumeric mode covers exactly 45 characters with values 0–44. Digits 0–9 map to values 0–9, letters A–Z to 10–35, then space, $, %, *, +, -, ., / and : take 36–44. Lowercase letters are not in the set, so one lowercase character pushes the whole segment into byte mode. ### QR error correction capacity table — data vs EC codewords https://useqr.app/docs/reference/error-correction-capacity-table.md Every QR version has a fixed codeword budget split between data and error correction. Version 1 has 26 codewords, 19 data and 7 error correction at level L, but 9 and 17 at level H. Version 40 ranges from 2,956 data codewords at L to 1,276 at H. The table lists all forty versions. ### QR mask pattern reference — formulas, penalties, format bits https://useqr.app/docs/reference/mask-pattern-reference.md Eight mask patterns, numbered 0 to 7, decide which data modules are inverted; mask 0 inverts where (row + column) mod 2 equals 0. The encoder draws all eight, scores each against penalty rules N1–N4 with weights 3, 3, 40 and 10, and keeps the mask with the lowest total. ### QR code data capacity table https://useqr.app/docs/reference/qr-code-capacity-table.md The maximum a QR code can hold is 7,089 digits, 4,296 uppercase alphanumeric characters, 2,953 bytes or 1,817 kanji — all at version 40, error-correction level L. Raising to level H cuts each figure by roughly 57%. ### QR code size by scanning distance https://useqr.app/docs/reference/qr-code-size-by-distance-table.md Printed width should be at least the scanning distance divided by ten. This table applies that rule across the distances that occur in practice, from a business card at 25 cm to large-format signage at 30 m. ### QR code version and module count table https://useqr.app/docs/reference/qr-code-version-and-module-table.md Every QR version's module count follows one formula: 17 + 4 × version. Version 1 is 21 × 21 modules and version 40 is 177 × 177. This table lists all forty, alongside the number of alignment patterns each carries. ### Recommended error correction level by use case https://useqr.app/docs/reference/recommended-ec-level-by-use-case-table.md Use level M for most printed material and screens, Q for outdoor signage and anything handled or laminated, H whenever a logo covers part of the code, and L only when a dense payload needs the smallest possible symbol. The levels tolerate roughly 7%, 15%, 25% and 30% damage respectively. ### 2D imager vs laser scanner https://useqr.app/docs/scanning/2d-imager-vs-laser-scanner.md A laser scanner sweeps a single line of light and reads reflectance along it, so it can only decode one-dimensional barcodes. A QR code stores data in two axes, which a line sweep physically cannot capture. A 2D imager is a small camera with an onboard decoder and reads both. ### Batch scanning many QR codes https://useqr.app/docs/scanning/batch-scanning-many-qr-codes.md Three workflows scale past a handful of scans: a hardware 2D imager in keyboard-wedge mode typing each result into a spreadsheet row, a phone scanner app with a batch mode, or posting images to a decode API in a loop. Whichever you pick, deduplicate results and timestamp every scan. ### Camera permissions and QR scanning https://useqr.app/docs/scanning/camera-permissions-and-qr-scanning.md Browsers only expose the camera on HTTPS pages, and each site needs a one-time permission grant — look for the camera icon in the address bar if scanning fails. A blocked camera is the most common reason web scanners fail, which is why good ones also accept image uploads. ### Do you need a QR scanner app? https://useqr.app/docs/scanning/do-you-need-a-qr-scanner-app.md No. Every iPhone since iOS 11 (2017) and effectively every current Android scans QR codes from the built-in camera. Standalone scanner apps add history, batch scanning and URL preview, but most are ad-funded and can see everything you scan. For a one-off need, a browser-based scanner installs nothing. ### Google Lens and QR scanning https://useqr.app/docs/scanning/google-lens-qr-scanning.md Google Lens decodes QR codes from the live camera, screenshots and saved images on Android, and shows a preview of the destination before opening it. Lens is a cloud visual-search service, though, so images it analyses are processed on Google's servers — use a local decoder for anything sensitive. ### Hardware barcode scanners and QR codes https://useqr.app/docs/scanning/hardware-barcode-scanners-and-qr.md Dedicated 2D imagers decode a QR in tens of milliseconds, tolerate motion and poor light far better than phones, and type the result straight into any software as keyboard input. Rule of thumb: above roughly 200 scans per day per station, a purpose-built imager pays for itself in speed and error rate. ### How to scan a damaged QR code https://useqr.app/docs/scanning/how-to-scan-a-damaged-qr-code.md Crop the image to just the code, flatten it square-on, boost the contrast, and cover damaged areas with clean white before scanning. Error correction can rebuild up to 30% of the data at level H, but nothing recovers a destroyed finder pattern — the three corner squares must survive. ### How to scan a QR code from a photo https://useqr.app/docs/scanning/how-to-scan-a-qr-code-from-a-photo.md Open the photo and let the OS decode it, long-press in Photos on iPhone (Live Text), tap the Lens icon in Google Photos on Android, or upload the file to a browser-based scanner on a computer. If it fails, crop tightly to the code and increase contrast, then retry. ### How to scan a QR code from a screenshot https://useqr.app/docs/scanning/how-to-scan-a-qr-code-from-a-screenshot.md Take the screenshot, then decode it from the image, on iPhone, long-press the code in Photos (Live Text); on Android, open it in Google Photos and tap Lens; on a computer, upload it to a browser-based scanner. The camera cannot scan its own screen, so image decoding replaces it. ### How to scan a QR code on a computer https://useqr.app/docs/scanning/how-to-scan-a-qr-code-on-a-computer.md No desktop operating system ships a general QR scanner, so use a browser-based one, upload a screenshot or point your webcam at the code. A client-side scanner decodes the image in the browser without uploading it, shows the text, and needs no installation on Windows, macOS or Linux. ### How to scan a QR code on Android https://useqr.app/docs/scanning/how-to-scan-a-qr-code-on-android.md Open the camera app and point it at the code; most Android phones since Android 9 show a link banner via Google Lens. If nothing appears, open Google Lens directly, or pull down quick settings and tap the QR scanner tile on Android 13 and later. ### How to scan a QR code on iPhone https://useqr.app/docs/scanning/how-to-scan-a-qr-code-on-iphone.md Open the Camera app and point it at the code — iPhones scan QR codes natively since iOS 11 (2017). Tap the banner to open the link. For a code already on your phone, long-press it in Photos, or add the Code Scanner to Control Centre for an in-app browser. ### How to scan a QR code on the same phone https://useqr.app/docs/scanning/how-to-scan-a-qr-code-on-the-same-phone.md A phone cannot point its camera at its own screen, so screenshot the code and decode the image instead, long-press it in Photos on iPhone, or open it with Google Lens on Android. If the code is in an app or email, check for a plain link nearby first. ### How to scan a QR code without an app https://useqr.app/docs/scanning/how-to-scan-a-qr-code-without-an-app.md You have not needed a QR scanner app since 2017. iPhones scan from the Camera app since iOS 11, and Android phones scan via the camera or Google Lens. On computers, a browser-based scanner decodes screenshots and webcam frames with nothing installed. Dedicated scanner apps are now mostly adware. ### How to scan a QR code on any device https://useqr.app/docs/scanning/how-to-scan-a-qr-code.md On iPhone and Android, open the camera app and point it at the code — a banner appears with the destination. No separate app is needed on any current phone. On a computer, upload a screenshot to a browser-based scanner rather than installing anything. ### Motion blur and QR scanning https://useqr.app/docs/scanning/motion-blur-and-qr-scanning.md Motion blur smears modules across the sensor when the code or camera moves during the exposure. At 50 km/h a passing car covers 14 m per second, so a typical 1/60 s exposure smears the image about 23 cm — far wider than any module. Codes must be read from a stop or near-stop. ### Offline QR scanning https://useqr.app/docs/scanning/offline-qr-scanning.md QR decoding is always offline — the camera and decoder run entirely on the phone, and no network is needed to read the code. The internet only matters afterwards, if the payload is a URL to open. WiFi credentials, contact cards, plain text, geo coordinates and calendar events all work with no connection. ### QR scanning at an angle https://useqr.app/docs/scanning/qr-scanning-at-an-angle.md Phone decoders correct perspective reliably to about 30–45° off-axis, using the three finder patterns and alignment patterns to un-skew the grid. Beyond that, foreshortening compresses modules below the sampler's resolution in one axis and decoding fails. Mount codes at eye height, square to the reader's approach. ### How QR scanning works in a browser https://useqr.app/docs/scanning/qr-scanning-in-a-browser.md Browser QR scanning combines getUserMedia camera access with a decoder, the native BarcodeDetector API in Chromium browsers, or a WebAssembly decoder such as zxing everywhere else. Frames are processed in the page, so a well-built scanner never uploads your camera image — decoding happens entirely on your device. ### QR scanning in low light https://useqr.app/docs/scanning/qr-scanning-in-low-light.md QR scanning fails in low light because the camera lengthens exposure to gather light, and a longer exposure turns hand shake into motion blur across the modules. Add light, brace the phone, or use the torch — but angle it off glossy surfaces, where the reflected hotspot washes out part of the code. ### QR scanning on feature phones https://useqr.app/docs/scanning/qr-scanning-on-feature-phones.md Some feature phones can scan QR codes — KaiOS devices such as the JioPhone include or can install a reader — but many cannot. Print a short URL beside the code as a fallback. Payment QR still works in these markets because the customer's cheap Android does the scanning, not the feature phone. ### QR scanning on iPad https://useqr.app/docs/scanning/qr-scanning-on-ipad.md iPads scan QR codes exactly like iPhones, open the Camera app, point it at the code, and tap the banner — supported since iOS 11 (2017). Because iPads are heavier and often mounted, scanning from a screenshot with Live Text or using a browser scanner is frequently easier. ### QR scanning on Linux https://useqr.app/docs/scanning/qr-scanning-on-linux.md The reliable path on Linux is the command line, install zbar and run zbarimg file.png to decode an image, or zbarcam for a webcam. zxing-cpp offers a more capable modern decoder. For a no-install option, a browser-based scanner decodes screenshots client-side in Firefox or Chromium. ### QR scanning on a Mac https://useqr.app/docs/scanning/qr-scanning-on-mac.md macOS has no built-in QR scanner — Preview and Quick Look cannot decode codes. Use a browser-based scanner instead, upload a screenshot or point the webcam (or an iPhone via Continuity Camera) at the code. A client-side scanner decodes locally, so the image never leaves the Mac. ### QR scanning on smart TVs https://useqr.app/docs/scanning/qr-scanning-on-smart-tvs.md Smart TVs do not scan QR codes — they display them for a phone to scan. That is the standard pairing pattern: the TV shows a code, your phone scans it and signs the TV in. For a code on a TV watched from 3 m, make it at least 30 cm wide. ### QR scanning on Windows https://useqr.app/docs/scanning/qr-scanning-on-windows.md Windows has no system-wide QR scanner, but recent versions of the built-in Camera app include a barcode mode that reads QR codes from the webcam. For screenshots — the common case on a desktop — upload the image to a browser-based scanner, which decodes it locally without installing anything. ### QR scanning through glass and screens https://useqr.app/docs/scanning/qr-scanning-through-glass-and-screens.md Glass adds a reflecting surface between camera and code, and screens add a pixel grid that causes moiré. Both defeat scanning when the reflection or interference lands on the code. Tilt the phone 10–15° off perpendicular to move reflections away, get closer, and shade the glass if you can. ### Scanning QR codes with a webcam https://useqr.app/docs/scanning/qr-scanning-with-a-webcam.md Yes — a browser scanner can decode QR codes from a webcam with no install. Hold the code 30–60 cm from the lens, not close up: most webcams are fixed-focus around arm's length, so a code held at 10 cm is just blur. A 720p webcam resolves up to roughly version 10 comfortably at that range. ### Scan latency — why some codes scan instantly https://useqr.app/docs/scanning/scan-latency-why-some-codes-scan-instantly.md Decoding itself takes tens of milliseconds: find the three finder patterns, correct perspective, sample the grid, run Reed–Solomon. Codes that feel slow are losing time upstream — too small in frame, long exposures in dim light, a dense version, a busy background full of false finder candidates, or damage forcing error-correction retries. ### Scanning a QR code off a monitor https://useqr.app/docs/scanning/scanning-a-qr-code-off-a-monitor.md Photographing a QR code on a monitor often fails because the camera's sensor grid interferes with the display's pixel grid, producing moiré bands across the modules. Enlarge the code on screen, move the phone back, and tilt it slightly. If the code is on your own screen, screenshot it instead. ### Scanning distance limits for QR codes https://useqr.app/docs/scanning/scanning-distance-limits.md A QR code scans between two limits: a near floor of about 5–10 cm, where phone cameras can no longer focus, and a far ceiling of roughly ten times the code's width — the 10:1 rule. A 10 cm code therefore works from about 10 cm to 1 m; optical zoom extends the ceiling. ### Scanning multiple QR codes in one frame https://useqr.app/docs/scanning/scanning-multiple-codes-in-one-frame.md Phone camera apps decode one code per frame — usually the largest or most central — so two adjacent codes make the scanner pick unpredictably. In print, separate codes by several quiet zones and label each one. In software, the BarcodeDetector API returns every code in the image as an array. ### Scanning QR codes on e-ink displays https://useqr.app/docs/scanning/scanning-qr-codes-on-e-ink.md E-ink scans well because, like paper, it reflects ambient light rather than emitting its own — no glare hotspot, no pixel-grid moiré, readable in direct sun. Its contrast ratio of roughly 15:1 comfortably clears the 40% luminance bar. Two caveats: it needs external light, and refresh ghosting briefly corrupts modules. ### Screen brightness and QR scanning https://useqr.app/docs/scanning/screen-brightness-and-qr-scanning.md A displayed QR code is only as readable as the screen is bright. Indoors almost any brightness works; in daylight a 500-nit phone screen competes with sunlight and loses, which is why paper outperforms screens outdoors. Raise brightness manually before showing a code — auto-brightness often dims mid-scan. ### Which phones can scan QR codes natively https://useqr.app/docs/scanning/which-phones-can-scan-qr-codes-natively.md Every iPhone on iOS 11 (2017) or later scans QR codes from the Camera app, and effectively every Android phone since Android 9 scans via the camera or Google Lens. In practice any smartphone sold since about 2018 scans natively; only feature phones still need help. ### Are QR codes safe? https://useqr.app/docs/security/are-qr-codes-safe.md Scanning a QR code is safe in itself — it decodes text and nothing else. The risk is entirely in what you do next. A code cannot install software, dial, pay or join a network without your confirmation, but it can send you to a convincing fake page. ### Can a QR code install malware? https://useqr.app/docs/security/can-a-qr-code-install-malware.md Not by itself. A QR code carries text, not code, and nothing executes when you scan it. Malware needs a further chain — sideloading an app, installing a configuration profile, or a browser exploit against an unpatched phone — and each requires your explicit confirmation or an out-of-date device. Keep your phone updated. ### Can a QR code steal your data? https://useqr.app/docs/security/can-a-qr-code-steal-your-data.md No — scanning reads nothing from your phone. Data theft happens at the destination, through a phishing form you fill in, an OAuth consent screen you approve, or a hostile WiFi network you join. The code is the lure, not the theft. Check the domain and never enter credentials on a scanned page. ### Client-side vs server-side QR generation, and why it matters https://useqr.app/docs/security/client-side-vs-server-side-qr-generation.md If a QR generator renders the image on its server, your data — including WiFi passwords, contact details and payment identifiers — is transmitted to and processed by that server. Client-side generation keeps it on your device, which is the only version that is private by construction. ### Dynamic QR codes and privacy — what every scan reveals https://useqr.app/docs/security/dynamic-qr-codes-and-privacy.md Every scan of a dynamic QR code passes through the provider's redirect server, which can log the scanner's IP address, device type, timestamp and approximate location. A static code pointing directly at your site involves no intermediary. Dynamic codes are still right when you need editability or analytics — choose the provider deliberately. ### An enterprise QR code policy you can adopt https://useqr.app/docs/security/enterprise-qr-code-policy.md An enterprise QR policy needs five parts, approved client-side or self-hosted generators, own-domain-only destinations with no third-party shorteners, design standards that label every destination in plain text, a registry of deployed codes with owners and review dates, and a scheduled physical audit plus an incident playbook for reported malicious codes. ### Fake menu QR scams — table-tent swaps in restaurants https://useqr.app/docs/security/fake-menu-qr-scams.md A fraudster replaces the QR code on a table tent with a sticker leading to a fake menu or ordering page that harvests card details. Tables are rarely audited, so swaps go unnoticed for days. Diners should check the domain before paying; owners should count and inspect table codes daily. ### How to check where a QR code goes before opening it https://useqr.app/docs/security/how-to-check-a-qr-code-before-opening.md Use the preview banner both iOS and Android show before opening, and read the domain immediately before the first single slash. To inspect without any risk of opening, decode the code with a scanner that displays the text instead of following it. ### How to spot a malicious QR code https://useqr.app/docs/security/how-to-spot-a-malicious-qr-code.md Check the physical code first — a sticker over a printed original, or a code where none belongs, is the commonest attack. Then read the preview banner; a shortened link, a domain that does not match the organisation, or urgent wording are the digital tells. Decode suspicious codes without opening them. ### OTP secret exposure — the 2FA screenshot problem https://useqr.app/docs/security/otp-secret-exposure-in-qr-screenshots.md A screenshot of a 2FA setup QR code stores your TOTP secret in your camera roll, where cloud sync copies it to servers and shared devices. The secret never expires, so anyone with the image can mint valid codes years later. Deleting the photo is not enough — disable and re-enrol 2FA to rotate the secret. ### Parking QR code scams — how they work and how to avoid them https://useqr.app/docs/security/parking-qr-code-scams.md Scammers stick fake QR codes on parking meters and signs that lead to convincing payment pages which harvest card details. The FTC and FBI have both warned about this scam. Pay through the official parking app or the meter itself, and check the domain before entering any card number. ### QR code scams on packages and mail https://useqr.app/docs/security/qr-code-scams-on-packages-and-mail.md Scam letters and unexpected parcels carry QR codes claiming a missed delivery, an unpaid fee or a prize, leading to phishing or card-harvesting pages. Postal services and police have warned about these campaigns. Never scan a code from unsolicited mail — open your carrier's own app or website instead. ### QR code stickers placed over real ones — the overlay attack https://useqr.app/docs/security/qr-code-stickers-placed-over-real-ones.md Because a QR code is unreadable to humans, replacing one with a printed sticker is invisible until someone checks. The attack costs pennies and targets parking meters, EV chargers, payment standees and restaurant tables. Feel for a raised edge before paying, and venues should use tamper-evident labels and routine audits. ### QR codes and GDPR — when a scan becomes personal data https://useqr.app/docs/security/qr-codes-and-gdpr.md A static QR code generated client-side and pointing straight at your site adds no personal-data processing beyond an ordinary web visit. Dynamic codes are different: every scan log containing an IP address is personal data under GDPR, so you need a lawful basis, a processor agreement with the provider, and transparency at the code. ### QR codes and PCI DSS — what is actually in scope https://useqr.app/docs/security/qr-codes-and-pci-dss.md Merchant-presented QR codes such as UPI, PIX and EPC carry account references and payment instructions, not card numbers, so the code itself is largely outside PCI DSS cardholder-data scope. A QR that opens a card-payment page is different: that page is in scope for its owner, and printed codes need the same tamper checks as card terminals. ### QR codes and tracking — what is actually logged https://useqr.app/docs/security/qr-codes-and-tracking-what-is-logged.md It depends on the architecture. A static code pointing straight at a site reveals only a normal page visit to that site. A shortened or dynamic code adds an intermediary that logs IP address, device type, timestamp and rough location. A client-side generator like UseQR sees nothing at all. ### The security model of 2FA setup QR codes https://useqr.app/docs/security/qr-codes-for-2fa-security-model.md The QR code shown during 2FA setup carries your shared secret in plain text inside an otpauth URI. Anyone who captures that image can generate your codes indefinitely, which is why apps display it exactly once. The QR is a convenient transport for the secret, not a security feature in itself. ### QR codes in HIPAA contexts — keeping PHI out of the pixels https://useqr.app/docs/security/qr-codes-in-hipaa-contexts.md Never encode protected health information in a QR code. A printed code is plain text with no access control — anyone who photographs it can decode it, forever. The safe pattern is an opaque random token that resolves only inside an authenticated system, and a business associate agreement for any provider whose servers touch the flow. ### QR codes in phishing emails https://useqr.app/docs/security/qr-codes-in-phishing-emails.md Phishing emails use QR codes for two reasons. Filters that inspect URLs cannot read a link hidden inside an image, and scanning moves the victim from a protected work computer to an unmanaged personal phone. Treat any emailed QR code — especially MFA or payroll lures — as hostile until decoded. ### QR codes in security awareness training https://useqr.app/docs/security/qr-codes-in-security-awareness-training.md Simulated QR phishing works like simulated email phishing, place codes on posters, mail inserts or fake notices, measure who scans, and land everyone on a short, blame-free teaching page. Never harvest real credentials. Static codes with UTM parameters and one code per placement give you full measurement with free tooling. ### Quishing: QR code phishing explained https://useqr.app/docs/security/quishing-explained.md Quishing is phishing delivered by QR code. It works for two structural reasons: a human cannot read a URL from a pattern before scanning it, and email filters that inspect text do not inspect codes inside images and attachments. ### Should you scan QR codes in public? https://useqr.app/docs/security/should-you-scan-qr-codes-in-public.md Yes, with judgement. Scanning itself is safe — it only decodes text — so the risk lives in the destination and what you type there. A menu is low risk, a payment code deserves a payee check, and anything promising free money or urgent action is worth walking away from. ### Signed QR codes and authenticity https://useqr.app/docs/security/signed-qr-codes-and-authenticity.md A signed QR code pairs its payload with a digital signature that a verifying app checks against a trusted public key, proving who issued the code and that it was not altered. The EU Digital COVID Certificate worked this way. Signing proves authenticity, not privacy — the payload remains readable by any scanner. ### Tamper-evident QR labels https://useqr.app/docs/security/tamper-evident-qr-labels.md Tamper-evident QR labels make the sticker-overlay attack visible, destructible vinyl fragments on removal, void laminates leave a printed warning behind, and holographic overlays cannot be cleanly replaced. They cost pennies per label in volume, and they only work when paired with a routine physical audit of every deployed code. ### What a QR code can and cannot do to your phone https://useqr.app/docs/security/what-a-qr-code-can-and-cannot-do-to-your-phone.md A QR code is inert text, at most 2,953 bytes. It cannot install software, read your data or execute anything. It can only propose an action — open a URL, join a WiFi network, draft a message — which your phone shows you and you must confirm. The risk is what happens after you accept. ### What your QR code provider can see https://useqr.app/docs/security/what-your-qr-provider-can-see.md A server-side generator receives your full payload at the moment you create the code — WiFi passwords, contact details, payment identifiers — and standard web server logs record it by default. A dynamic provider additionally sees every scan. A client-side, open-source generator sends nothing, which you can verify by generating in airplane mode. ### Why you should not upload a WiFi password to a website https://useqr.app/docs/security/why-not-to-upload-a-wifi-password-to-a-website.md A WiFi QR form on a server-side generator transmits your network name and password to someone else's server, where standard logging retains them for an unknowable time. Generate WiFi codes with a client-side, open-source tool instead — one that still works in airplane mode, proving the password never left your device. ### Why QR phishing bypasses email filters https://useqr.app/docs/security/why-qr-phishing-bypasses-email-filters.md Secure email gateways were built to parse text. They rewrite URLs, check link reputation and sandbox attachments. A QR code is pixels, not text, so the malicious URL never enters those pipelines. Gateways increasingly decode images in response, but coverage is uneven, so the user-side domain check still matters. ### Alignment patterns — the small squares that fix distortion https://useqr.app/docs/spec/alignment-patterns.md Alignment patterns are 5×5 squares — a dark outline, a light ring and a single dark centre module — that anchor the decoder's sampling grid against perspective and curvature. Version 1 has none, version 2 has one, and the count grows to 46 at version 40, at positions fixed by the standard. ### Can a QR code be round? https://useqr.app/docs/spec/can-a-qr-code-be-round.md The underlying symbol must remain a square grid — that is what decoders sample. The rendering can look round: circular modules, round eyes, a circular logo and a circular frame outside the quiet zone all scan. Cropping the symbol itself into a circle cuts corner data modules and breaks the code. ### QR code data encoding modes — numeric, alphanumeric, byte, kanji https://useqr.app/docs/spec/data-encoding-modes.md QR codes encode data in four modes: numeric at 3.33 bits per digit, alphanumeric at 5.5 bits per character from a 45-character set, byte at 8 bits, and kanji at 13 bits per Shift-JIS character. Encoders pick the densest mode the data allows, which is why digits-only payloads make much smaller codes. ### Decode a QR code by hand https://useqr.app/docs/spec/decode-a-qr-code-by-hand.md To decode a QR code by hand, orient the symbol using its three finder patterns, read the 15-bit format information (XOR with 101010000010010), apply the named mask to the data region, read modules in zig-zag order, de-interleave the codewords, verify with Reed–Solomon, then parse mode indicators to recover the text. ### Deterministic QR generation https://useqr.app/docs/spec/deterministic-qr-generation.md QR generation is fully deterministic — given the same data, version, error correction level and mask-selection rules, the standard produces exactly one symbol. Differences between libraries come from different defaults, not randomness. Determinism is a feature, byte-identical output makes QR images cacheable, diffable and safe to snapshot-test in CI. ### ECI — how QR codes declare a character encoding https://useqr.app/docs/spec/eci-extended-channel-interpretation.md ECI (Extended Channel Interpretation) is an optional header — mode indicator 0111 plus a numeric designator — that declares how byte-mode data should be interpreted. UTF-8 is ECI 26 and ISO-8859-1 is ECI 3. Most modern decoders assume UTF-8 even without it, while some older readers fail on ECI headers entirely. ### Encode HELLO WORLD by hand — a complete worked example https://useqr.app/docs/spec/encode-hello-world-by-hand.md HELLO WORLD encodes as an alphanumeric version 1-Q QR code: mode 0010, count 000001011, five character pairs plus a final D, a terminator and pads producing data codewords 20 5B 0B 78 D1 72 DC 4D 43 40 EC 11 EC, then thirteen Reed–Solomon check codewords, placed in a zig-zag and masked. ### Error correction blocks and interleaving in QR codes https://useqr.app/docs/spec/error-correction-block-interleaving.md QR codes split data into blocks, give each its own Reed–Solomon check codewords, then interleave the codewords — first byte of block 1, first of block 2, and so on. A contiguous scratch on the symbol therefore lands one codeword deep in many blocks, instead of overwhelming a single one. ### QR code error correction levels explained https://useqr.app/docs/spec/error-correction-levels-explained.md L, M, Q and H tolerate roughly 7%, 15%, 25% and 30% damage. Higher levels cost capacity, so the same payload needs a bigger version — which means smaller modules at the same printed size. Raising the level to make a code more robust can make it harder to scan. ### Finder patterns — how a scanner locates a QR code https://useqr.app/docs/spec/finder-patterns.md Finder patterns are the 7×7 concentric squares in three corners of a QR code: a 3×3 dark centre, a light ring, and a dark ring. Any straight line through the centre crosses dark and light in a 1:1:3:1:1 ratio, so a scanner can find the code at any rotation. ### Format information — the 15 bits everything depends on https://useqr.app/docs/spec/format-information.md Format information is 15 bits: 2 for the error-correction level, 3 for the mask pattern, and 10 BCH(15,5) check bits, all XORed with the fixed mask 101010000010010. It is written twice beside the finder patterns, because a decoder can read nothing else until it has decoded these bits. ### GS1 Digital Link in QR codes https://useqr.app/docs/spec/gs1-digital-link-in-qr.md GS1 Digital Link packs product identifiers into a web URL, https://example.com/01/{GTIN}/10/{lot}/21/{serial}, so one QR code opens a product page for shoppers and yields the GTIN for point-of-sale scanners. GS1's Sunrise 2027 programme aims to have retail checkouts scanning 2D codes by the end of 2027. ### How logos work without breaking a QR code https://useqr.app/docs/spec/how-logos-work-without-breaking-a-code.md A logo works by deleting data modules and letting Reed–Solomon error correction reconstruct them as erasures. At level H the code survives about 30% codeword damage; keeping logo area under about 20% leaves margin for print damage. Centre placement matters because the corners hold unprotected finder patterns. ### How much data fits in a QR code https://useqr.app/docs/spec/how-much-data-fits-in-a-qr-code.md Version 40 ceilings are 7,089 numeric characters, 4,296 alphanumeric or 2,953 bytes at error correction L, but codes that dense barely scan. In practice keep URLs under about 50 characters, which lands at version 4 or below at level M — a code any phone camera reads instantly. ### How a QR code is generated, step by step https://useqr.app/docs/spec/how-qr-codes-are-generated.md Encoding runs in eight steps: choose the mode, choose the version, build the bit stream, split into codewords, compute Reed–Solomon error correction, interleave, place modules in a zig-zag, then try all eight masks and keep the one with the lowest penalty score. ### Kanji mode explained — 13 bits per character https://useqr.app/docs/spec/kanji-mode-explained.md Kanji mode compresses double-byte Shift-JIS characters into 13 bits each by subtracting a range offset and repacking the two bytes. It is 46% denser than UTF-8 in byte mode for Japanese text, but most modern generators skip it and encode UTF-8 instead, which every phone scanner handles. ### Mask patterns 0 to 7 — the eight formulas and why they exist https://useqr.app/docs/spec/mask-patterns-0-to-7.md A QR code's data region is XORed with one of eight mask patterns, chosen to avoid misleading shapes: large same-colour areas, poor dark-light balance, and runs that mimic the finder patterns' 1:1:3:1:1 signature. The masks are fixed formulas over row and column, and the chosen one is recorded in the format information. ### Mask selection and penalty scores — how the best mask wins https://useqr.app/docs/spec/mask-selection-penalty-scores.md To pick a mask, the encoder renders the symbol with each of the eight patterns and scores it on four penalty rules: N1 charges runs of five or more same-colour modules, N2 charges 2×2 blocks, N3 charges 40 points per finder-like 1:1:3:1:1 run, and N4 charges dark/light imbalance. The lowest total score wins. ### Maximum safe logo coverage by error correction level https://useqr.app/docs/spec/maximum-safe-logo-coverage.md Safe logo area coverage by error correction level, L (7% damage tolerance) is effectively unusable for logos, M (15%) allows about 8% of the code area, Q (25%) about 16%, and H (30%) about 20%. Those are area figures — a logo spanning 45% of the code's side covers 20% of its area. ### Mirrored QR codes https://useqr.app/docs/spec/mirrored-qr-codes.md Good decoders tolerate a mirrored QR code — the standard's reference decode process allows retrying the transposed image — so a mirror-imaged print often still scans. It remains a production bug, usually introduced by flipped transfer film or reversed artwork. Spot it by the empty corner, which belongs at bottom-right. ### Module size vs camera resolution https://useqr.app/docs/spec/module-size-vs-camera-resolution.md A decoder needs roughly three or more camera pixels per module to sample it reliably. Divide the pixels the code occupies in the frame by its module count plus eight for the quiet zone — a version 5 code spanning 200 pixels gives about 4.4 pixels per module, comfortably readable. ### QR code anatomy — every region of the symbol https://useqr.app/docs/spec/qr-code-anatomy.md A QR code has three 7×7 finder patterns for location, timing and alignment patterns for grid calibration, 15 bits of format information stored twice, version information from version 7 up, and a data-plus-error-correction region — all surrounded by a 4-module quiet zone. ### QR code bit stream walkthrough — from text to modules https://useqr.app/docs/spec/qr-code-bit-stream-walkthrough.md A QR bit stream is built as mode indicator, character count, encoded data, a 4-bit terminator, then pad bytes 0xEC and 0x11 to fill capacity. Codewords are split into blocks, extended with Reed–Solomon check codewords, interleaved, placed in a zig-zag from the bottom-right corner, masked, and topped with format information. ### QR code checksum and integrity https://useqr.app/docs/spec/qr-code-checksum-and-integrity.md A QR code carries no payload checksum. Reed–Solomon protects codewords against damage, and BCH codes protect the 15-bit format and 18-bit version fields, but a code that decodes cleanly proves nothing about who made it. Integrity and authenticity must live in the payload — a CRC, a token or a signature. ### QR code colour inversion and polarity https://useqr.app/docs/spec/qr-code-color-inversion-and-polarity.md The QR specification assumes dark modules on a light background, and nothing in the symbol declares its polarity. Reading an inverted, light-on-dark code is a decoder heuristic — ZXing exposes an explicit try-invert option and modern phone cameras usually cope, but plenty of scanners still fail. Print dark-on-light unless you can test every scanner. ### QR code density and scan distance https://useqr.app/docs/spec/qr-code-density-and-scan-distance.md A QR code should be at least one tenth of the scan distance wide, and its module size is that width divided by the module count plus eight quiet-zone modules. Denser codes therefore need more physical width at the same distance — a version 6 code at 2 m needs about 20 cm. ### QR code file formats compared https://useqr.app/docs/spec/qr-code-file-formats-compared.md Use SVG for anything that will be resized or printed and PNG for fixed-size screen use. JPEG is never correct for QR codes — its 8 × 8 DCT blocks and chroma subsampling smear module edges. PDF and EPS are print hand-off containers; WebP is acceptable only in lossless mode. ### QR code SVG path structure https://useqr.app/docs/spec/qr-code-svg-path-structure.md A QR code becomes SVG as path data on a square grid. UseQR merges every dark module into one path element with a single fill, uses integer coordinates at eight pixels per module, and sets shape-rendering to crispEdges on square styles — which is why the output has no anti-aliasing seams between modules. ### QR code versions 1 to 40 — sizes, capacity and how to choose https://useqr.app/docs/spec/qr-code-versions-1-to-40.md QR codes come in 40 versions. Version 1 is 21×21 modules and each version adds 4 modules per side, up to 177×177 at version 40, which holds up to 2,953 bytes. Generators auto-select the smallest version that fits the payload at the chosen error-correction level — and smaller scans better. ### Quiet zone requirements — the margin that is part of the spec https://useqr.app/docs/spec/quiet-zone-requirements.md The quiet zone is a border of background colour that ISO/IEC 18004 requires around every QR code: at least 4 modules wide on all four sides, or 2 modules for Micro QR. It is part of the symbol, not decoration — without it, scanners cannot reliably detect the finder patterns. ### Reed–Solomon error correction in QR codes, made readable https://useqr.app/docs/spec/reed-solomon-error-correction.md QR codes protect data with Reed–Solomon codes over GF(256): each block of data codewords gets t check codewords, which can repair up to t erasures (damage at known positions) or t/2 errors at unknown positions. The famous 7–30% damage-tolerance figures are the fraction of codewords that can be repaired. ### Rendering a QR code from a matrix https://useqr.app/docs/spec/rendering-a-qr-code-from-a-matrix.md Rendering starts from a boolean matrix — for each dark module, draw a square of moduleSize pixels at (column + quietZone, row + quietZone) × moduleSize. Add four modules of quiet zone on every side, multiply canvas dimensions by devicePixelRatio to stay sharp, and export PNG at final display size or larger. ### Structured append — splitting data across multiple QR codes https://useqr.app/docs/spec/structured-append-multi-part-qr.md Structured append is the QR feature that splits one message across up to 16 symbols, each carrying a header with its position, the total count and a shared parity byte. It is in the standard and works with industrial readers, but phone camera support is effectively non-existent, so avoid it for public-facing codes. ### Timing patterns — the ruler inside every QR code https://useqr.app/docs/spec/timing-patterns.md Timing patterns are single lines of alternating dark and light modules running along row 6 and column 6, between the finder patterns. They give the decoder the module pitch and count — a built-in ruler for placing the sampling grid — and both ends of each line are always dark. ### UTF-8 and Unicode in QR codes — emoji, CJK and the legacy trap https://useqr.app/docs/spec/utf-8-and-unicode-in-qr-codes.md QR codes carry Unicode by encoding text as UTF-8 in byte mode — emoji, CJK and accented characters all work on modern phone scanners without an ECI header. The costs: each character takes 1–4 bytes (an emoji is typically 4), and some legacy readers wrongly assume Shift-JIS and show garbled text. ### Vector vs raster QR codes https://useqr.app/docs/spec/vector-vs-raster-qr-codes.md A vector QR code (SVG or PDF) scales to any size with perfectly sharp edges; a raster (PNG) must be generated at 300 DPI or more at the final printed size — a 3 cm code needs at least 354 pixels across. When in doubt, hand the print shop the SVG. ### Version information — how big symbols declare their size https://useqr.app/docs/spec/version-information.md Version information exists only in QR versions 7 to 40: an 18-bit word made of 6 version bits plus 12 BCH(18,6) check bits, written twice — a 6×3 block above the bottom-left finder and a 3×6 block left of the top-right finder. Versions 1–6 rely on module counting instead. ### Why longer URLs make denser QR codes https://useqr.app/docs/spec/why-longer-urls-make-denser-codes.md QR versions step in fixed sizes, each adding four modules per side, and capacity boundaries at level M fall at 14, 26, 42, 62, 84 and 106 bytes. A 30-character URL fits version 3 (29 × 29 modules); a 90-character URL needs version 6 (41 × 41) — exactly twice the modules. ### Why QR codes are square https://useqr.app/docs/spec/why-qr-codes-are-square.md QR codes are square because the format is a matrix symbology, storing data on a fixed square grid the decoder addresses in two dimensions. Three corner finder patterns define position, rotation and perspective, and timing patterns set the grid pitch. Rectangular variants exist — rMQR — but standard QR stays square. ### Why two generators produce different QR codes https://useqr.app/docs/spec/why-two-generators-produce-different-codes.md Two generators given the same text can legally differ in version selection, error correction default, encoding-mode segmentation and mask choice — all produce valid codes that decode to the same string. A difference only signals a bug when the decoded text differs, most often from mishandled UTF-8 or stray whitespace. ### Calendar QR code saves the wrong time https://useqr.app/docs/troubleshooting/calendar-qr-code-wrong-timezone.md A calendar QR shows the wrong time when DTSTART is written as floating local time with no Z suffix and no TZID, so every phone interprets it in its own zone. Encode timed events in UTC with a Z suffix — phones convert correctly — or use an all-day event, which has no timezone at all. ### Email QR code body loses its line breaks https://useqr.app/docs/troubleshooting/email-qr-code-body-line-breaks.md RFC 6068 requires line breaks in a mailto: body to be percent-encoded as %0D%0A. A raw newline breaks the URI, a lone %0A is ignored by some clients, and a + is not a space. Percent-encode everything, keep the body short, and decode the finished code to check it. ### I lost the original QR code file https://useqr.app/docs/troubleshooting/i-lost-the-original-qr-code-file.md The payload survives in every printed copy — scan any print to recover the exact string, then rebuild the code in a generator. The styling does not survive a scan: colours, logo, and module shapes must be recreated by eye. Archive the SVG and the generator URL this time. ### Payment QR code amount not prefilled https://useqr.app/docs/troubleshooting/payment-qr-amount-not-prefilled.md Each scheme carries the amount in a different field — UPI uses am=, PIX uses EMV tag 54, and EPC uses an EUR amount line. If the field is absent the app asks the payer to type the amount, and some apps let payers edit static-code amounts regardless. Regenerate with the amount filled. ### QR code blocked by corporate or guest WiFi https://useqr.app/docs/troubleshooting/qr-code-blocked-by-corporate-wifi.md Corporate and guest WiFi networks block QR destinations through captive portals, category filters, and newly-registered-domain rules — the code and the link are usually fine. Users should switch to mobile data; venue owners should host the destination on their own established domain and test it on the guest network itself. ### QR code blocked by Safe Browsing or SmartScreen https://useqr.app/docs/troubleshooting/qr-code-blocked-by-safe-browsing.md A Safe Browsing or SmartScreen warning means the destination domain is flagged, not the QR code. Shared shortener domains inherit abuse from every other user, which is the usual trigger. Check the domain in Google's Transparency Report, request a review once cleaned, and move to a domain you own. ### QR code blurry when printed https://useqr.app/docs/troubleshooting/qr-code-blurry-when-printed.md Blur comes from resampling, not the printer. A small PNG placed into a layout and enlarged interpolates every module edge into a gradient, and the press faithfully prints the blur. Fix by exporting the code as SVG or PDF, or regenerating the raster at final size at 300 DPI or more, and printing at 100% scale. ### QR code broken by image compression https://useqr.app/docs/troubleshooting/qr-code-broken-by-image-compression.md JPEG compresses in 8 × 8 pixel blocks and adds ringing artefacts at every hard edge — exactly what a QR code is made of. Messaging apps and social platforms recompress every upload, so each re-share degrades the code further. Keep QR codes in PNG or SVG, share the file rather than a screenshot, and verify the survivor decodes. ### QR code changed after I edited the image https://useqr.app/docs/troubleshooting/qr-code-changed-after-i-edited-the-image.md Editing the image never edits the payload — the destination is fixed in the modules. What editing does do is damage them: rotation and resizing resample every module edge into a gradient, recolouring can destroy contrast or invert polarity. Decode the edited file to see what it says now, then re-export from the source. ### QR code colours not scanning https://useqr.app/docs/troubleshooting/qr-code-colors-not-scanning.md Decoders convert the image to greyscale before deciding dark from light, so what matters is luminance difference, not how different the colours look. Two visually distinct colours can have nearly identical luminance and produce a code no scanner reads. ### QR code cropped by a printer https://useqr.app/docs/troubleshooting/qr-code-cropped-by-a-printer.md Desktop printers cannot print to the paper edge — most leave a 3–5 mm unprintable margin, and anything placed there is silently clipped. Borderless modes fix the clipping by enlarging the page a few per cent, which pushes edges off the paper instead. Keep codes at least 10 mm inside the edge and print at 100% scale. ### QR code cut off in a PDF https://useqr.app/docs/troubleshooting/qr-code-cut-off-in-a-pdf.md A QR code cut off in a PDF usually means the artboard or crop box clips it, a mask or frame trims it, or transparency flattening rasterised it at low resolution. Zoom to 400% in a PDF viewer — vector edges stay razor sharp, rasterised ones go soft. Re-export with the code fully inside the artboard and vectors preserved. ### QR code disappears in black-and-white printing https://useqr.app/docs/troubleshooting/qr-code-disappears-in-black-and-white-printing.md Greyscale conversion keeps luminance and throws away hue. Two colours that contrast on screen — red on green, red on blue — can convert to nearly the same grey, and the code vanishes. Check by previewing the artwork in greyscale before printing, and design QR codes in luminance terms — dark modules, light background, at least 40% difference. ### QR code goes to a dead domain https://useqr.app/docs/troubleshooting/qr-code-goes-to-a-dead-domain.md A lapsed domain is the worst QR failure, because after roughly 30 days of grace and a 30-day redemption period anyone can re-register it — including an attacker who inherits every code you ever printed. If it is yours, restore it during redemption. Then turn on auto-renew, add years, and lock the registrar account. ### QR codes in WebP and AVIF — what breaks https://useqr.app/docs/troubleshooting/qr-code-in-webp-and-avif-issues.md Lossless WebP and lossless AVIF are safe for QR codes; lossy WebP and AVIF at converter defaults produce block artefacts that merge modules. The common trap is a CMS, CDN, or email pipeline silently recompressing your clean PNG. Serve SVG or PNG for codes, and always decode the served file. ### QR code inverted and unreadable https://useqr.app/docs/troubleshooting/qr-code-inverted-and-unreadable.md ISO/IEC 18004 defines a QR code as dark modules on a light background. Some decoders run a second inverted pass and read light-on-dark codes anyway; many camera apps do not, so inverted codes scan inconsistently for no design benefit. Swap the foreground and background colours and regenerate, or place the code on a light backing panel. ### QR code link shortener expired https://useqr.app/docs/troubleshooting/qr-code-link-shortener-expired.md Free link shorteners retire, prune inactive links or move them behind paywalls — Google's goo.gl stopped serving links entirely on 25 August 2025. When the shortener dies, every printed code through it dies at once. Recovery, ranked — reactivate or export from the account, reprint with a direct URL, and in future only print links on a domain you control. ### QR code mirrored by a design tool https://useqr.app/docs/troubleshooting/qr-code-mirrored-by-a-design-tool.md A flip transform somewhere in the design chain mirrored the code. In an upright placement the corner without a finder square belongs bottom-right; if it sits elsewhere and you did not rotate the artwork, it was flipped. Some decoders read mirrored codes, many do not. Remove the transform — the only legitimate mirror is transfer paper for fabric. ### QR code not scanning: the checklist https://useqr.app/docs/troubleshooting/qr-code-not-scanning-checklist.md Work through these in order, because they are ranked by how often they are the actual cause: quiet zone, contrast, size for distance, glare, blur from upscaling, inverted colours, and finally the destination. Most failures are found in the first three. ### QR code not working — a 60-second diagnosis https://useqr.app/docs/troubleshooting/qr-code-not-working.md A QR code fails in one of three ways. The scanner never detects it (quiet zone, contrast, size), it decodes the wrong string (bad input, tampering, a mangled image), or the destination is broken (dead URL, retired shortener, blocked network). Decode the code with a scanner that shows the raw text — that one step splits the three classes apart. ### QR code opens a 404 page https://useqr.app/docs/troubleshooting/qr-code-opens-a-404.md The code is fine — the destination page is gone. Usual causes are a site rebuild that moved the page without a redirect, a case-sensitive server rejecting the printed path, or rejected tracking parameters. If you own the domain you can rescue every printed code with one redirect rule; if you do not, you are reprinting. ### QR code opens the wrong link or a 404 https://useqr.app/docs/troubleshooting/qr-code-opens-wrong-link.md Decode the code first to see the string it actually contains. If the string is right, the problem is the destination: a deleted page, a retired shortener, a DNS filter, or a captive portal. If the string is wrong, the code was generated from wrong input or was tampered with physically. ### QR code pixelated when enlarged https://useqr.app/docs/troubleshooting/qr-code-pixelated-when-enlarged.md Enlarging a raster QR code cannot add detail. Bicubic and bilinear resampling blur module edges into gradients; nearest-neighbour keeps edges sharp but distorts module widths at non-integer scales. The only correct fix is regenerating the code at the size you need, or exporting SVG, which scales to any size with perfect edges. ### QR code quiet zone too small https://useqr.app/docs/troubleshooting/qr-code-quiet-zone-too-small.md A missing quiet zone causes a detection failure, not a decode failure — the scanner never finds the code, so error correction never gets a chance. The specification requires a blank margin of four modules on every side, in the background colour. Borders, text, dark page backgrounds and tight CSS padding are the usual offenders. ### QR code stuck in a redirect loop https://useqr.app/docs/troubleshooting/qr-code-redirect-loop.md A QR redirect loop is almost always a chain — shortener to consent page to app link and back — that a mobile or in-app browser cannot complete. Diagnose it with curl -IL to list every hop, then flatten the chain so the code points at one direct HTTPS destination. ### QR code scans on Android but not iPhone https://useqr.app/docs/troubleshooting/qr-code-scans-on-android-but-not-iphone.md Almost always a decoder difference, not a broken code. Inverted styling, Micro QR, very dense versions and Android-only URI schemes such as intent:// all decode differently across camera apps. iOS handles some cases Android does not, and vice versa. Fix by regenerating dark-on-light, standard QR, version 10 or below, with an https URL. ### QR code scans on one phone but not others https://useqr.app/docs/troubleshooting/qr-code-scans-on-one-phone-only.md One phone scanning is a warning, not a success — the code is at the margin of decodability and one decoder squeaks through. Usual causes are modules too small for other cameras to sample, fixed or long minimum focus distance on budget phones, and damage or logo coverage eating the error-correction budget. Fix by raising every margin at once. ### QR code scans on screen but not in print https://useqr.app/docs/troubleshooting/qr-code-scans-on-screen-not-in-print.md Three causes account for nearly all of these: the raster image was scaled up in the layout, ink spread on the substrate closed the gaps between modules, or the finish is glossy and reflecting. All three are invisible on a monitor. ### QR code too dense to scan https://useqr.app/docs/troubleshooting/qr-code-too-dense-to-scan.md A dense code means too many modules for the printed size. The fix is almost always to shorten the payload rather than to enlarge the code or raise error correction — raising error correction makes density worse, not better. ### QR code too small to scan — the fix ladder https://useqr.app/docs/troubleshooting/qr-code-too-small-to-scan.md A camera needs roughly three to four pixels per module, so a code smaller than scanning distance ÷ 10 starves the decoder. Fix in this order — shorten the payload so the version drops and modules grow, then increase the printed size. Never go below 2 × 2 cm in print, even for close-range scanning. ### QR code with a logo not scanning https://useqr.app/docs/troubleshooting/qr-code-with-logo-not-scanning.md A logo works up to roughly 20–25% of the code area at error-correction level H, and only in the centre. Covering a finder pattern, the timing patterns, or the format information beside the finders breaks the code regardless of error-correction level. ### SMS QR code body not prefilled on iPhone https://useqr.app/docs/troubleshooting/sms-qr-code-body-not-prefilled-on-ios.md The sms: URI split its body syntax across platforms — older iOS wanted an ampersand where Android used a question mark, and some iOS versions dropped the body entirely. The SMSTO:number:message form avoids the whole split and is recognised by current iPhone and Android cameras, which is why UseQR emits it. ### UPI QR code not detected by the payment app https://useqr.app/docs/troubleshooting/upi-qr-code-not-detected-by-app.md Ranked causes — the payload is not a valid upi:// link (pa is the one mandatory parameter), the specific app rejects formatting it dislikes, the code is BharatQR rather than UPI, or the image is a degraded screenshot-of-a-screenshot. Decode the code, read the string, and regenerate from a spec-correct builder. ### UPI QR code shows the wrong name https://useqr.app/docs/troubleshooting/upi-qr-shows-wrong-name.md The pn parameter is only a display hint. Every UPI app verifies the VPA with the bank and shows the bank-registered account name, which overrides whatever the QR contains. A shop name differing from a legal or personal name is normal; a completely unfamiliar name means stop and check the sticker. ### vCard QR code imports with missing or wrong fields https://useqr.app/docs/troubleshooting/vcard-qr-code-imports-wrong.md Two causes cover almost all of these: unescaped commas and semicolons inside a value, which split the field, and a missing FN line, which leaves the display name blank. Both fail silently at generation and only appear when someone saves the contact. ### vCard QR code saves a truncated contact https://useqr.app/docs/troubleshooting/vcard-qr-code-truncated-contact.md QR decoding is all-or-nothing, so a truncated contact means the payload was cut before the code was made — a generator field cap or a density-driven trim. A full vCard runs 600–1,000 bytes, forcing version 19–26 codes. Trim to essentials, or encode a short URL to a hosted contact page instead. ### WiFi QR code not connecting https://useqr.app/docs/troubleshooting/wifi-qr-code-not-connecting.md The usual causes, in order: an unescaped special character in the password or SSID, a hidden network without the hidden flag, choosing WEP or nopass when the network is WPA, or an enterprise network — which cannot be encoded in a QR code at all. ### WiFi QR code has the wrong security type https://useqr.app/docs/troubleshooting/wifi-qr-code-wrong-security-type.md The WIFI: format accepts exactly three T: values — WPA, WEP, and nopass. WPA covers WPA2 and WPA3; there is no WPA2 or WPA3 token, and nopass is only for open networks. A mismatched T: field fails silently, so decode the code and check the field, then regenerate. ### WiFi QR code special characters — the escaping rules https://useqr.app/docs/troubleshooting/wifi-qr-special-characters-escaping.md Five characters are structural in the WIFI: format and must be backslash-escaped inside the SSID and password: backslash, semicolon, comma, colon, and double quote. Unescaped, they terminate the field early and the phone tries a truncated password. Values made entirely of hex digits should also be wrapped in double quotes. ### App download QR codes — one code for iOS and Android https://useqr.app/app-download-qr-code.md One QR code cannot contain two store links, so an app download code points at a redirect that detects the operating system and forwards accordingly. UseQR hosts that redirect for you, or you can host it yourself on your own domain — which is what we recommend for anything printed. ### Base64 QR codes — how they work https://useqr.app/base64-qr-code.md Base64 encodes arbitrary binary as ASCII text so it can be carried in a QR code. It costs about 33% in size and forces byte mode, so use it only when the data is genuinely binary. For text, encoding directly is always smaller. ### Bitcoin QR codes — the BIP-21 URI explained https://useqr.app/bitcoin-qr-code.md A Bitcoin QR code stores a BIP-21 URI containing an address and optionally an amount, label and message. Wallets prefill a send screen from it. The address is public information, so the code itself is safe to print — but always verify the first and last characters after scanning. ### Calendar event QR codes — how they work https://useqr.app/calendar-qr-code.md A calendar QR code stores a minimal iCalendar VEVENT that phones offer to add to the calendar. Always store times in UTC with a trailing Z, or attendees in other timezones get the wrong hour. Nothing is added without the user confirming. ### Coupon QR codes — how they work https://useqr.app/coupon-qr-code.md A coupon QR code carries a code or a link to an offer page. The critical design fact is that any printed coupon code is a shared secret: photograph it once and it spreads. Enforce limits server-side at redemption, never in the QR code itself. ### Email QR codes — how they work https://useqr.app/email-qr-code.md An email QR code stores a mailto: URI. Scanning it opens the phone's mail app with the recipient, and optionally the subject and body, already filled in. Nothing is sent automatically — the user still has to press send, which is why it is safe to print in public. ### EPC QR codes (GiroCode) — SEPA credit transfers explained https://useqr.app/epc-qr-code.md An EPC QR code — also called GiroCode — encodes a SEPA credit transfer as a short line-based text block containing the beneficiary name, IBAN and optionally an amount. European banking apps read it and prefill a transfer. The payer still authorises it; nothing is charged automatically. ### Ethereum QR codes — the EIP-681 URI explained https://useqr.app/ethereum-qr-code.md An Ethereum QR code stores an EIP-681 URI with the recipient address and optionally a chain id and value in wei. Simple address-only codes work everywhere; the richer forms — token transfers and contract calls — are supported inconsistently, so test with the wallets your audience actually uses. ### Feedback QR codes — how they work https://useqr.app/feedback-qr-code.md A feedback QR code points at a short form or a prefilled email. Response rate is governed almost entirely by two things — how close the code is to the moment of experience, and how few fields the form has. One question beats five, every time. ### Google review QR codes — how they work https://useqr.app/google-review-qr-code.md A Google review QR code links to Google's write-a-review endpoint for your Place ID, which opens the star-rating dialog straight away instead of your business listing. Removing those two taps is the entire reason it works. Never offer anything in exchange for a review. ### JSON QR codes — how they work https://useqr.app/json-qr-code.md A JSON QR code stores a JSON document as plain text. It is the simplest way to move structured data offline, but JSON's punctuation is expensive in a format with a 2,953-byte ceiling — expect to fit roughly 100 to 200 fields at most, and far fewer if you want a printable size. ### Location QR codes — geo: URIs versus map links https://useqr.app/location-qr-code.md A location QR code stores either a geo: URI with raw coordinates or a map service link. The geo: URI is neutral and opens whichever map app the user prefers; a Maps link is more reliable and can carry a business name, but ties everyone to one provider. ### MeCard QR codes — how they work https://useqr.app/mecard-qr-code.md MeCard stores a contact in a compact single-line format that produces a QR code roughly 40% smaller than the equivalent vCard. It carries fewer field types and has slightly weaker desktop support, so it is the right choice when print size matters more than field richness. ### Menu QR codes — how they work https://useqr.app/menu-qr-code.md A menu QR code points at a web page or PDF of your menu. The choice between them matters more than the code: a mobile-friendly HTML page loads in under a second on a weak connection, while a PDF forces pinch-zooming and often fails on cellular in a busy room. ### PayPal QR codes — how they work https://useqr.app/paypal-qr-code.md A PayPal QR code is normally a PayPal.Me link, optionally with a fixed amount baked into the path. Scanning opens a payment page for your account. PayPal's separate in-app code is a different thing with different fees, so pick deliberately. ### PDF QR codes — how they work https://useqr.app/pdf-qr-code.md A QR code cannot store a PDF — the maximum payload is 2,953 bytes and a PDF is measured in megabytes. A "PDF QR code" is a link to a hosted file. That makes hosting the important decision: the code lasts forever, the link only lasts as long as you keep the file where it is. ### Phone QR codes — how they work https://useqr.app/phone-qr-code.md A phone QR code stores a tel: URI. Scanning it opens the dialler with the number entered, ready to call — it never dials on its own. Always store the number in full international format (+country code) so it works for people roaming or calling from abroad. ### PIX QR codes — the EMV BR Code format explained https://useqr.app/pix-qr-code.md A PIX QR code is an EMVCo BR Code — a tag-length-value string ending in a CRC16 checksum — containing the payee's PIX key, name and city. Any Brazilian banking app reads it. The same string doubles as copia e cola, the text people paste when they cannot scan. ### SMS QR codes — how they work https://useqr.app/sms-qr-code.md An SMS QR code opens the phone's messaging app with the recipient, and usually a prefilled message, ready to send. Two payload formats exist — SMSTO: and sms: — and body prefilling is the part that varies most between devices, so always test on both iOS and Android. ### Social hub QR codes — one code, all your profiles https://useqr.app/social-qr-code.md A social hub QR code points at one page that lists all your profiles, so a single printed code covers Instagram, TikTok, YouTube and the rest. UseQR builds the hub page from the links themselves, so nothing is stored on our servers and there is no account to lose. ### SSH and Git QR codes — how they work https://useqr.app/ssh-qr-code.md An SSH QR code stores an ssh:// URI or a git clone URL as text. Scanning it gives you the string to paste — it does not and cannot open a connection. It is a convenience for moving a long URL from a screen or a sticker to another machine without typos. ### Telegram QR codes — how they work https://useqr.app/telegram-qr-code.md A Telegram QR code is a t.me link to a username, channel, group or bot. Scanning it opens Telegram at that destination, or the web preview if Telegram is not installed. Usernames are 5–32 characters of letters, digits and underscores, and changing yours breaks every printed code. ### Text QR codes — how they work https://useqr.app/text-qr-code.md A text QR code stores raw characters with no scheme prefix, so a scanner simply displays the text rather than opening anything. It holds up to 2,953 bytes at the lowest error-correction level. Use it for serial numbers, instructions, notes and offline data that should not trigger an action. ### UPI QR codes — the NPCI spec, field by field https://useqr.app/upi-qr-code.md A UPI QR code stores a upi://pay deep link containing the payee's VPA, name and optionally an amount. Any UPI app — GPay, PhonePe, Paytm, BHIM — reads the same format, because NPCI standardised it. Nothing is charged automatically; the payer confirms the amount and enters their PIN. ### URL QR codes — how they work https://useqr.app/url-qr-code.md A URL QR code stores a web address as plain text inside the code. Scanning it opens that address in the phone's browser. Nothing is redirected through a third party, the link never expires, and the only thing that can break it is the URL itself going dead. ### vCard QR codes — how they work https://useqr.app/vcard-qr-code.md A vCard QR code stores a complete contact record — name, phones, emails, company, address, website — which the phone offers to save straight into its address book. It is the largest common payload type, so keep it lean: every extra field makes the code denser and harder to scan. ### WhatsApp QR codes — how they work https://useqr.app/whatsapp-qr-code.md A WhatsApp QR code is a wa.me link that opens a chat with your number, optionally with a message already typed. It needs the number in full international format with no plus sign, no spaces and no leading zeros. It works for anyone with WhatsApp, whether or not they have your number saved. ### WiFi QR codes — how they work https://useqr.app/wifi-qr-code.md A WiFi QR code stores your network name, security type and password in a WIFI: string. Scanning it joins the network with no typing. The password is inside the code in plain text, so generate it locally — UseQR builds it in your browser and never sends it anywhere. ### Alignment pattern https://useqr.app/glossary/alignment-pattern.md Alignment patterns are the small 5 × 5 concentric squares scattered through larger QR codes. They let a scanner correct for perspective distortion when the code is curved, tilted or photographed at an angle. ### Alphanumeric mode https://useqr.app/glossary/alphanumeric-mode.md Alphanumeric mode encodes a fixed set of 45 characters — digits, uppercase A–Z, space and the symbols $ % * + - . / : — in pairs of 11 bits, about 5.5 bits per character versus 8 in byte mode. Lowercase letters are excluded, so one lowercase character forces byte mode. ### Aztec code https://useqr.app/glossary/aztec-code.md Aztec is a 2D matrix barcode with a square bullseye finder at its centre, defined in ISO/IEC 24778. It needs no quiet zone at all, which suits cramped tickets, and it dominates transport — rail e-tickets and IATA-standard mobile boarding passes are typically Aztec symbols. ### BharatQR https://useqr.app/glossary/bharatqr.md BharatQR is India's interoperable merchant QR standard, built on EMVCo, allowing a single code to accept card-network payments. It is distinct from UPI, which uses its own upi:// deep-link format. ### BIP-21 https://useqr.app/glossary/bip21.md BIP-21 is the Bitcoin URI scheme that lets a QR code carry an address plus an optional amount, label and message. It is why every Bitcoin wallet interprets a scanned payment code the same way. ### Byte mode https://useqr.app/glossary/byte-mode.md Byte mode is the QR encoding for arbitrary data at 8 bits per byte, used whenever a payload contains anything outside the numeric or alphanumeric sets — which means almost every real URL. The specification's default charset is ISO 8859-1, but universal practice is UTF-8, which every modern reader detects. ### Codeword https://useqr.app/glossary/codeword.md A codeword is one 8-bit byte in a QR code's data stream. Capacity tables are ultimately expressed in codewords: a version-1 code holds 26 of them, split between data and error correction. ### Contrast ratio https://useqr.app/glossary/contrast-ratio.md Contrast ratio is the luminance difference between a QR code's dark and light modules. Decoders need a clear threshold; the practical floor is about 40% luminance difference, and colour choice matters far less than luminance choice. ### CRC16 https://useqr.app/glossary/crc16.md CRC16 is a family of 16-bit cyclic redundancy checks. EMVCo payment QR payloads, including PIX, end with field 63 carrying a CRC-16/CCITT-FALSE checksum — polynomial 0x1021, initial value 0xFFFF, written as four hex digits — so any hand-edited payload fails validation until the checksum is recomputed. ### Data capacity https://useqr.app/glossary/data-capacity.md Data capacity is how much a QR code can hold, and it depends on three things at once: the version, the error-correction level and the encoding mode. The maximum is 7,089 digits, 4,296 alphanumeric characters or 2,953 bytes. ### Data Matrix https://useqr.app/glossary/datamatrix.md Data Matrix is a 2D matrix barcode defined in ISO/IEC 16022, recognisable by its solid L-shaped border on two edges. It scales down further than QR — readable at a few millimetres square — which made it the standard for pharmaceutical serialisation, electronics and direct part marking. ### Decode-verify https://useqr.app/glossary/decode-verify.md Decode-verify is the practice of reading a generated QR code back with a real decoder before shipping it. It is the only way to know that a styled, logo-bearing or heavily coloured code actually scans, rather than assuming it does. ### Deep link https://useqr.app/glossary/deep-link.md A deep link is a URL that opens a specific screen inside an app rather than a website. In QR codes they appear as custom schemes like upi://pay or as universal links — normal https URLs that the OS routes into an installed app and that fall back to the web when it is absent. ### Denso Wave https://useqr.app/glossary/denso-wave.md Denso Wave is the Japanese company that invented the QR code in 1994, and it holds the patents. It chose not to enforce them for use of the standardised format, which is why QR codes are free for everyone to generate and read. ### DPI (dots per inch) https://useqr.app/glossary/dpi.md DPI is printing resolution. For QR codes it matters because each module must be rendered from a whole number of printer dots — 300 dpi is the practical minimum, and generating from vector rather than raster avoids the problem entirely. ### Dynamic QR code https://useqr.app/glossary/dynamic-qr-code.md A dynamic QR code contains a short URL that redirects through a provider's server. That makes the destination editable and the scans trackable — and makes the printed code dependent on that provider staying in business and staying paid. ### ECI (Extended Channel Interpretation) https://useqr.app/glossary/eci.md ECI is a mechanism for declaring which character set a QR code's byte data uses. Without it, byte mode has no declared encoding, and decoders simply guess — usually UTF-8 on phones, sometimes ISO-8859-1 on industrial scanners. ### EIP-681 https://useqr.app/glossary/eip-681.md EIP-681 is the Ethereum URI scheme for payment requests. It carries a recipient address, a chain id and a value in wei, and optionally a contract function call — though wallet support for the richer forms is inconsistent. ### EMVCo QR code https://useqr.app/glossary/emvco-qr.md EMVCo QR is the international standard for payment QR codes, defining a tag-length-value payload used by PIX in Brazil, PromptPay in Thailand, QRIS in Indonesia and many others. It has merchant-presented and consumer-presented modes. ### Encoding mode https://useqr.app/glossary/encoding-mode.md Encoding mode is how characters are packed into bits. QR codes support numeric (3.33 bits/char), alphanumeric (5.5), byte (8) and kanji (13), and a single code can switch modes mid-stream to use the cheapest one for each run. ### EPC QR code https://useqr.app/glossary/epc-qr.md An EPC QR code, branded GiroCode in German-speaking markets, encodes a SEPA credit transfer as a twelve-line text block. European banking apps read it and prefill a bank transfer for the payer to authorise. ### Error correction level https://useqr.app/glossary/error-correction-level.md Error correction level sets how much of a QR code can be damaged and still decode: L tolerates about 7%, M 15%, Q 25% and H 30%. Higher levels cost capacity, so the same data needs a bigger code. ### Finder pattern https://useqr.app/glossary/finder-pattern.md The three large concentric squares in the corners of a QR code are finder patterns. A scanner locates them first to work out where the code is, how big it is and which way up it is — which is why the missing fourth corner is deliberate. ### Format information https://useqr.app/glossary/format-information.md Format information is the 15-bit block next to the finder patterns that records the error-correction level and mask pattern. It is stored twice and protected by its own BCH code, because a decoder cannot read anything else without it. ### FrameQR https://useqr.app/glossary/frame-qr.md FrameQR is a Denso Wave QR variant that reserves a canvas area inside the symbol for logos, illustrations or photos by design. Unlike an ordinary logo overlay, the image space is excluded from the data region, so no error-correction budget is spent hiding it. Generation requires Denso Wave's licensed tools. ### GS1 Digital Link https://useqr.app/glossary/gs1-digital-link.md GS1 Digital Link is a URL syntax that carries GS1 identifiers such as a GTIN, batch and expiry date. It lets a single QR code on packaging serve both consumers and supply-chain scanners. ### Interleaving https://useqr.app/glossary/interleaving.md Interleaving is the reordering of QR code data so that consecutive codewords come from different error-correction blocks. It spreads localised physical damage across multiple blocks, so no single block exceeds its correction capacity. ### iQR code https://useqr.app/glossary/iqr.md iQR is a proprietary matrix code from Denso Wave, the inventor of the QR code. It can be square or rectangular, packs the same data into roughly 30% less area, and scales far beyond version 40 — but phones cannot read it, so it lives in industrial scanners, not marketing. ### ISO/IEC 18004 https://useqr.app/glossary/iso-18004.md ISO/IEC 18004 is the international standard defining QR codes: symbol structure, encoding, error correction, masking and decoding. It is the authoritative reference, and it is why codes from any generator read on any scanner. ### Kanji mode https://useqr.app/glossary/kanji-mode.md Kanji mode packs Shift-JIS double-byte characters into 13 bits each instead of the 16 bits they would take in byte mode. It exists because QR codes were invented in Japan for Japanese text. ### Mask pattern https://useqr.app/glossary/mask-pattern.md A mask pattern is one of eight XOR patterns applied to a QR code's data area to avoid large blocks of one colour and false finder-like shapes. The encoder tries all eight, scores them, and keeps the best. ### MCC (merchant category code) https://useqr.app/glossary/mcc.md A merchant category code is a four-digit number from ISO 18245 classifying a merchant's line of business — 5812 for restaurants, 5411 for grocers. In payment QR codes it appears as the mc= parameter in UPI payloads and as tag 52 in EMVCo merchant-presented codes. ### MeCard https://useqr.app/glossary/mecard.md MeCard is a compact contact format created by NTT DoCoMo. It encodes the same essentials as a vCard in roughly 40% fewer bytes, producing a visibly coarser and more scannable code at the same printed size. ### Micro QR code https://useqr.app/glossary/micro-qr.md Micro QR is a smaller variant defined in the same standard, ranging from 11 × 11 to 17 × 17 modules with a single finder pattern and a two-module quiet zone. It holds far less data but fits where a standard code cannot. ### Module https://useqr.app/glossary/module.md A module is one square cell of a QR code — the smallest unit of the pattern. Codes are measured in modules, not pixels or millimetres, because the module count is fixed by the version and the physical size is whatever you print it at. ### Numeric mode https://useqr.app/glossary/numeric-mode.md Numeric mode is the most compact QR encoding: digits are taken in groups of three, each group packed into 10 bits — about 3.33 bits per digit against 8 in byte mode. It applies only when the entire segment is 0–9, and it is why the famous 7,089-character capacity ceiling is digits-only. ### otpauth URI https://useqr.app/glossary/otpauth.md otpauth is the URI scheme used in two-factor authentication setup QR codes. An otpauth://totp/ URI carries the account label and a Base32 shared secret, plus optional issuer, digits and period parameters, which an authenticator app stores to generate one-time codes. The secret is unencrypted — anyone who captures the QR can clone the token. ### Payload https://useqr.app/glossary/payload.md The payload is the actual string encoded in a QR code — the URL, the WIFI: block, the vCard. Everything about a code's size, density and minimum print dimensions follows from the payload's length and character set. ### PDF417 https://useqr.app/glossary/pdf417.md PDF417 is a stacked-linear 2D barcode from 1991, standardised as ISO/IEC 15438 — rows of bar-and-space codewords read like stacked 1D barcodes. It backs US and Canadian driver's licences and printed boarding passes, but needs several times more area than a QR code for the same data. ### Penalty score https://useqr.app/glossary/penalty-score.md The penalty score is how a QR encoder chooses among the eight mask patterns. Each candidate symbol is scored by four rules — long same-colour runs, 2 × 2 blocks, false finder patterns and dark/light imbalance — weighted 3, 3, 40 and 10, and the mask with the lowest total is used. ### QR code https://useqr.app/glossary/qr-code.md A QR code — Quick Response code — is a two-dimensional matrix barcode invented at Denso Wave in 1994 and standardised as ISO/IEC 18004. It stores data as a grid of dark and light modules, readable from any orientation, holding up to 7,089 digits or 2,953 bytes with built-in error correction. ### Quiet zone https://useqr.app/glossary/quiet-zone.md The quiet zone is the blank margin around a QR code. The specification requires at least four modules of clear space on every side, and codes fail more often from a missing quiet zone than from almost any other design error. ### Quishing https://useqr.app/glossary/quishing.md Quishing is phishing delivered by QR code. It works because the destination is unreadable to a human before scanning, and because a code in an email image evades URL-based filtering that would catch the same link as text. ### Reed–Solomon coding https://useqr.app/glossary/reed-solomon.md Reed–Solomon is the error-correcting code that lets a damaged QR code still decode. It adds redundant codewords so that a decoder can reconstruct the original data even when part of the pattern is unreadable. ### rMQR code https://useqr.app/glossary/rmqr.md rMQR is a rectangular QR variant standardised in ISO/IEC 23941 (2022). It carries more data than Micro QR in a long, thin footprint, which suits cable labels, pipes, cylindrical parts and shelf edges. ### Scan rate https://useqr.app/glossary/scan-rate.md Scan rate is the share of people who see a QR code and scan it. There is no universal benchmark worth quoting — placement, context and the reason to scan swamp every other variable, including the design of the code itself. ### Short URL https://useqr.app/glossary/short-url.md A short URL is a brief address that redirects to a longer one. In QR codes it is used to reduce payload length — which genuinely produces a coarser, more scannable code — at the cost of adding a permanent dependency. ### SQRC https://useqr.app/glossary/sqrc.md SQRC is a Denso Wave QR variant with two data regions — a public part that any scanner reads normally, and a private part that only readers configured with the matching cryptographic key can extract. It looks identical to a standard QR code and is used for tickets, ID cards and vouchers. ### Static QR code https://useqr.app/glossary/static-qr-code.md A static QR code contains its destination directly in the pattern. It cannot be edited or tracked, and it never expires — because nothing has to keep running for it to work. ### Structured append https://useqr.app/glossary/structured-append.md Structured append is a QR mode that splits one message across up to 16 separate symbols, each carrying its position, the total count and a shared parity byte so a reader can reassemble them in order. Phone cameras effectively do not support it, so in practice it is a dead letter. ### SVG https://useqr.app/glossary/svg.md SVG is a vector image format, and the right one for QR codes. Because the pattern is described as shapes rather than pixels, it prints crisply at any size and never softens module edges through interpolation. ### Timing pattern https://useqr.app/glossary/timing-pattern.md The timing patterns are the alternating black-and-white lines running between the finder patterns, one horizontal and one vertical. They tell the decoder the module pitch, so it knows where each cell boundary falls. ### UTM parameter https://useqr.app/glossary/utm-parameter.md UTM parameters are query-string tags — utm_source, utm_medium, utm_campaign — that let your analytics attribute a visit to a specific campaign. In QR codes they are the standard way to measure scans without any third-party tracker. ### vCard https://useqr.app/glossary/vcard.md vCard is the standard contact-record format, defined in RFC 6350 for version 4.0 and RFC 2426 for 3.0. Encoded into a QR code it becomes a digital business card that a phone can save directly to its address book. ### Vector graphic https://useqr.app/glossary/vector-graphic.md A vector graphic describes shapes mathematically rather than as a grid of pixels, so it can be scaled to any size without loss. For QR codes it is the correct format for anything that will be printed. ### Version information https://useqr.app/glossary/version-information.md Version information is an 18-bit block present only in QR codes of version 7 and above, recording the code's size. Smaller codes do not need it because the decoder can count modules directly. ### Version https://useqr.app/glossary/version.md A QR code's version is its size: version 1 is 21 × 21 modules and each step adds 4 modules per side, up to version 40 at 177 × 177. The encoder picks the smallest version that fits your data at your chosen error-correction level. ### ZXing https://useqr.app/glossary/zxing.md ZXing — "zebra crossing" — is the open-source barcode library that most QR decoding is ultimately built on. UseQR uses a WebAssembly build of it to decode every code it generates, before you download it. ### QR codes for accountants and tax practices https://useqr.app/qr-codes-for/accounting-and-tax.md Accountancy practices use QR codes for client-portal onboarding, per-engagement document upload, payment codes on invoices, and calendar codes that put filing deadlines straight into a client's phone — a code carrying the 31 January self-assessment date saves more chasing than any reminder email. Generate engagement codes in bulk with the client reference in the URL. ### QR codes for agencies and consultants https://useqr.app/qr-codes-for/agencies.md For an agency, QR codes are mostly a client deliverable rather than an internal tool. The value is knowing the rules well enough to stop a client printing 20,000 flyers with a 1 cm code across a fold. ### QR codes for agriculture https://useqr.app/qr-codes-for/agriculture.md Farms use QR codes for farm-gate payment and provenance, equipment manuals at the machine, weatherproof livestock and crop record tags, and agritourism wayfinding. The field rule: assume no signal. Self-contained payloads such as text and geo coordinates still work offline; a URL code only works where coverage reaches. ### QR codes for Airbnb and short-term rentals https://useqr.app/qr-codes-for/airbnb-and-short-term-rentals.md Short-term rentals need a WiFi code guests can scan without typing a 20-character password, a house-manual code for check-in and appliance instructions, and a local-guide code. Generate the WiFi code client-side — you are encoding your own home's password — and label every code plainly, because guests scan warily in a stranger's house. ### QR codes for bars and pubs https://useqr.app/qr-codes-for/bars.md Bar QR codes face the worst lighting conditions of any hospitality setting — dim, coloured and often moving. Print bigger than you would for a restaurant, use maximum contrast, and never use a coloured or styled code. ### QR codes for bed and breakfasts https://useqr.app/qr-codes-for/bed-and-breakfasts.md A bed and breakfast runs on three codes: a breakfast menu guests can browse the night before, location codes for local walks and directions, and a review code at checkout. Because print runs are tiny, everything can come off a home label printer — laminate anything that lives in a bathroom or garden. ### QR codes for bookshops https://useqr.app/qr-codes-for/bookstores.md Bookshop QR codes should add what online retail cannot: shelf-talker codes with staff reviews and author interviews, event signups, and a newsletter code at the till. A code that links straight to a product page invites price comparison with Amazon — link to community instead, and the showrooming risk works for you. ### QR codes for cafés https://useqr.app/qr-codes-for/cafes.md For a café the highest-value QR code is not the menu — it is the WiFi code at the counter and a UPI, PIX or local payment code sized for the counter distance. Both remove a repeated interaction from every shift. ### QR codes for car washes https://useqr.app/qr-codes-for/car-washes.md A car wash is an unattended site: payment and membership codes must work from the driver's seat. Mount codes at 1.0–1.3 m so they sit level with a car window, size them 5–10 cm for a half-metre-to-metre scan, and print on laminated aluminium composite — paper does not survive a wash bay. ### QR codes for caterers https://useqr.app/qr-codes-for/catering.md Caterers need per-event codes: a menu and allergen code at each serving station, a lead-capture code at tastings, and a vCard on the quote. Allergen information cannot live only behind a QR code — UK and EU food law requires it available up front — so the code carries detail, not the legal minimum. ### QR codes for cinemas https://useqr.app/qr-codes-for/cinemas.md Cinema QR codes belong on one-sheets — one code per film, linking trailer and showtimes — and at concessions for loyalty enrolment. The venue constraint is light: lobbies are dim and posters sit in backlit cases, which behave like screens, so never use light-on-dark codes there. ### QR codes for cleaning services https://useqr.app/qr-codes-for/cleaning-services.md Cleaning companies use QR codes for proof of service — a code at each site opens a completion form with the site ID prefilled, and the form's timestamp becomes the audit trail — plus quote codes on the van and door hangers. A static code cannot log scans by itself; the form does the recording. ### QR codes for clinics and GP practices https://useqr.app/qr-codes-for/clinics-and-doctors.md For a small practice, the highest-value QR code goes on the appointment letter or SMS and opens the intake form, moving ten minutes of clipboard work out of the waiting room. Add booking codes on appointment cards and condition-specific leaflet codes — with no patient data in any payload. ### QR codes for concerts and festivals https://useqr.app/qr-codes-for/concerts-and-festivals.md A static QR ticket is a screenshot away from being duplicated, which is why major ticketing apps rotate their barcodes. Use static codes for everything else on site — merch pre-orders from queues, artist follows, campsite wayfinding — and print them, because phone screens wash out in sunlight. ### QR codes for conference organisers https://useqr.app/qr-codes-for/conferences.md Conference organisers should treat QR codes as a batch job: badge codes from the registration CSV, one feedback code per session, all generated in bulk and every one verified to decode before print. Collect feedback at the room door, not in the follow-up email. ### QR codes for construction sites https://useqr.app/qr-codes-for/construction.md Construction QR codes solve the wrong-revision problem: a code on every drawing's title block points at the latest issue, so a printed sheet can announce its own staleness. Add induction codes at the gate, inspection tags on plant, and snag reporting with the zone prefilled. ### QR codes for consultants https://useqr.app/qr-codes-for/consultants.md For consultants the highest-value QR code is a booking link — on business cards, proposal covers and the final slide of every talk. Add case-study deep links in decks and a vCard for contact capture. On projected slides, pair the code with a short URL and keep it up through the Q&A. ### QR codes for consumer packaged goods https://useqr.app/qr-codes-for/consumer-packaged-goods.md On packaged goods the QR code resolves the pack-space war: mandatory declarations stay printed — EU food law does not let allergen or nutrition basics move online — while the code carries extended nutrition, sourcing, recycling and promotions. Increasingly it is a GS1 Digital Link code that also scans at the till. ### QR codes for dentists https://useqr.app/qr-codes-for/dentists.md Dental QR codes earn their place on the take-home sheet: aftercare questions cluster predictably in the first two or three days, and a code answering them beats a phone queue. Add recall-reminder enrolment, a review code at reception, and pre-visit content for anxious patients. ### QR codes for ecommerce and direct-to-consumer brands https://useqr.app/qr-codes-for/ecommerce.md For an online brand the QR code lives on the physical touchpoints — packaging, packing slips, thank-you cards — where it is the only bridge back to a digital relationship. The packaging code's constraint is permanence: it must resolve for years. ### QR codes for electronics brands https://useqr.app/qr-codes-for/electronics.md Electronics QR codes carry the manual, warranty registration and support. The trap is the router paradox: a setup guide behind a QR code fails when the device being set up is what provides the internet. Keep first-run steps printed, and put the serial number in the support URL so forms arrive prefilled. ### QR codes for emergency services https://useqr.app/qr-codes-for/emergency-services.md A QR code must never sit in the emergency path: emergency calls work with no data and on any network, web pages do not. Use codes for what happens around emergencies — AED instructions that load instantly, hazard reporting with the location prefilled, recruitment and station open days. ### QR codes for events and conferences https://useqr.app/qr-codes-for/events.md Conference QR codes should be on badges (both sides), on session signage, and on the last slide of every talk. Badge codes should carry a short opaque id or a profile URL — not a full vCard, which puts personal data into a pattern anyone can photograph. ### QR codes for fashion and apparel https://useqr.app/qr-codes-for/fashion-and-apparel.md Fashion QR codes go where paper cannot: care and repair instructions on the sewn-in label, styling content at the rail, and serialised authenticity checks for resale. Keep label payloads short — a code woven or printed at 15–20 mm only scans reliably at low versions — and watch the EU Digital Product Passport, which reaches textiles first. ### QR codes for field service https://useqr.app/qr-codes-for/field-service.md Field-service teams use QR codes as the machine's filing cabinet — a durable tag on each asset linking its full service history — plus job-sheet codes with the ticket number in the URL, and payment codes on invoices so the job is paid before the van leaves. A sign-off or feedback code closes the visit. ### QR codes for fleets and transport operators https://useqr.app/qr-codes-for/fleet-and-transport.md Fleets put QR codes in three places: a walkaround-check code in each cab that opens the defect report with the registration prefilled, durable maintenance-history tags on the vehicle itself, and wrap-advertising codes sized for parked reading — 20 to 50 cm, because nobody scans a moving vehicle. ### QR codes for food trucks https://useqr.app/qr-codes-for/food-trucks.md A food truck needs three codes: a menu code sized for the queue, a payment code at the serving window, and a social code that answers the question a fixed shopfront never faces — where are you today. All three should be laminated matt print, because a truck in direct sunlight is the worst glare environment in food service. ### QR codes for furniture brands https://useqr.app/qr-codes-for/furniture.md Furniture QR codes earn their keep on assembly — a video beats a 40-page pictogram booklet — and on spare parts. Put the reorder code on the part itself, under the seat or inside the drawer, because the fixings bag and instructions are in the bin long before anything breaks. ### QR codes for ghost kitchens https://useqr.app/qr-codes-for/ghost-kitchens.md A ghost kitchen has one physical touchpoint: the packaging. That makes the insert card the entire QR strategy — a direct-ordering code that routes the next order around marketplace commission, and a per-brand review code so each virtual brand builds its own reputation. Print on the card, not the box; steam ruins box print. ### QR codes for government and public services https://useqr.app/qr-codes-for/government.md Public-sector QR codes carry an accessibility obligation that commercial ones do not. Never make a code the only route to a service, always print the URL, and use a .gov-style domain so citizens can verify the destination before scanning. ### QR codes for grocery stores https://useqr.app/qr-codes-for/grocery.md Grocery QR codes live on shelf-edge labels, packaging and the till: extended product information at the shelf, loyalty enrolment at checkout, and coupons that skip the print run. The bigger shift is GS1's 2D sunrise — retail POS scanners are being upgraded to read 2D codes, aiming for the end of 2027. ### QR codes for gyms and fitness studios https://useqr.app/qr-codes-for/gyms.md Gym QR codes work on equipment, where a member is already standing still. An exercise-demo code on each machine is the highest-value use; class booking and WiFi come next. Codes must survive sweat and cleaning products. ### QR codes for clinics and healthcare providers https://useqr.app/qr-codes-for/healthcare.md Healthcare QR codes must never be the only route to clinical information, and they must not carry patient data. Use them for check-in, directions, appointment booking and aftercare leaflets — with a printed alternative always available. ### QR codes for home care https://useqr.app/qr-codes-for/home-care.md Home care runs on a laminated card in the client's folder: an opaque-token link to the care plan, a visit check-in code that timestamps arrival, and a family-portal code. No names or conditions ever go in a payload, and every code needs the client's consent to be there. ### QR codes for hospitals https://useqr.app/qr-codes-for/hospitals.md Hospital QR codes work at institutional scale only with a register: every code's URL, location, owner and review date recorded, one template, one domain. The highest-value chain runs from the car park to the ward — wayfinding codes at each decision point, never carrying patient data. ### QR codes for hotels https://useqr.app/qr-codes-for/hotels.md Hotels should treat QR codes as a replacement for the in-room compendium: one code per service, each pointing at a page you update centrally. The WiFi code is the one guests actually want, and it belongs on the desk, not behind the door. ### QR codes for insurance https://useqr.app/qr-codes-for/insurance.md Insurers use QR codes for policy-document access, claims initiation with photo upload, and agent vCards on cards and letters. The compliance rule is absolute: nothing identifying a policyholder goes in a payload. A QR code on paper is readable by anyone who sees the page — use opaque tokens, never policy numbers. ### QR codes for labs and diagnostics https://useqr.app/qr-codes-for/labs-and-diagnostics.md Specimen tubes are not QR territory — labs standardised on linear barcodes and Data Matrix, which fits a 10 mm tube face where a QR with its quiet zone cannot. Use QR for the patient side: per-test preparation instructions, results-portal onboarding, and directions to draw sites. ### QR codes for laundromats https://useqr.app/qr-codes-for/laundromats.md Launderettes combine an unattended site with 30–60 minutes of captive waiting. That means per-machine fault-report codes with the machine number already in the URL, a payment-app enrolment code at the door, and a WiFi code for the wait. Label codes in every language your customers actually speak. ### QR codes for law firms https://useqr.app/qr-codes-for/law-firms.md Law firms use QR codes for consultation booking on cards and letterheads, client-portal onboarding, lawyer vCards and seminar sign-ups. The binding rule: no client name, matter number or case detail ever goes in a payload — printed correspondence is retained for years, and a QR code is plain text anyone can read. ### QR codes for libraries https://useqr.app/qr-codes-for/libraries.md Libraries get the most from QR codes on shelf ends linking into the catalogue, on event posters, and on a WiFi card at study desks. Because patron privacy is a professional duty, generate codes client-side and never upload the WiFi password or reading-list URLs to a third-party server. ### QR codes for warehousing and logistics https://useqr.app/qr-codes-for/logistics.md In logistics the QR code is usually read by a handheld imager rather than a phone, which changes every rule: codes can be smaller, but print durability and quiet-zone discipline matter far more, and the payload should be an opaque id. ### QR codes for manufacturing https://useqr.app/qr-codes-for/manufacturing.md Manufacturing QR codes are usually direct part marks on metal or plastic, where contrast comes from surface texture rather than ink. Use error correction H, modules of 0.5 mm or more, and grade marks against ISO/IEC 29158 rather than eyeballing them. ### QR codes for museums and galleries https://useqr.app/qr-codes-for/museums.md Museum QR codes belong on object labels, pointing at extended interpretation, audio and accessibility content. The design constraint is gallery lighting — deliberately low and often raking — which is the worst possible condition for scanning. ### QR codes for nightclubs https://useqr.app/qr-codes-for/nightclubs.md Nightclub QR codes fight near-darkness: phone torches fire automatically, so a glossy menu card flares into unreadability. Use matt lamination, at least 5 cm of code, pure black on white. Put drink menus on tables, entry codes at the door, and a safe-ride code at the exit. ### QR codes for charities and nonprofits https://useqr.app/qr-codes-for/nonprofits.md For a charity the QR code that matters is the donation code, and its design decisions are all about trust: a recognisable domain, the organisation name in large text, and a payment rail with no fee where one exists. ### QR codes for parks and trails https://useqr.app/qr-codes-for/parks-and-trails.md On a trail, assume no mobile signal. A QR code still decodes offline, so payloads that carry their own content — plain text and geo coordinates — keep working where a URL cannot load. Put safety information in the code itself, mount codes in engraved metal, and never sticker natural features. ### QR codes for pharmacies https://useqr.app/qr-codes-for/pharmacies.md Pharmacy QR codes work for medication guides, refill enrolment and opening-hours contact — never for anything identifying a patient. Note the symbology boundary: serialised medicine authentication in the EU and US uses Data Matrix by regulation, not QR, so your codes must sit clearly apart from the pack's mandated identifier. ### QR codes for public transport riders https://useqr.app/qr-codes-for/public-transport.md Rider-facing transit codes work when they are stop-specific: the stop ID in the URL turns a generic timetable into this stop's next departures. Printed rail tickets usually carry Aztec codes, not QR — signage and information use QR. Mount codes at 1.0–1.4 m with a printed short URL beside them. ### QR codes for real estate agencies https://useqr.app/qr-codes-for/real-estate.md For estate agents the QR code that works is on the board outside the property, sized for a 2–3 metre pavement distance, pointing at that specific listing. A code at 5 cm on a board read from the street is the standard mistake. ### QR codes for recruiters https://useqr.app/qr-codes-for/recruiters.md Recruiters use role-specific QR codes on job flyers, campus boards and career-fair banners, each URL carrying UTM parameters so applications are attributable per location. Add an applicant-portal code on offer packs and a recruiter vCard on badges. Never one generic careers-page code everywhere — measurement is the entire point. ### QR codes for places of worship https://useqr.app/qr-codes-for/religious-organizations.md Places of worship use QR codes for giving, service times, newsletters, livestreams for homebound members, and memorial dedications. Giving codes work best open-amount — the giver chooses — placed on pew cards at 2–3 cm and by the exit. Keep a cash option; a code should never be the only way to give. ### QR codes for repair shops https://useqr.app/qr-codes-for/repair-shops.md Repair shops need a status-tracking code on the job ticket with the ticket number in the URL, a review code at collection, and a warranty-of-repair record the customer can keep. Do not rely on the thermal receipt — direct thermal print fades in months, so put a durable label on the device too. ### QR codes for restaurants https://useqr.app/qr-codes-for/restaurants.md Restaurants get the most value from three QR codes, not one: the menu on a matt table tent, a Google review code on the bill, and a WiFi code at the counter. The menu code is the one most often done badly — glossy, flat on the table, and pointing at a PDF. ### QR codes for retail stores https://useqr.app/qr-codes-for/retail.md Retail QR codes work best where a customer is already holding a decision: shelf-edge labels for product detail, fitting-room codes for size availability, and receipt codes for reviews. Store-window codes underperform because nobody stops. ### QR codes for salons and barbers https://useqr.app/qr-codes-for/salons.md For a salon the booking code is the one that matters, and it belongs in the window where it can be scanned when you are closed. Rebooking codes on the mirror and on receipts capture the customer while they are still in the chair. ### QR codes for schools and universities https://useqr.app/qr-codes-for/schools.md Education QR codes work best on noticeboards, in printed handouts and on library shelving. The constraint most schools miss is that many students have no data allowance — so linked resources must be light, and a printed alternative must exist. ### QR codes for spas https://useqr.app/qr-codes-for/spas.md Spa QR codes fit the quiet: a treatment-menu and booking code at reception, a pre-visit intake form sent before arrival, and gift-voucher codes at checkout. Keep codes out of heat and steam zones — sauna air at 70–100 °C lifts adhesive labels within weeks — and out of phone-free relaxation rooms entirely. ### QR codes for sports venues https://useqr.app/qr-codes-for/sports-venues.md Seat-back codes with the section, row and seat in the URL turn concession ordering into delivery to the seat. The catch is scale: tens of thousands of simultaneous scans hit whatever the code points at, so use a direct URL to infrastructure sized for kick-off, never a rate-limited shortener. ### QR codes for theatres https://useqr.app/qr-codes-for/theatres.md A programme QR code gives every visitor cast bios, and the same code serves a large-print programme — an accessibility win print cannot match. Add interval pre-ordering, which has hard maths: a 20-minute interval and one bar. Keep scanning in the foyer, not the auditorium. ### QR codes for tradespeople https://useqr.app/qr-codes-for/tradespeople.md Tradespeople need two codes: a quote code on the van sized for a parked read — 30–50 cm for someone standing 3–5 m away — and a payment code on the invoice. The review code works best in person: asking while you pack up converts far better than an email two days later. ### QR codes for public transport https://useqr.app/qr-codes-for/transport.md Transport QR codes are scanned by people in a hurry, often with poor signal underground, and on surfaces that are prime targets for fraudulent stickers. Size for a 1–2 m platform distance, and make the real domain visible. ### QR codes for universities https://useqr.app/qr-codes-for/universities.md Universities need QR codes on lecture slides, campus signage, club stalls and lab equipment. The lecture-slide code is the special case: back rows sit 15–20 m away, so students photograph the slide and scan the screenshot later — design the code to survive that, not a live scan. ### QR codes for utilities https://useqr.app/qr-codes-for/utilities.md Utilities use QR codes for bill payment on invoices, outage reporting with the pole or meter number prefilled, and meter-reading submission. Because fake utility payment codes are a documented scam pattern, print the official domain beside every payment code and publish the one domain you use. ### QR codes for veterinary practices https://useqr.app/qr-codes-for/veterinarians.md Veterinary QR codes work on post-op care sheets, vaccination-record portals and pet tags. On a tag, a portal URL beats an engraved phone number: it stays private, survives a house move, and a 2–3 cm engraved tag only has room for a short URL anyway. ### QR codes for waste management https://useqr.app/qr-codes-for/waste-management.md Waste operators use QR codes as bin asset tags for route and service verification, per-bin-type recycling guidance that routes to the local municipality's actual rules, and missed-collection reporting with the street asset prefilled. Labels must survive sun, pressure-washing and bin lifters — laminated UV-stable stock at minimum. ### QR codes for weddings and celebrations https://useqr.app/qr-codes-for/weddings.md Wedding QR codes work best on the invitation for RSVP and on table cards for photo sharing. The design trap is foil and dark card stock — both look right and neither scans. ### QR codes for zoos and aquariums https://useqr.app/qr-codes-for/zoos-and-aquariums.md Zoo and aquarium QR codes extend exhibit signs that only fit about 50 words, link donation pages at exits, and serve maps. The design constraints are physical: outdoors, UV fades ink until contrast drops below the 40% minimum; indoors, aquarium halls pair low light with reflective glass. ### QR codes on 3d-printed qr codes https://useqr.app/qr-codes-on/3d-prints.md A printed-in-relief QR code relies on shadow for contrast, which makes it lighting-dependent and unreliable. Two-colour printing with a filament change is far better: real luminance contrast, and it works in any light. ### QR codes on banners and backdrops https://useqr.app/qr-codes-on/banners-and-backdrops.md Banners split into two jobs with different numbers. A step-and-repeat backdrop must survive inside photos taken at 2–3 m, needing a 25 cm code with strong contrast, while a street banner read at 5–15 m needs 50–150 cm. Use error correction Q and centre the code away from grommets. ### QR codes on billboards and out-of-home https://useqr.app/qr-codes-on/billboards.md A billboard QR code must be at least a tenth of the viewing distance — a metre wide at 10 m, five metres at 50 m. For most roadside billboards that is impractical, and the honest answer is usually that a QR code is the wrong tool. ### QR codes on business cards https://useqr.app/qr-codes-on/business-cards.md A business card QR code should be at least 2 cm square. That feels large on an 85 × 55 mm card, which is why so many are printed at 1 cm — a size where a vCard payload's modules fall below what a phone resolves at reading distance. ### QR codes on coasters https://useqr.app/qr-codes-on/coasters.md A coaster code is read from 40–60 cm on the table, or 25 cm once picked up, so 2.5–4 cm is the working range. Use error correction Q and a waterproof finish — condensation rings soak absorbent pulpboard, spreading ink and warping modules, which is the coaster-specific failure. ### QR codes on digital signage https://useqr.app/qr-codes-on/digital-signage.md Digital signage QR codes follow the same ten-to-one rule as print — 10–30 cm for a 1–3 m viewing distance — with two screen-specific problems: dwell time in the playlist, and glare from ambient lighting. ### QR codes on e-ink displays https://useqr.app/qr-codes-on/e-ink.md E-ink is an excellent QR surface: high contrast, no glare, no backlight and no refresh artefacts. The constraint is resolution — most electronic shelf labels are 100–150 dpi, so each module needs several pixels. ### QR codes on email signatures https://useqr.app/qr-codes-on/email-signatures.md A QR code in an email signature is scanned from a second device — someone photographing their own screen — so size it in pixels: 80–120 px displayed, exported at 2× for retina. Most email clients block images by default, so a text link is still required. ### QR codes on embroidery https://useqr.app/qr-codes-on/embroidery.md Embroidery is the worst common QR surface: stitch pitch is coarse, thread has sheen, and fabric distorts as it is stitched. A code below about 6 cm will not work, and even a large one needs error correction H and careful stabilising. ### QR codes on engraved and etched metal https://useqr.app/qr-codes-on/engraved-metal.md Metal marking is the hardest QR surface because contrast comes from surface texture rather than colour, and the finish reflects. Use error correction H, keep modules at 0.5 mm or larger, and specify a matt or annealed mark rather than a polished cut. ### QR codes on event tickets https://useqr.app/qr-codes-on/event-tickets.md A ticket QR code must work in two forms, at least 2.5 cm when printed and about 250 px on a phone screen. Gate imagers scan fast in controlled conditions, so error correction M is enough; the real failures are screenshot fraud and low screen brightness at sunny outdoor gates. ### QR codes on flyers and leaflets https://useqr.app/qr-codes-on/flyers.md A flyer is held in the hand and read from 20–30 cm, so a 2–3 cm code is enough. The bigger risks are cheap uncoated stock spreading the ink and the code being placed in the fold. ### QR codes on food packaging https://useqr.app/qr-codes-on/food-packaging.md Food packaging QR codes carry ingredient, allergen and provenance information, which makes accessibility a legal matter rather than a nicety. Use 2–3 cm at error correction Q, and never make allergen data QR-only. ### QR codes on greeting cards https://useqr.app/qr-codes-on/greeting-cards.md A greeting card is read in the hand at 20–30 cm, so a 2 cm code is enough. The one rule that matters: never let the code cross the fold — a crease through the modules kills the scan. Use error correction M and keep the code inside one flat panel. ### QR codes on memorials and headstones https://useqr.app/qr-codes-on/headstones.md A memorial QR code must be legible for decades on stone, which means a sandblasted or laser-etched code of 5–10 cm at error correction H — and, more importantly, a URL that will still resolve long after the person who chose it. ### QR codes on invitations and greeting cards https://useqr.app/qr-codes-on/invitations.md An invitation QR code is read at arm's length so 2 cm is enough. The design pressure is the opposite of usual — the risk is a code so heavily styled or foiled that it no longer scans. ### QR codes on product labels https://useqr.app/qr-codes-on/labels.md Label QR codes are typically 1.5–3 cm and printed by thermal transfer at 203 or 300 dpi. The critical number is dots-per-module: aim for at least 4, which means checking your printer resolution before choosing the code size. ### QR codes on laser-cut and engraved wood https://useqr.app/qr-codes-on/laser-cut-wood.md Wood grain is the problem: it adds contrast noise at the module scale and burns unevenly. Use error correction H, modules of at least 1 mm, and a close-grained wood such as maple, birch ply or MDF rather than oak or pine. ### QR codes on livestream overlays https://useqr.app/qr-codes-on/livestreams.md A stream viewer scans from 50 cm to a metre away with a second device, so 180–300 px on a 1080p canvas is right. Keep the code static and out of the region where chat and alerts appear. ### QR codes on menus and table tents https://useqr.app/qr-codes-on/menus.md A menu QR code is read from 30–40 cm across a table, so 3–4 cm is right. The dominant real-world failure is not size but glare: a glossy laminated table tent under restaurant downlighting reflects straight into the camera. ### QR codes on mugs and drinkware https://useqr.app/qr-codes-on/mugs.md A mug is a cylinder about 8 cm across, so a QR code has roughly 8 cm of usable arc before curvature defeats the decoder. Keep the code to 2.5–3.5 cm and centre it on the flattest part facing the viewer. ### QR codes on name badges and lanyards https://useqr.app/qr-codes-on/name-badges.md A badge QR code is scanned across a handshake — 30–50 cm — so 3–5 cm is right. The bigger issue is that lanyards swing and badges flip, so the code must be printed on both sides. ### QR codes on pet tags https://useqr.app/qr-codes-on/pet-tags.md A pet tag disc is 2–3 cm across, leaving about 1.8 cm for the code, so the payload must stay tiny — a version-3 code at error correction H holds only 24 characters. Engrave a short portal URL rather than a phone number; it survives scratches and stays updatable. ### QR codes on plant tags and garden markers https://useqr.app/qr-codes-on/plant-tags.md A garden QR code faces UV, rain, frost and soil splash. Use error correction H, a UV-stable material, and expect to replace printed tags every two seasons unless you use engraved or anodised metal. ### QR codes on posters https://useqr.app/qr-codes-on/posters.md A poster QR code is read from between one and three metres, so under the ten-to-one rule it needs to be 10–30 cm wide. Most posters carry codes at 3–5 cm, which is why most poster codes go unscanned. ### QR codes on product packaging — print specs https://useqr.app/qr-codes-on/product-packaging.md Packaging QR codes need 2–3 cm and error correction Q, because packaging is curved, creased, laminated and handled. The harder problem is permanence: the code outlives the campaign, so it must point at a URL you will still control in five years. ### QR codes on receipts https://useqr.app/qr-codes-on/receipts.md Receipt printers are 203 DPI direct-thermal devices, so each QR module must be a whole number of dots — in practice a 2–2.5 cm code. Use error correction Q because direct-thermal print fades within weeks in a wallet, and keep the URL short since 58 mm paper cannot fit dense codes. ### QR codes on cvs and résumés https://useqr.app/qr-codes-on/resumes.md A résumé QR code should be 2 cm and point at a portfolio or LinkedIn profile. The important caveat is that most résumés are read on screen or through an applicant tracking system, where a code is useless — print a visible URL too. ### QR codes on shipping labels https://useqr.app/qr-codes-on/shipping-labels.md Shipping label QR codes are scanned close, often by handheld imagers rather than phones, and often after the parcel has been through a conveyor. Error correction Q and a thermal-transfer ribbon are the two decisions that matter. ### QR codes on shop windows https://useqr.app/qr-codes-on/shop-windows.md A shop window code is read from the pavement, often through glass with strong reflections, so it needs to be 10–30 cm and mounted with reflection in mind. The glass is the problem, not the code. ### QR codes on slide decks and presentations https://useqr.app/qr-codes-on/slide-decks.md A QR code on a projected slide is scanned from wherever the audience is sitting — often 5–10 m back. Size it as a proportion of the projected image, leave it on screen for at least 20 seconds, and never put it on a slide you advance quickly. ### QR codes on letterheads and stationery https://useqr.app/qr-codes-on/stationery.md A QR code on business stationery should be 1.5–2 cm in the footer. Keep it out of the fold and out of the window area of a windowed envelope, and always print the URL as text as well. ### QR codes on stickers https://useqr.app/qr-codes-on/stickers.md Sticker QR codes are usually scanned close, so 1.5–4 cm is enough — but stickers get scuffed, curled and rained on, which is why error-correction level Q is the sensible default here rather than M. ### QR codes on storefront signage https://useqr.app/qr-codes-on/storefront-signage.md Storefront signage is scanned from the pavement at 1–3 m, so the code needs to be 10–30 cm wide under the ten-to-one rule. Mount it 1.2–1.6 m above the ground; a fascia code above the door sits at too steep an angle to decode. ### QR codes on t-shirts and apparel https://useqr.app/qr-codes-on/t-shirts.md A QR code on clothing needs 5–10 cm because people scan it from conversational distance, and error correction Q because fabric stretches, wrinkles and distorts the pattern. Print flat-chest or back, never over a seam. ### QR codes on table tents https://useqr.app/qr-codes-on/table-tents.md A table tent is read from 40–80 cm, so the ten-to-one rule asks for a 4–8 cm code; in practice 3–4 cm works because diners lean in or pick the tent up. Use error correction M, matt laminate, and print the code on both faces. ### QR codes on tattoos https://useqr.app/qr-codes-on/tattoos.md A QR tattoo needs to be at least 5–8 cm and use error correction H, because skin stretches, ink spreads over years, and the surface is curved. Most importantly, the destination must be something you control permanently — the tattoo outlives every domain. ### QR codes on tote bags https://useqr.app/qr-codes-on/tote-bags.md A tote bag is read at 1–2 m while being carried, so the code should be at least 10 cm square. Use error correction H because fabric drapes, folds and creases distort modules, and print on the flattest panel — never across a seam or the bottom gusset. ### QR codes on tv and broadcast https://useqr.app/qr-codes-on/tv-broadcast.md A QR code on television is scanned from a sofa 2–4 m from the screen, so it needs to occupy 12–20% of the screen height and stay on air for at least 15 seconds. Broadcast compression is the second constraint: fine module detail does not survive it. ### QR codes on vehicle wraps https://useqr.app/qr-codes-on/vehicle-wraps.md A vehicle QR code only works when the vehicle is parked. On the move it is unscannable at any size. Size for the parked case — 20–50 cm — and put it on the side panel, not a curved or hinged surface. ### QR codes on websites https://useqr.app/qr-codes-on/websites.md A QR code on a web page is scanned by a second device pointed at the screen. Size it at 150–250 CSS pixels, serve SVG, and remember that on mobile the code is nearly useless — a tap target is better. ### QR codes on wristbands https://useqr.app/qr-codes-on/wristbands.md A wristband QR code has to work on a curved, moving, sweaty surface about 15–20 mm tall. Keep the payload tiny so the code stays low-version, use error correction Q, and consider a rectangular rMQR code if your scanners support it. ### QR codes on yard signs https://useqr.app/qr-codes-on/yard-signs.md A driver passing at 3–8 m would need a 30–80 cm code, which rarely fits a 45 × 60 cm sign. Design for the stopped reader instead — 20–30 cm for someone standing 2–3 m away at the kerb — with error correction Q and inks that survive UV fade. ### The best bulk QR code generators https://useqr.app/vs/best-bulk-qr-code-generator.md Judge bulk QR tools on four things: input format (CSV or XLSX), output format (ZIP of files or URLs), the per-batch limit, and the cost per 1,000 codes. UseQR's bulk tool is free and client-side, and its keyless batch API takes 1,000 items per call. Paid platforms only earn their fee when every code must be dynamic. ### The best dynamic QR code platforms — from a tool that doesn't sell one https://useqr.app/vs/best-dynamic-qr-code-platforms.md UseQR does not offer dynamic QR codes, so this roundup is disinterested. For enterprise governance, Uniqode. For a free start that stays free, the-qrcode-generator's two permanent free dynamic codes or Hovercode. QRCodeKIT's two free codes are lifetime but scan-capped. Before subscribing to anything, ask what happens to printed codes when you cancel. ### The best free QR code generators, honestly compared https://useqr.app/vs/best-free-qr-code-generators.md For a free static QR code with full design control and no account, UseQR and QRCode Monkey are the two credible options; we generate client-side and are open source, they have a longer track record. If you need dynamic codes with scan analytics today, we do not offer them — use QRCodeKIT, Uniqode or The QR Code Generator. ### The best open-source QR code generators https://useqr.app/vs/best-open-source-qr-code-generator.md For libraries, the standouts are qrcode on npm (MIT), Python's qrcode and segno (BSD), ZXing (Apache 2.0, encode and decode), and Nayuki's QR Code generator, the respected multi-language reference implementation (MIT). For a finished hosted product that is itself open source, UseQR is MIT-licensed end to end. Judge every option by licence and maintenance activity. ### The best QR code APIs https://useqr.app/vs/best-qr-code-api.md For a free QR API, the credible options are qrserver (the decade-old veteran, PNG-focused), QuickChart (charts plus QR, self-hostable), and UseQR (keyless, SVG/PNG/PDF, typed payloads, decode and verify endpoints, 1,000-item batches, OpenAPI and MCP). qrserver wins on track record; UseQR on capability; a paid SLA only matters for revenue-critical paths. ### The best QR code generator with a logo — judged by criteria, not kickbacks https://useqr.app/vs/best-qr-code-generator-with-a-logo.md Judge logo support by three criteria: error correction level H, logo coverage kept under about 20 percent, and a decode-verify step proving the result scans. Among free tools, UseQR and QRCode Monkey genuinely do logos with no watermark or signup; UseQR additionally verifies every code. Paid design platforms earn their fee only for brand-system workflows. ### The best QR code generators without a watermark https://useqr.app/vs/best-qr-code-generator-without-a-watermark.md UseQR, QRCode Monkey and Hovercode all produce QR codes with no watermark on their free offerings — a watermark on a free static code is a warning sign, since static generation costs the provider nothing. Watermarks also matter practically: marks placed near the code can intrude on the quiet zone and interfere with scanning. ### The best QR code scanner apps — you probably don't need one https://useqr.app/vs/best-qr-code-scanner-apps.md Most people need no scanner app — iPhone cameras have scanned QR codes natively since iOS 11 in 2017, and modern Android phones scan through the camera or Google Lens. A standalone app earns its place for batch scanning, scan history, or previewing URLs before opening. Judge candidates on permissions requested, offline operation and absence of ads. ### The best self-hosted QR code generators https://useqr.app/vs/best-self-hosted-qr-code-generator.md Self-hosting a QR generator protects two things: payload privacy, since sensitive data never touches a third party, and permanence, since no vendor can shut down or change what you run. Credible routes are wrapping a library behind an internal endpoint, deploying an open-source product like MIT-licensed UseQR, or a container image. The ops cost is real but small. ### The hidden costs of free QR code generators https://useqr.app/vs/hidden-costs-of-free-qr-generators.md The real costs of "free" QR generators are not prices: dynamic codes that stop resolving when a trial or plan lapses and kill every printed copy, payload data harvested at creation, watermarks that force a second print run, ads shown to your scanners, and lock-in discovered at renewal. Each is avoidable if you check for it before printing. ### How to migrate off a dynamic QR code provider https://useqr.app/vs/how-to-migrate-off-a-dynamic-qr-provider.md Export your code list and destinations while the account is still active — most vendors kill redirects the moment a subscription lapses. Then triage each code: reprint as a static direct link where you can, re-point to a redirect on a domain you control where you cannot, and verify every replacement before cancelling. ### QR code generator pricing compared — the five models and their traps https://useqr.app/vs/qr-code-generator-pricing-compared.md QR pricing follows five models: trial-then-expire (printed codes die when the trial does), per-code allowances, per-scan caps, ad-supported scanning, and metered edits. Managed redirects, analytics and governance legitimately cost money; static code generation does not — it is milliseconds of client-side arithmetic, and free static with no strings is the baseline to demand. ### QR code generators that need no signup https://useqr.app/vs/qr-code-generator-without-signup.md UseQR and QRCode Monkey both let you generate and download without an account. The reason most tools require one is that the account is how they upsell dynamic codes — the static code itself costs them almost nothing to produce. ### Should you use a dynamic QR code? https://useqr.app/vs/should-you-use-a-dynamic-qr-code.md Use a dynamic QR code only when you genuinely need to change the destination after printing or count scans in a dashboard, and accept the costs: a vendor dependency, a subscription, and a redirect hop on every scan. For most single-purpose codes static is safer, and a static code pointing at your own domain gives editability without the vendor. ### UseQR vs Adobe Express QR code generator https://useqr.app/vs/useqr-vs-adobe-express-qr.md Adobe Express generates QR codes competently inside its design suite, but requires an Adobe account before you can use it. UseQR requires no account, covers 28 payload types rather than mainly URLs, generates client-side so data never reaches a server, exports clean SVG, and offers a keyless API. Stay in Express if the code is part of a design you are building there. ### UseQR vs Canva's QR code generator https://useqr.app/vs/useqr-vs-canva-qr.md If you are already designing in Canva, its built-in QR app is the convenient choice for a URL code — the code lands directly in your layout. UseQR is the better tool when the payload is not a URL (WiFi, vCard, UPI, EPC), when you want no account involved, or when you need an API. You can also combine them. ### UseQR vs the Google Charts QR API https://useqr.app/vs/useqr-vs-google-charts-qr.md You cannot choose the Google Charts QR API — Google deprecated it in 2012 and shut it down in March 2019, breaking every embed that still called it. If you are maintaining code that used it, the migration is a one-line URL swap to a keyless replacement such as UseQR's API, which is also MIT-licensed and self-hostable. ### UseQR vs goqr.me https://useqr.app/vs/useqr-vs-goqr-me.md goqr.me is the veteran free QR generator and the front end of the qrserver API, with over a decade of reliable service. The structural difference is that goqr.me generates server-side, so payloads like WiFi passwords transit their infrastructure, while UseQR generates static codes entirely in your browser and adds decode-verification, typed payloads and an MCP server. ### UseQR vs the Python qrcode library https://useqr.app/vs/useqr-vs-python-qrcode.md Inside a Python codebase, the qrcode or segno library is usually the right choice — offline, permissively licensed, no third party at runtime. UseQR's API earns its place for no-dependency scripts, spec-validated payloads like UPI and EPC, styled codes that are decode-verified, batches of up to 1,000, and users who do not write Python. ### UseQR vs the qr-code-styling library https://useqr.app/vs/useqr-vs-qr-code-styling.md qr-code-styling is the MIT-licensed JavaScript library that powers the styled-code UIs of many generators — dots, rounded modules, custom eyes, embedded logos. If you are building your own generator interface, it is the right foundation. If you just need styled codes now, with decode-verification and typed payloads, use a finished product instead. ### UseQR vs QRCode Monkey https://useqr.app/vs/useqr-vs-qrcode-monkey.md QRCode Monkey and UseQR are the two genuinely free static QR generators — no signup, no watermark, unlimited codes. QRCode Monkey has the longer track record and a large template gallery. UseQR generates client-side, decode-verifies every code, is MIT open source, and adds a keyless API and MCP server. Neither offers dynamic codes. ### UseQR vs the qrcode npm package https://useqr.app/vs/useqr-vs-qrcode-npm.md They are different tools. Inside a Node or JavaScript codebase you control, the qrcode npm package is often the right choice — no network dependency, MIT-licensed, battle-tested. UseQR earns its place when you want zero dependencies, typed payloads like UPI or EPC, styled output, decode-verification, or codes made by non-developers. Many teams sensibly use both. ### UseQR vs the qrserver / goqr.me API https://useqr.app/vs/useqr-vs-qrserver-api.md api.qrserver.com is the long-standing free QR API and it works well for plain PNGs. UseQR adds SVG and PDF output, typed payload builders with real spec validation, decode-verification, an MCP server, and errors that return a corrected call — all still keyless. ### What "free" actually means in QR tools https://useqr.app/vs/what-free-actually-means-in-qr-tools.md In QR tools, "free" means one of four things: a trial that expires and kills your codes, a small free tier inside a paid product, free with strings such as watermarks or ads on every scan, or actually free. The 60-second test: can you make and download a code with no account, and does the tool document what happens to that code later? ### What happens when a QR code service shuts down https://useqr.app/vs/what-happens-when-a-qr-service-shuts-down.md Static codes are unaffected — they contain the destination directly. Dynamic codes stop resolving the moment the provider's redirect stops, and every printed copy dies at once. There is no recovery for material already distributed. ### When a paid QR platform is worth it https://useqr.app/vs/when-a-paid-qr-platform-is-worth-it.md Pay when you genuinely need to change a destination after printing, need scan analytics you cannot get from your own logs, or need enterprise governance such as SSO and audit trails. Do not pay for the code itself — a static QR code costs nothing to produce.