QR Code Builder

A QR code is a fixed encoding of whatever text you put in it. The code generated here contains your URL and nothing else, which is worth stating because a large share of QR codes in circulation encode a redirect through a tracking service instead.

How to use it

  1. Enter the text or URL you want encoded.
  2. The code is rendered in the page as you type.
  3. Download or screenshot the result. No redirect service is involved.

Static versus dynamic codes

A static QR code encodes your destination directly. Scanning it goes straight there, it works forever, and nobody is counting.

A dynamic code encodes a short URL belonging to a QR service, which redirects to your real destination. That buys you two things: the ability to change the destination after the code is printed, and scan analytics.

It costs you rather more. The service sees every scan, along with approximate location and device information, and typically retains it. Your code stops working if the service goes away, changes its terms, or if you stop paying, and there are documented cases of free tiers being converted to paid with existing codes held hostage. There is also an open redirect sitting between your printed material and your users.

Codes generated here are static. Use one when the destination is stable, which covers most cases, and accept the trade-off consciously if you genuinely need to change the target later.

Error correction, and why the level matters

QR codes use Reed-Solomon error correction, which is what lets a damaged or partially obscured code still scan. Four levels are defined, and each one trades data capacity for robustness.

The four levels:

The quiet zone is not optional

The specification requires a clear margin around the code, four modules wide, where a module is one of the small squares. Scanners use it to locate the code boundary.

Cropping it off is the most common reason a code that looks fine fails to scan, and it happens constantly in design work where the code is placed tight against an edge or a coloured block. If your code scans on screen and fails in print, check the margin first.

Keep the payload short

More data means more modules, and more modules means each one is physically smaller at a given printed size. A code holding 40 characters is comfortably scannable on a business card; the same physical square holding 300 characters is a grey smudge to a phone camera.

This is the one legitimate argument for a URL shortener in this context: not tracking, but module count. Trimming a long URL with tracking parameters attached often makes the difference between a code that scans in poor light and one that does not.

On contrast: scanners need dark modules on a light background. Inverted codes, low-contrast colour pairs, and codes printed over a photograph frequently fail. Some scanners handle inversion, many do not, and it is not worth the risk on printed material.

At a glance

TypeStatic, encodes your text directly
Redirect serviceNone
Quiet zoneFour modules, included in the render
TransmittedNothing

Frequently asked questions

Can I change where the code points after printing it?

Not with a static code, which encodes the destination directly. That requires a dynamic code from a redirect service, which then sees every scan and can stop working if the service does.

Does the code expire or need an account?

No. It encodes your text and nothing else, so it works as long as the destination does. There is no service in the middle.

Why does my printed code fail to scan?

Usually the quiet zone has been cropped. The specification requires a clear four-module margin. After that, check contrast and whether the payload is long enough to make the modules too small at the printed size.

Can I put a logo in the middle?

Yes, at error correction level H, which recovers about 30 percent of the code. Keep the covered area small and test with several phones before printing.

Related tools