QR codes are the shortest path from paper to a phone: a menu on a café table, a payment link on an invoice, a web address on a poster that nobody would ever type. Type or paste your text or link here and this page draws a real, standard QR code for it in your browser — then hands it to you as a PNG at the size you choose.
How a QR code stores your text
A QR code is a grid of black and white squares called modules. Three corners carry the big finder patterns that tell a camera where the code is and which way up it sits; timing patterns and a small format marker tell it the grid's size and settings; the rest of the grid encodes your text as binary data, read in a zigzag from the bottom right, together with error-correction data woven through it. Short texts fit in a small grid — a Version 1 code is just 21 × 21 modules — and the grid grows in steps of 4 modules per version as the text gets longer, up to Version 40 at 177 × 177. The version is not a mystery number: it is simply (modules − 17) ÷ 4, and this page shows it with every code. The generator picks the smallest version that fits your text automatically, because smaller grids have bigger, easier-to-scan modules. That is the method, end to end: text → encoded data → module grid → image, all of it standardised, which is why any scanner app on any phone can read the result.
Error correction, level M
Every code made here uses error-correction level M. Roughly 15% of the code's capacity is redundancy, so the message can still be recovered if about 15% of the printed code is scratched, faded, dirty or covered — the maths (Reed–Solomon codes, the same family that kept scratched CDs playing) reconstructs the missing pieces. Higher levels survive more damage but need a denser grid for the same text, which makes modules smaller and scanning from a distance harder; M is the balanced choice used by most menus, posters and packaging. What error correction does not forgive is low contrast or a missing border — see the quiet-zone note below.
The quiet zone matters
Around every code sits a blank margin — the quiet zone — that scanners use to separate the code from whatever surrounds it. The images drawn and downloaded here include a two-module quiet zone inside the white frame on every side. Keep that white border when you place the PNG in a design: cropping tight to the black squares, printing the code over a photograph, or inverting it to white-on-dark are the three classic ways to make an otherwise perfect code unscannable.
Worked example
The code already drawn on this page encodes the default text, https://calcviso.com — twenty characters that fit a compact 25 × 25 module grid, which the formula above identifies as Version 2 ((25 − 17) ÷ 4 = 2). Point your phone camera at the preview and it should offer to open the site. Now type a longer address and watch the stats: the character count climbs, the version steps up and the grid grows denser; shorten the text again and the modules open back out. That trade-off between text length and scannability is the main thing to feel for before you print.
How to use this tool
- Type or paste the text or link the code should carry — it regenerates as you type.
- Check the stats: the QR version and module count tell you how dense the code is; fewer modules means a code that scans more easily, especially small or from a distance.
- Choose a PNG size: 256 px for documents and screens, 512 px for most printing, 1024 px for posters and signs.
- Press Download PNG and save the qrcode.png file.
- Test the downloaded code with your own phone camera — and again from a printout if it is going on paper — before you publish it.
Tips for codes that scan first time
Keep it short: a short link produces a sparse grid that scans from farther away and in worse light; if your address is long, shorten it before encoding rather than shrinking the printed code. Size honestly: as a rule of thumb a code is scanned from about ten times its printed width, so a 25 mm code on a table card is read from roughly 25 cm — print bigger for anything meant to be scanned across a room. Contrast is king: dark modules on a plain light background, never the reverse, and never over a busy image. Keep the quiet zone: the white border around the code is part of the code — leave it in place in your design. One code, one job: the code encodes exactly the text you gave it, forever — it cannot be edited after printing, so if the destination might change, encode a stable address you control that forwards people onward. And always test-scan the final artwork, at final size, with a real phone: thirty seconds of checking beats a thousand unusable leaflets.