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.

Tools

Mailto link generator
Fill in the fields and copy a ready-to-use mailto link.
Your mailto link49 characters
mailto:[email protected]?subject=Quick%20question
Test link Opens a draft in your default email app. Nothing sends until you press send.

Mailto 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 those signups go on 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 submission can trigger the transactional email that follows.

FAQs

Do mailto links work on every device?

Can I add multiple recipients, CC, and BCC?

Why is my subject or body full of %20 and %0A?

Is there a length limit on a mailto link?