Free tool Mailto link generator
A “contact us” link that opens the visitor’s email app with the address, subject and a starter message already filled in. Getting the encoding right by hand is fiddly: spaces must be %20 rather than +, line breaks %0D%0A, and an unescaped & or # silently cuts the message short. Fill in the fields and copy a link that follows RFC 6068.
- To, cc, bcc, subject, body
- HTML and Markdown snippets
- Runs locally
Build a mailto link
Every field is optional except that you need at least one of them. Separate several addresses with commas.
One or more addresses, separated by commas. “Name <address>” is reduced to the address, because mailto links cannot carry display names.
Visible to anyone who reads your page source.
One line. Line breaks are replaced with spaces.
Plain text only. Line breaks are kept and encoded as %0D%0A.
What the visitor sees in the HTML and Markdown versions. Empty = the first address.
mailto:support@example.com?subject=Question%20about%20my%20order%20%231024&body=Hi,%0D%0A%0D%0AOrder%20number:%20%231024%0D%0AWhat%20happened:%0D%0A%0D%0AThanks!The raw link. Use it in an href, an email signature, or a QR code.
<a href="mailto:support@example.com?subject=Question%20about%20my%20order%20%231024&body=Hi,%0D%0A%0D%0AOrder%20number:%20%231024%0D%0AWhat%20happened:%0D%0A%0D%0AThanks!">Email our support team</a>The & between parameters is escaped as &, as HTML requires.
[Email our support team](<mailto:support@example.com?subject=Question%20about%20my%20order%20%231024&body=Hi,%0D%0A%0D%0AOrder%20number:%20%231024%0D%0AWhat%20happened:%0D%0A%0D%0AThanks!>)Angle brackets around the link keep Markdown from misreading brackets in the subject.
Checks
- OKLink built: 161 characters, encoded per RFC 6068.
Share these inputs: the values go after the # in the link, so they never reach a server.
https://tapcub.com/tools/mailto-link-generator
Version v1.0Updated Update history
Three ways to use the same link
The link itself is identical in all three outputs; only the wrapping changes.
mailto link
Starts with mailto:, then the addresses, then ? and the fields joined with &. Paste it wherever a URL is expected: an href, a button in a site builder, a QR code generator.
HTML anchor
Ready for a web page. Inside an HTML attribute, & has to be written &; browsers often forgive the raw form, validators do not.
Markdown
For README files, help-center articles and docs sites. The link sits in angle brackets so a bracket in the subject cannot break it.
Checks
Address problems (typos, display names, a missing @) and warnings about length, Bcc visibility and HTML in the body. Errors still produce a link, so you can fix the address and copy again.
A mailto link only opens an email draft. The visitor can change every field, and nothing is sent until they press send.
Three steps
Click your finished link once on a phone and once on a computer.
-
1
Fill in the fields
Add the address, a subject your team can filter on (“Website enquiry”), and a short body that asks for what you need, such as an order number.
-
2
Copy the format you need
Raw link for site builders and signatures, HTML for hand-written pages, Markdown for docs.
-
3
Test on two devices
On a phone it opens the mail app; on a computer it opens whatever is set as the default mail handler, or nothing at all if none is set up.
What RFC 6068 says a mailto link must look like
mailto: + addresses separated by commas + optional ?field=value pairs joined by &. Values are UTF-8 and percent-encoded.
- Spaces SHOULD be
%20(RFC 6068 §5). A+is not a space in mailto, and some clients treat it as one, so this tool writes a real plus as%2B - Line breaks in the body MUST be
%0D%0A(§5) % / ? # [ ] & ; =MUST be encoded inside addresses and values (§2); otherwise&or#ends the field early- Non-ASCII text such as café or 价格 is encoded as UTF-8 bytes:
caf%C3%A9(§2, §6.3)
| Character | In the link | Rule |
|---|---|---|
| Space | %20 | RFC 6068 §5 |
| Line break | %0D%0A | RFC 6068 §5 |
& | %26 | §2: would start a new field |
# | %23 | §2: would start a URL fragment |
+ | %2B | §5: may be encoded; avoids being read as a space |
| é | %C3%A9 | §2: UTF-8, then percent-encoded |
From fields to a finished link
A support link that asks for an order number. Each field below shows the encoded form that ends up in the link.
| Field | You type | In the link |
|---|---|---|
| To | support@example.com | mailto:support@example.com |
| Subject | Question about my order #1024 | ?subject=Question%20about%20my%20order%20%231024 |
| Body, line 1 | Hi, | &body=Hi, |
| Body, blank line | %0D%0A%0D%0A | |
| Body, line 3 | Order number: #1024 | Order%20number:%20%231024 |
Without encoding, the # in the subject would end the link right there and the body would be lost. RFC 6068’s own example of a body is mailto:infobot@example.com?body=send%20current-issue.
Where mailto links break
Most broken mailto links look fine in the editor and fail only in the visitor’s mail app.
Using + for spaces
Form encoding (a+b) is not mailto encoding. Some apps show the plus signs literally. Use %20.
Raw & or # in the text
“Q&A” or “order #12” ends the subject early. Encode them as %26 and %23.
Publishing the address in plain sight
Addresses in page HTML are harvested by spam bots. Use a role address you can filter, or a contact form or chat for high-traffic pages.
Assuming everyone has a mail app
On many work and shared computers no mail client is set up, and clicking does nothing. Show the address as text next to the link too.
When email is too slow for a question
A mailto link moves the conversation out of your site. Live chat keeps it there, and still falls back to email after hours.
Offline messages with an email address
Outside working hours, the TapCub chat widget collects a message and the visitor’s email, and drops it into the same inbox.
Learn moreCount clicks on mailto links
Mailto links are not web links, so they are not auto-tracked as outbound clicks. Send a custom event with tapcub.track() when one is clicked.
Email alerts for agents who are away
Each agent chooses desktop alerts, sound, or email only when they are away; offline messages trigger an alert.
Learn moreMailto link questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
How do I add a subject and body to a mailto link?
Add ?subject= after the address and join further fields with &: mailto:joe@example.com?subject=Hello&body=Hi%20Joe. Encode spaces as %20.
How do I add a line break in a mailto body?
Use %0D%0A, which RFC 6068 requires for line breaks. Two in a row make an empty line.
Why do I see + signs instead of spaces in the email?
The link was encoded with form encoding, where + means space. In mailto links + is just a plus sign. Re-encode with %20.
How do I send to several people?
Separate addresses with commas: mailto:a@example.com,b@example.com. Cc and Bcc take comma-separated lists too.
Can I attach a file with a mailto link?
No. RFC 6068 has no attachment field. A few clients once accepted a nonstandard parameter for it, but you cannot rely on it. Put a link to the file in the body instead.
Can I use HTML in the body?
No. The body is plain text; tags appear literally. Keep it to short lines and blank lines between paragraphs.
Is there a length limit?
RFC 6068 sets none, but browsers and mail apps do. Keep the whole link under about 2,000 characters; for long templates, ask the visitor to fill in a form instead.
Will spam bots find my address?
Probably. Anything in the page HTML, including mailto links, can be scraped. Use a role address with good spam filtering, or offer a contact form or live chat.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Answer while the visitor is still on the page
TapCub live chat sits on the same snippet as analytics, so each conversation shows the page and source it started from.