Text QR Code Generator

Encode a message, not an action.

Type your text below. Scanning simply displays it on screen — nothing opens, nothing is dialled, no network is contacted. It is the only type here that works with no signal whatsoever.

Customize

Type
Encodes a website URL. Opens in the phone's browser when scanned. Encodes plain text. Displays as-is when scanned — no link, no app needed. Encodes a contact card. Phones can save it directly as a new contact. Encodes Wi-Fi credentials. Phones can join the network directly by scanning — no typing a password. Encodes an email address. Opens a pre-filled draft in the phone's mail app when scanned. Encodes a phone number. Opens the phone's dialer, pre-filled, when scanned. Encodes a text message, pre-addressed. The message itself may not always pre-fill depending on the recipient's phone — this varies by device. Opens a WhatsApp chat with the number pre-filled, and the message too if you add one. Requires WhatsApp installed (or web.whatsapp.com). Encodes a map coordinate. Opens the phone's default maps app, centered on that point, when scanned. Encodes a calendar event. Phones can add it directly to their calendar app when scanned.
Embeds your logo in the QR code's center. Every code is generated at error correction level H, the highest, which is what makes a logo possible at all — but a logo is still deliberate damage, so keep it at or below 15% of the code's area and test before printing.
Quick color templates

Pick a preset to fill in the dot and background colors below, or skip this and choose your own.

Light backgrounds
Dark backgrounds

Light dots read fine on dark backgrounds on screen, but most scanners are tuned for dark-on-light -- test before printing at volume. Scan reliability tips.

Dot color
Background
Shape
Fits the whole code inside a circle — the pattern shrinks slightly to stay inside it, so it may be a little harder to scan from a distance.

Preview

Generated QR code — press and hold to save or share
Log in to save QR codes to your account. Sign up free to get 2 dynamic QR codes you can edit after printing.

Generated in your browser — nothing is uploaded or saved.

Its real advantage is that it needs nothing

Every other type here ends in something happening — a browser opens, a dialler fills, a network prompt appears. This one ends with words on a screen, and that constraint is the feature.

No connection, no app, no server, no dependency on this site continuing to exist. A text code printed today reads identically in twenty years in a basement plant room with no reception. That is a genuinely different reliability class from anything that resolves a URL.

Where that matters:

  • Equipment and asset labels — serial numbers, model numbers, service dates, calibration records.
  • Field instructions — a short procedure on a machine, a valve, a breaker panel.
  • Inventory and warehouse tags, where a scanner app captures the value straight into a system.
  • Places with no signal — plant rooms, cellars, shipping containers, remote sites, underground.

If you want someone to do something, use another type

A text code puts the burden of acting back on the reader. Show a phone number as text and they have to memorise it and switch apps; a phone code puts it in the dialler. Show a web address as text and they have to type it; a link code opens it.

Choose text when the message genuinely is the point — a reference, a value, a caution, a set of words someone needs to read or copy. Choose a purpose-built type whenever there is an action attached, because those produce a tappable prompt and this does not.

Length is the constraint, and it is measured in bytes

Every character is encoded directly, so these get dense faster than people expect. A sentence is comfortable. Several paragraphs produce a grid too fine to scan at any sane printed size.

The hard ceiling is 1,273 bytes and the generator refuses anything longer — but treat a couple of hundred characters as the practical limit for something being printed and read at arm's length.

Note that is bytes, not characters. Accented letters, non-Latin scripts and emoji each consume two to four bytes, so a message well under 1,273 characters can still be rejected. A code full of emoji becomes dense several times faster than plain ASCII. See QR code capacity for the underlying numbers.

Frequently asked questions

Will scanning it open a browser?

No — that is the defining property of this type. Most phone cameras show the text as a notification or an on-screen banner with an option to copy or share it, and nothing else happens.

Can I include a URL in the text?

You can, and most phones will render it as tappable — but a link code is more reliable and produces a cleaner prompt. Use text when the message is the point and any link in it is incidental.

Do line breaks survive?

They are encoded, but how they are displayed is entirely up to the scanning app and some collapse them. Do not rely on layout — keep the message readable as a single block of prose.

Can I use emoji or non-English characters?

Yes, both are supported. Just be aware they eat the capacity budget several times faster than plain ASCII, so the code becomes dense quickly.

Is the text hidden or encrypted in any way?

No. A QR code is an encoding, not encryption — anyone with a phone can read it, and anyone with a photo of it can read it later. Never use one to conceal anything.