Address only
The simplest form. Opens a blank draft to the right recipient, leaving the sender to write whatever they want.
Encoded as
mailto:hello@example.comOpen a prefilled draft instead of making someone copy an address by hand.
Generated on your device. Nothing you type is sent anywhere.
An email QR code opens a new message with the recipient already set, and optionally a subject line and opening text already written. It uses the mailto scheme that email links on web pages have used for decades, so support is broad and predictable. The subject line is the part worth thinking about: because it arrives already filled in, it can label where the scan happened. Different codes on a window, an invoice and a product manual can produce visibly different subjects, turning an undifferentiated inbox into something that sorts itself.
Email addresses are error-prone to copy — a missed letter or a wrong domain produces a bounce the sender may never notice. Encoding removes that step and the whole class of failure with it.
Because the subject arrives prefilled, distinct codes in distinct places produce distinct subjects. Filtering and triage become possible with no tracking, no redirect service and no analytics — the attribution arrives inside a message the sender chose to write.
Unlike a call, an emailed enquiry arrives with a timestamp and a thread. For anything that may need referring back to later, that is a meaningful advantage over a phone number.
Opening the mail app means the sender can attach a photograph of the fault, the receipt or the damaged part without any additional step from you.
The simplest form. Opens a blank draft to the right recipient, leaving the sender to write whatever they want.
Encoded as
mailto:hello@example.comA code on a specific noticeboard, with a subject naming that board so replies arrive already identified.
Encoded as
mailto:lettings@example.com?subject=Enquiry%20%E2%80%94%20Riverside%20board%2C%20unit%204Printed on a warranty card. The prefilled body prompts the sender for the information you would otherwise have to ask for.
Encoded as
mailto:support@example.com?subject=Warranty%20claim&body=Model%20number%3A%20%0APurchase%20date%3A%20%0AProblem%3APut the destination in the Email address field. This is the only required input — a code with just an address still saves the person from transcribing it, which is where most email typos come from.
Use the Subject line to record where the code is placed rather than what the message is about. A subject reading "Enquiry from the shop window" tells you more on arrival than "Enquiry" ever will.
The Message field prefills the body. Keep it to an opening line the sender would plausibly have written themselves, since they will see it as their own words and can edit or delete it.
Scan the finished code on a phone where email is actually configured. Testing on a device with no mail account set up produces a failure that has nothing to do with the code.
The mailto scheme requires spaces in the subject and body to be percent-encoded as %20. Encoders that treat it like a form submission use a plus sign instead, and standards-compliant mail clients then display literal plus signs throughout the subject line. This generator always uses %20, so pasted text arrives reading correctly.
Both subject and body are percent-encoded into the payload, so every space costs three characters and punctuation often more. A prefilled message of a few sentences can double the pattern's density. Keep the body to a prompt rather than a paragraph.
A mailto link needs a mail client that knows an account. On a phone where the built-in mail app has never been set up, the link opens a setup screen instead of a draft, which reads as a broken code to the person scanning. Nothing about the code can prevent this.
The draft opens and waits. The sender must press send, and can edit anything you prefilled first. Write the body as a prompt for them to complete, never as a statement you are making on their behalf.
Newlines in the prefilled message are encoded, but a few mail clients collapse them into one paragraph. A body built as a form with labelled blank lines mostly survives, but check it in your own client before printing anything that depends on the layout.
mailto is one of the oldest and most widely supported URI schemes, so scanners hand it to the system mail handler without special support. On iOS the built-in Mail app opens with the draft prepared; Gmail and Outlook can be set as the default handler and behave the same way. Android routes it through the default mail app, with the same result. The failure mode is not a scanner problem but a device one: on a phone with no mail account configured the link opens an account setup screen. Desktop behaviour depends on whether a mail client is registered — webmail-only users sometimes see nothing happen at all, which is worth knowing if the code will be scanned from a screen.
The subject and body are query parameters on the mailto URI, percent-encoded per RFC 6068. The address itself keeps its @ unescaped, since encoding it breaks parsing in several clients — one of the small inconsistencies that makes hand-building these payloads unreliable.
No. A draft opens with your address, subject and any prefilled text already in place, and the sender presses send themselves. No link format can send mail on someone's behalf, which is a deliberate protection rather than a limitation of this tool.
That is a generator encoding spaces the way a web form does rather than the way the mailto specification requires. Spaces must be %20; a plus sign is rendered literally by standards-compliant clients. Codes made here always use the correct encoding.
The link opens whatever the device considers its mail handler, which on an unconfigured phone is an account setup screen. There is no way for the code to detect this in advance. If your audience may not have mail configured, a phone number or messaging code is a safer choice.
Yes, both, and the subject in particular is worth using. Distinct codes in distinct places with distinct subject lines mean incoming mail sorts itself by origin without any filtering rules or tracking on your part. The body is most useful as a short template — a few labelled blank lines that collect the details you would otherwise have to ask for in a reply.
Yes. Both fields are percent-encoded into the payload, so a space becomes three characters and punctuation often more. A few sentences of prefilled body can noticeably densify the pattern. Use it as a short prompt rather than a full message.
No. The mailto link is assembled in your browser and the pattern is drawn on your device. Nothing is sent anywhere, which you can verify by watching the Network tab in developer tools stay empty while you type. That applies to the subject and body as well — a prefilled support template containing internal reference numbers never leaves the machine you typed it on.
This generator is part of contact QR codes — see the whole group, and what to decide before you generate one.