VIP pricing

← All tools

QR code generation / scanning

Type content on the left to generate a QR code and export PNG or SVG; you can also drop in an image to read the QR code inside it. The encoder is computed live in this browser, and the QR content is never sent to any server.

Quick colours
Longer content makes a denser code. A higher error-correction level resists damage better but needs a bigger code for the same content.

Read a QR code from an image

Drag a QR code image here, or click to choose
PNG / JPG / WebP supported · scanning happens locally, images are never uploaded
Scanning uses the browser's built-in barcode API; no network, no uploads.

How to use

  1. Type the content on the left (a URL or any text)
  2. Choose the error-correction level and export size, and adjust colours if you like
  3. Download PNG or SVG; to read a QR code, drop an image into the scanner below

FAQ

Is my content sent to a server?
No. The encoder runs inside this page; everything is computed locally and nothing is uploaded.

Why does longer text make a denser code?
QR capacity is limited: more content needs more modules, and a higher error-correction level also uses space. Shorten the text or use level L for a sparser code.

Everything runs locally in your browser — files are never uploaded. BoxKit VIP unlocks unlimited use of all 29 tools.

When to use it

Moving a piece of text from a screen to a phone, or printing a link on paper — a QR code is the easiest way. Equipment asset labels, trade-show landing pages, manual links on packaging: what they have in common is that the people who want to look will not type it by hand and can only scan. When the content involves an internal ticket number or a temporary link with a passcode, this page is more reassuring: encoding is done locally in your browser, the content never goes over the network, and it does not stay in anyone's server logs.

The reverse use case is common too: you receive a screenshot of a QR code and want to know where it points before deciding whether to tap it. Drag the image into the recognition area below to read the original text; the image is likewise decoded only locally. Recognition uses the browser's built-in barcode interface, which Chrome and Edge have and Safari currently does not, so on an unsupported browser you have to switch to another one.

How to choose the settings

Compared with other approaches

Compared with online QR code services, most of them offer short links, scan statistics and the ability to change the target address at any time, none of which this page has: what you export is a static code, changing the content means regenerating it, and you cannot see who scanned it. What you get in return is no sign-up and no usage limits, and the link points exactly where it points.

Compared with software such as Photoshop and Illustrator, professional tools can make decorative codes with dots, gradients and an embedded logo, and can control print bleed. This page only outputs regular square modules and can change colour at most; it cannot do those flourishes. Decoration itself eats into the error-correction margin, and heavily designed codes often fail to scan in low light, so if you only need something that works, a regular square code is safer.

The recognition side is weaker: it only recognises QR codes, not one-dimensional barcodes or Data Matrix, and it does not adjust live in the viewfinder like the system camera. Its use is when you already have an image in hand and do not want to aim again.

Additional Q&A

Why can a higher error-correction level make the code unscannable?
A higher level consumes data capacity, so the encoder has to jump to a higher version and the modules get more numerous and smaller. In small print or on screen, the loss from smaller modules often outweighs the gain in error correction, so higher is not always better.

How long does content have to be before shortening it is worth considering?
In practice, past 150 characters or version 10 you should watch out: module density goes up, and a little distance or slight defocus makes it unscannable. Plain text can be written freely, but keep URL parameters minimal — that helps more than raising the error-correction level.

Does exporting 2048 px always mean a sharper image?
No. After the edge length is rounded to whole modules the remainder is dropped, so 256 px and 2048 px are the same symbol on screen. The value of 2048 px is only for print and later enlargement: bigger file, slower upload, while 512 px is enough for web display.

What are the common reasons recognition fails?
Common ones are: the image is blurry or shot at an angle causing perspective distortion, the quiet zone around the code has been cropped away, and screen glare and moiré flatten black and white into grey. You can crop the extra background, straighten the code, and try a sharply focused image instead; error correction cannot restore what is missing from the image.