Skip to content
T
Tools.Town
Free Online Tools for Everyone
Email Tools

Mailto Links Explained: Syntax, Encoding & Gotchas

Learn how mailto links work, how to add subject, body, Cc and Bcc, why encoding matters, and how to avoid the broken-link mistakes that drop your subject or body.

24 June 2026 4 min read By Tools.Town Team Fact Checked

Key Takeaways

  • Almost always because of unencoded special characters
  • No
  • Yes

A mailto: link is a special URL that, when clicked, opens the visitor’s default email program with a new message ready to go. You’ve used them without thinking — every “Email us” button that pops open your mail app is a mailto link. The simplest form is just an address:

mailto:hello@example.com

Click it and a blank draft opens, addressed to that recipient. The power comes from the extra fields you can pre-fill: a subject, a message body, and Cc/Bcc recipients. The Mailto Link Generator builds these for you and hands back clean, copy-ready code — but it’s worth understanding what’s happening under the hood, because that’s where the common mistakes live.

A full mailto link has two parts. The address list comes first, right after mailto:. Then an optional query string, introduced by ?, carries header fields like subject and body:

mailto:to@example.com?subject=Hello&body=Hi%20there

Each header field is a key=value pair, and multiple fields are joined with &. The recognised fields are cc, bcc, subject, and body. Multiple recipients in any field are separated by commas. So a richer link looks like:

mailto:a@x.com,b@x.com?cc=c@x.com&subject=Project%20update&body=Hi%20team

This is all defined by RFC 6068, the specification for the mailto scheme. The rules aren’t complicated, but one of them trips up almost everyone: encoding.

Why encoding is the whole game

URLs have reserved characters with special meaning. A space ends a token. An ampersand separates fields. An equals sign splits key from value. The moment your subject or body contains one of these — and they always do — a raw, hand-typed mailto link breaks.

Consider a subject like Q3 results & next steps. Drop it raw into a link and the browser reads subject=Q3 results and then hits the &, which it interprets as “new field starts here.” Your subject is truncated and the rest is misread. The fix is percent-encoding: every problematic character is replaced by a % followed by its hex code. A space becomes %20, an ampersand %26, an equals sign %3D. Line breaks in the body become %0D%0A.

There’s a subtle trap even for people who know to encode: in query strings, spaces are sometimes encoded as +. That convention is for HTML form submissions, not for mailto. If you use + in a mailto body, some clients show a literal plus sign instead of a space. The Mailto Link Generator always uses %20, so your text survives intact in every client. This is precisely the kind of detail a generator should handle so you never have to think about it.

Multi-line bodies

Pre-filling a multi-line message is one of the most useful things a mailto link can do — think support templates that ask users to include their order number and a description. Line breaks need to be encoded as %0D%0A (carriage return + line feed). Type your body with normal line breaks in the generator and it converts them correctly, so the recipient’s draft opens with proper paragraphs rather than one run-on line.

Cc, Bcc, and multiple recipients

To add carbon-copy or blind-carbon-copy recipients, use the cc and bcc fields. To address several people at once, separate addresses with commas. A good generator also de-duplicates addresses and does a basic validity check, so an accidental double-paste or an obvious typo like name@domain (missing the top-level domain) gets caught before you ship the link. The generator flags addresses that don’t look valid without refusing to build the link, so you stay in control.

Once you have a correct mailto URL, you’ll usually drop it into one of three places:

In HTML, wrap it in an anchor: <a href="mailto:...">Email us</a>. The generator produces this for you, with the URL properly escaped for an HTML attribute so characters like & don’t break your markup either.

In Markdown, use [Email us](mailto:...). Handy for READMEs, docs, and static-site content.

In an email signature, a mailto link with a pre-filled subject makes it easy for people to reply through the right channel. Pair it with our Email Signature Generator for a polished result, and see the email template guide if you’re designing reusable message bodies.

A mailto link is one of those things that looks right in the code and still surprises you in practice, so always test before publishing. The fastest check is to click the live link and watch what opens: does the correct address appear in the To field, is the subject intact, and did your multi-line body keep its paragraph breaks? The Mailto Link Generator includes a “test this link” button precisely so you can do this in one click without leaving the page.

Pay special attention to the body. Line breaks are the part most likely to misbehave across clients, so confirm that your %0D%0A sequences render as actual new lines rather than a single run-on paragraph or literal \n characters. If you used special characters — an em dash, an ampersand, an emoji — verify they survive the round-trip too.

It’s also worth testing on more than one client if your audience is mixed. Gmail’s web interface, Apple Mail, and Outlook can differ subtly in how they parse a draft, particularly around long bodies and unusual characters. A link that works in all three is one you can ship with confidence. And remember the one thing outside your control: if a visitor has no default mail handler configured, the link may appear to do nothing — that’s their setup, not your link.

Common mistakes to avoid

A few errors account for nearly every broken mailto link. Forgetting to encode is the big one — covered above. Using + for spaces in the body is the sneaky one. Putting Cc or Bcc before the ? instead of in the query string is another; they’re header fields, not part of the address. And relying on the user having a configured default mail client — if they use only webmail with no handler set, the link may appear to do nothing. That last one isn’t your bug, but it’s worth knowing the limitation.

The takeaway

Mailto links are a small, old, beautifully simple piece of the web — and they break far more often than they should, almost always because of encoding. Understand the two-part structure, respect percent-encoding (and never use + for spaces), and let the Mailto Link Generator handle the fiddly bits so your “Email us” button opens a clean, complete draft every time.

Advertisement

Try Mailto Link Generator — Free

Apply what you just learned with our free tool. No sign-up required.

Try Mailto Link Generator

Frequently Asked Questions

Why does my mailto subject get cut off?
Almost always because of unencoded special characters. A space, ampersand, or equals sign in a raw mailto breaks the URL — the browser stops reading the subject at the first problem character. Percent-encoding the value fixes it, which is exactly what the generator does for you.
Can a mailto link send an email automatically?
No. A mailto link only opens the user's email client with a pre-filled draft. The person still has to press send. That's by design — it's a convenience, not an automation, and it can't send mail silently.
Do mailto links work on mobile?
Yes. On phones, tapping a mailto link opens the default mail app (Gmail, Apple Mail, Outlook) with the fields filled in. The same encoding rules apply, so a correctly built link works across desktop and mobile.

Was this guide helpful?

Your feedback helps us improve our content.

Continue Reading

All Email Tools Guides

Get the best Email Tools tips & guides in your inbox

Join 25,000+ users who get our weekly email tools insights.