Make a QR code from any text or URL and download it as a PNG. Choose the error correction, module size and colors. Runs in your browser.
Runs in your browser — your input is processed on this device and never uploaded.
UTF-8 payload to encode. Must not be empty; at most 8192 bytes and whatever the chosen error-correction level can fit.
Results appear here.
A QR code stores text in a square grid of dark and light modules that a phone camera can read. Website links are the usual payload, followed by Wi-Fi join details, contact cards, and otpauth links that load a secret into an authenticator app.
This QR code generator turns text or a URL into a PNG image in your browser.
The result is a PNG file you can download, print or drop into a design.
Typing a long URL or a Base32 secret on a phone is slow and easy to get wrong. A camera reads it in one frame. That is why menus, payment pages, Wi-Fi sheets and authenticator setup screens all ended up showing QR codes instead of asking people to type.
A code made here is static: the text is the code. Nothing redirects through a tracking service, so it keeps working as long as the link inside it does.
Dynamic QR services let you change the destination after printing and count scans. They route every scan through their own server, and the code stops working if the service does. Use one only if you need those features.
A short printed URL still wins when people cannot point a camera, or when a screen reader has to read it aloud. This page only makes codes. It does not read a photo of one.
To add an account to an authenticator app, encode a link such as otpauth://totp/Example:alice?secret=JBSWY3DPEHPK3PXP&issuer=Example. To check the codes that secret produces, use TOTP 2FA Code Generator.
QR codes come in 40 sizes, called versions, from 21 by 21 modules up to 177 by 177. This tool picks the smallest version that fits your text, so raising error correction from L to H can push the same text to a bigger version.
Contrast matters more than color. Pale gray on white will encode and then fail in the camera. The contrast check is there because scanners need a clear dark and light pair, not a brand palette.
The code is drawn in your browser. Your text is not sent to ToolkitBay's servers.