calculate.sh DE

This tool runs in your browser using JavaScript. If it does not appear, please enable JavaScript or reload the page. The description below explains how it works.

QR Code Generator

A QR code (Quick Response code) is a two-dimensional barcode defined by ISO/IEC 18004. Unlike a linear barcode, it stores data both horizontally and vertically, which lets it hold far more, survive scratches, and be read by any phone camera. This tool turns any text you type into a QR code in the browser and lets you tune the error-correction level, colours, and size before you download it as a PNG.

How to use

  1. Type or paste content into the content box. A URL, a Wi-Fi handover string, a contact card, or a one-time-password URI - QR codes can encode anything up to the capacity limit below.
  2. Set the error-correction level with the L, M, Q, and H buttons.
  3. Choose a size (128, 256, or 512 pixels), optionally tick Rounded for a softer, dot-style code, and pick foreground and background colours with the two colour swatches.
  4. Download PNG saves the rendered image; Copy image puts the PNG on your clipboard for pasting into documents or chats. If the browser blocks clipboard image writes, the tool falls back to downloading instead.

Error-correction levels

QR codes carry redundant data so that a damaged or partially obscured code can still be read. Higher levels survive more damage at the cost of capacity. The four standard levels are:

Level Recovers Maximum bytes (version 40)
L ~7% 2,953
M ~15% 2,331
Q ~25% 1,663
H ~30% 1,273

M is the default and the usual choice. Use H when the code will be printed small, placed on a curved or dirty surface, or partially covered by a logo. Use L only when you need maximum data in a clean digital context. The byte counter under the input warns you when the payload is large for the selected level or has crossed the hard limit.

Common payloads

  • A URL - https://calculate.sh opens the site directly when scanned. This is by far the most common use, from posters to product packaging.
  • Wi-Fi handover - WIFI:T:WPA;S:MyNetwork;P:pass123;; makes Android and iOS offer to join the network without typing the password. Note the escaping rules for special characters in SSID/password fields.
  • A contact card (vCard) - a BEGIN:VCARD … END:VCARD block with FN, EMAIL, and TEL lines adds a contact on scan.
  • Authenticator setup - otpauth://totp/… URIs are how many two-factor apps read a shared secret from a QR code.
  • Plain text - short messages, coupons, or serial numbers work fine, though they offer no click-to-open convenience.

Notes and limitations

  • Everything is generated locally in your browser. Nothing is uploaded, and there is no server-side rendering or logging of the content.
  • The QR code is rendered onto a canvas, and the download is a raster PNG. For print work at large physical sizes, a vector SVG would scale more cleanly; this tool deliberately ships PNG for universal compatibility.
  • Colours need contrast. A dark foreground on a light background scans best. If you invert the colours, some older scanners will fail; keep enough contrast between the two swatches.
  • Capacity depends on content type, not just length. QR codes have dedicated numeric, alphanumeric, and byte modes; arbitrary UTF-8 text uses the byte mode, which is why accented or non-Latin characters cost more space per character than plain ASCII digits.
  • No scanning here. This page creates codes; use your phone's camera or a dedicated scanner app to read them. Reading a QR from an image is outside the scope of a "small tools" collection.

Why the code changes shape

The number of modules (the small black and white squares) grows with the payload and the error-correction level. A short URL at level L produces a coarse code with large modules that a camera can read from far away; a long text at level H produces a dense grid with many small modules that needs a closer, cleaner scan. If a code becomes hard to scan, shorten the content or lower the level before increasing the printed size.