QR code utility

Email QR Generator

Build a code that opens a new message with the recipient, subject, and body already filled in. Useful for feedback slips, event invites, and printed material where typing an address by hand is a barrier.





What is actually in the code

The code holds a mailto: address, which is the same kind of link you get by clicking a mailto link in a web page. The address on its own is all that is required. A subject and a message body are optional and are appended after a question mark, and the body is what makes the code worth generating: a code that opens a pre-written message saves the reader the typing.

The subject and the body need encoding

Everything after the address has to be escaped, and this is where hand-built codes usually break. In a mailto link, a + is read as a space and an & starts a new field, so both have to be written as %2B and %26 or the message will be truncated at the first ampersand. A line break cannot be typed at all and has to be %0D%0A. This tool does the encoding for you.

Keep the body short

Every character of the message is code density, and a dense code is a code that will not scan from a poster on a wall. A subject line and one sentence is usually the most that is practical. A longer message is better as a link, where the text is not limited.

Consider a contact card instead

If the point is for someone to keep your details, a vCard saves the name, number, organisation and address into the phone’s contacts in one step, where a mailto only opens a blank message. A vCard is a different code and a different tool. If the point is simply to let someone start an email, the mailto code is the smaller and more reliable choice.

Test it on the phone that will scan it

Mail clients disagree about mailto links. The code will scan on any of them; what varies is whether the address, the subject and the body all survive the trip. Open the generated code on an iPhone and on an Android phone before you print a hundred of them, and check the message arrives with the line breaks where you put them.

A code containing an address is not a secret

Anyone who can see it can read the address with any phone, and there is no way to hide it. That is fine for an address on a public poster, and wrong for a personal or work address that you would not publish. A scanned mailto opens a blank draft addressed to whatever the code says, which is worth remembering before you print one at all.

Which format to pick

Both formats do the same job, and neither is universally right.

mailto: is a web address, so it is understood by essentially every scanner and by desktop QR readers. The trade-off is that several mobile scanners open a blank draft and quietly drop the subject and body. Treat anything important as needing to survive that.

MATMSG is an older format that Gmail and a handful of other apps handle more completely, pre-filling all three fields. Newer scanners are more likely to show it as plain text instead of acting on it. Worth testing both against the apps your audience actually uses.

A limitation worth knowing before you print

A code that carries a long message is a large, dense code that is harder to scan reliably, and the body is exactly the part most likely to be dropped by the scanning app anyway. For anything longer than a sentence, a short link to a form or a page with the message on it will scan more reliably and behave more predictably.

What is in the code

The panel above shows the exact payload before you download, so there is no guessing about what a printed code contains. In the MATMSG format, semicolons and colons separate fields, so any in your text are dropped rather than silently corrupting the code.