QR code generator

Client-side only. Encoding runs in this tab. Nothing is uploaded or saved.

Keep payloads short. Very long text forces a denser (harder to scan) code.

Enter text and hit Generate.

Module size vs print size

A QR code is a grid of modules (black/white squares). The Size control sets the rendered pixel width of that grid. A 256 px PNG is fine for slides and email. For a poster or vinyl sticker, download SVG (or a 512 px PNG) and scale in your layout tool so modules stay sharp. Stretching a 128 px bitmap on a large flyer is the usual reason scanners fail at distance.

Error correction in plain terms

Higher levels add redundancy so a partially dirty or covered code can still decode, at the cost of more modules for the same payload. Rough guide:

Payload recipes that phones understand

Most cameras open a plain https://… URL. For Wi-Fi join prompts, many Android and iOS readers accept this string shape:

WIFI:T:WPA;S:CafeGuest;P:correct-horse;;

Replace the SSID and password. Escape ;, ,, :, and \ inside those fields with a leading backslash if they appear in the name or secret. Event check-in links are just short HTTPS URLs: put the ticket or form URL in the box and print M or Q.

What this page will not do

FAQ

Does my text leave the browser?

No. The QR matrix is built in this tab with JavaScript. ToolPetal has no upload API for the payload you type.

Which error correction level should I use?

L (~7% recovery) keeps the code smaller for clean screens. M (~15%) is a solid default for print. Q (~25%) or H (~30%) help when the code sits on a flyer, might get partially covered, or needs a logo overlay you add elsewhere.

Can I encode Wi-Fi credentials?

Yes, as plain text using the common WIFI:T:WPA;S:NetworkName;P:password;; format (escape special characters in SSID or password). Phones that understand that string will offer to join. This page does not validate the format for you.

PNG or SVG for print?

SVG scales cleanly for large posters. PNG is fine for slides, email, and small stickers if you pick a large enough pixel size (256 or 512). Avoid stretching a tiny PNG in a layout app.