Mailto link generator
A mailto link opens a pre-filled email draft in the reader’s default mail app. Fill in the recipients, subject, and body below, and the generator builds the mailto link with correct percent-encoding. Copy it into a button, a link, or an email signature, and test it before you ship.
mailto:[email protected]?subject=Quick%20questionMailto link syntax
A mailto link is a URI that starts with mailto: followed by the recipient address. Fields after the address go in a query string, the same way parameters work in a web URL: a ? starts the query, and & separates each parameter.
mailto:[email protected][email protected]&subject=Quick%20question&body=Hi%20there
The parts:
to comes right after mailto:, before the ?. For more than one recipient, separate addresses with commas: mailto:[email protected],[email protected].
cc adds visible carbon-copy recipients, comma-separated.
bcc adds blind carbon-copy recipients that other recipients do not see.
subject pre-fills the subject line.
body pre-fills the message body.
Encoding rules that keep the link valid:
Separate addresses in to, cc, and bcc with a literal comma. The comma is a valid separator and does not need encoding.
Percent-encode the subject and body values. Spaces become %20, line breaks become %0A, and an ampersand inside your text becomes %26 so it is not read as a new parameter.
Include a parameter only when it has a value. An empty cc= or subject= adds noise and can confuse older clients.
The tool above applies these rules for you. It encodes the subject and body with the same logic as encodeURIComponent, keeps recipient commas intact, and leaves out any field you left blank.
When to use a mailto link, and when to use a form
A mailto link is the right tool for a one-off, low-volume contact point: an ‘Email us’ button in a footer, a support address in your docs, a reply link in a signature. There is no backend to run and no form to maintain.
The tradeoffs are real. The link opens whatever the reader set as their default mail app, which might be a webmail tab they are not signed into, or nothing at all on a shared machine. The address also sits in your page source as plain text, where scrapers harvest it for spam. And you never see who clicked or whether a message actually went out.
A form fits better once contact is recurring, or when you need to capture and route what people send. It keeps the address off the page, validates input, and stores every message in one place. And if a form submission needs to trigger onboarding, receipts, or product updates, you need a sending platform behind the form. Loops runs transactional and marketing email from one contact record, so a form can add the contact and start the workflow that follows.
FAQs
Do mailto links work on every device?
The link relies on the reader having a default mail app configured. On most phones and desktops that is set up, so the draft opens as expected. On a shared or locked-down machine with no default client, the link may do nothing, which is one reason a form is safer for critical contact paths.
Can I add multiple recipients, CC, and BCC?
Yes. Put several addresses in any field and separate them with commas. CC recipients are visible to everyone on the email, and BCC recipients are hidden from the other recipients.
Why is my subject or body full of %20 and %0A?
That is correct percent-encoding. %20 is a space and %0A is a line break. Mail clients decode these back into readable text when the draft opens, so the recipient sees normal spacing and paragraphs.
Is there a length limit on a mailto link?
Client support for long links varies. This tool warns above 1,900 characters as a precaution, not a universal mailto limit. For anything longer than a couple of sentences, link to a page or send a real email instead.
What's next
Related reading and free tools.