splitforms.com
free · no signup · pure html

Mailto Link Generator — with subject, body, cc, bcc.

Type recipients, subject, and a pre-filled body. Get a properly URL-encoded mailto: URL and an HTML <a> snippet you can paste into any page. RFC 6068 compliant. Pure client-side — nothing leaves the browser.

A mailto link with a subject and body looks like this:

<a href="mailto:hello@yoursite.com?subject=Hello&body=Hi%20there">Email us</a>

Spaces become %20, line breaks %0A. Getting that encoding wrong is the usual reason a mailto link opens to a blank draft. Fill the fields below, copy the result, and the encoding is handled for you — including multiple recipients, CC, and BCC.

mailto: URL
mailto:hello%40yoursite.com?subject=Question%20from%20your%20website&body=Hi%20there%2C%0A%0AI'd%20like%20to%20ask%20about%E2%80%A6
HTML <a> snippet
<a href="mailto:hello%40yoursite.com?subject=Question%20from%20your%20website&amp;body=Hi%20there%2C%0A%0AI&#39;d%20like%20to%20ask%20about%E2%80%A6">Email us</a>
Live previewEmail us

Clicking opens the visitor's default email client (Gmail web, Outlook, Apple Mail, etc.) with the recipients, subject, and body pre-filled. On mobile, it opens the system email app.

Mailto vs contact form — what to use when

A mailto: link is the simplest possible contact mechanism — no backend, no JavaScript, no signup. Click it, your email client opens, you send the message. For a personal portfolio or a side project where the visitor probably has an email client configured, it's fine.

The failure mode is users without a default email client. Most Gmail-web users haven't set up the "handle mailto: links" permission. Mobile users without the Gmail app installed get nothing. They click the link, nothing happens, and they leave. For a business contact form, that's a missed lead — and you have no record it happened.

The fix is a form backend. The visitor fills out an HTML form on your page, the form POSTs to a backend, the backend emails you. The visitor doesn't need any email client configured. You get every submission in your inbox AND in a dashboard, even if your inbox classifies one as spam.

splitforms is one low-cost path to that backend. Drop a form into your page, set action="https://splitforms.com/api/submit" with a free access key, and you're done — 500 free submissions, then $5/month for 5,000 a month if you need more. See the free HTML contact form drop-in or the HTML contact form guide.

Mailto URL parameters

ParameterExample
To (path)mailto:hello@yoursite.com
Multiple recipientsmailto:a@x.com,b@x.com
Subject?subject=Question%20about%20pricing
Body&body=Hi%20there%2C%0A%0AI%27d%20like%20to%20ask
CC&cc=watcher@x.com
BCC&bcc=archive@x.com

Mailto link generator FAQ

What is a mailto link?

A mailto link is a hyperlink whose URL starts with `mailto:` instead of `http://`. Clicking it opens the visitor's default email client with the recipient address pre-filled. You can also pre-fill subject, body, cc, and bcc via URL parameters. The format is defined in RFC 6068. It's pure HTML — no JavaScript, no backend, no third-party service required.

How do I add subject and body to a mailto link?

Append `?subject=Your%20Subject&body=Hello%20there` to the email. Spaces are encoded as `%20`, line breaks as `%0A`, and ampersands inside the body as `%26`. The generator handles all the encoding for you — type plain text, copy the result.

How do I add multiple recipients, cc, or bcc?

Multiple recipients: comma-separate them after `mailto:` (e.g. `mailto:a@x.com,b@x.com`). CC and BCC are URL parameters: `?cc=watcher@x.com&bcc=archive@x.com`. The generator accepts comma-separated lists in the To / CC / BCC fields and encodes them correctly.

Why doesn't my mailto link work for users without an email client?

That's the main weakness. mailto: relies on the user having a configured default email client. Modern users — especially mobile users and users of Gmail web only — often don't. They click the link, nothing happens, and they bounce. For any business contact, you should use a real form backend (like splitforms) that POSTs to your server and emails you directly, regardless of what email client the user has set up.

Mailto vs contact form — which should I use?

Use mailto for personal/portfolio sites where the visitor probably has Gmail or Outlook configured, and the email content is short ('hi, want to grab coffee'). Use a contact form for any business site where you can't afford to lose a lead because the user didn't have a configured email client. splitforms is the easiest backend — drop in a form, point the action at our endpoint, and accepted submissions are saved to the dashboard before owner notification email is attempted. Free captures 500 submissions total and includes owner email notifications; delivery varies by provider and recipient settings.

Will the body parameter work in Gmail web?

Yes, if the user has Gmail configured as their default mailto handler in the browser. Chrome and Firefox both support setting Gmail as the default mailto handler, but it requires a one-time user action that most users haven't done. This is another reason mailto is unreliable for business use — the body content frequently gets dropped or the link does nothing at all for users on Gmail web with no handler set.

Can I prevent the mailto link from being scraped by spam bots?

Yes — use the email obfuscator tool to encode the address as HTML entities or with a tiny JavaScript decoder. The obfuscator is at /tools/email-obfuscator. For mailto generators specifically, you can also output the link via a `data-email` attribute and assemble it on click — but for any real volume, a form backend is the right answer because it never exposes your email address in the page source at all.

Tired of users without email clients?

Drop in a free HTML contact form that POSTs to splitforms. Every visitor can submit — no email client required. 500 submissions total, free, and owner email notifications are included on every plan; delivery time and inbox placement depend on provider and recipient settings. See pricing.

Get a free splitforms key →

More free form tools

Form backend cost calculator

Enter monthly submissions and compare the cheapest listed plan across eight form backends.

Form conversion rate calculator

Enter form views and submissions to get your contact form conversion rate, plus leads needed and total value for a target.

Email deliverability checker

Enter a domain to check its SPF, DMARC and MX records and get a plain-English fix for each.

SPF record checker

Look up a domain's SPF record, see each mechanism explained and count DNS lookups against the 10-lookup limit.

DMARC record generator

Pick a policy and report address and copy a ready _dmarc TXT record.

DMARC checker

Look up a domain's DMARC record and see the policy and every tag explained.

DKIM record checker

Enter a domain and selector to check its DKIM key, with presets for common senders.

SPF record generator

Tick your email providers and copy one SPF TXT record with a lookup count.

Contact form spam checker

Paste form HTML to audit its honeypot, endpoint, CAPTCHA markers and spam resistance.

Honeypot field generator

Generate a hidden anti-spam input with your chosen name and hiding technique.

HTML form action & method generator

Enter an endpoint, choose GET or POST, add an access key and field names, then copy the HTML.

HTML form validation tester

Paste a form snippet to inspect required, type=email, minlength and pattern checks in a live preview.

Form action URL tester

Check a form action URL for reachability, CORS headers, POST acceptance and backend.

Email obfuscator

Encode your email so spam scrapers can't read it but people can still click it.

Alphanumeric regex tester

Test letters and numbers only, spaces, handles and Unicode; copy validation patterns.

Email regex tester

Test the WHATWG email regex and two other patterns against edge cases and your own list.

Phone number regex tester

Test numbers against E.164, US/Canada and digits-only patterns and copy code snippets.

ZIP code regex tester

Test US ZIP, ZIP+4, Canadian and UK postal codes and copy the regex or HTML pattern.

Number regex tester

Test digits, decimals, money and thousands separators and copy validation patterns.

Date regex tester

Test dd/mm/yyyy, mm/dd/yyyy and ISO dates with leap-year checks and copy JS or HTML patterns.

Name regex tester

Test name patterns for O'Brien, accents and Unicode letters; copy JS or HTML pattern snippets.

Username regex tester

Test username presets for GitHub, Instagram and X; check reserved names and copy JS or HTML patterns.

IP address regex tester

Test IPv4, IPv6, CIDR and private-range patterns and copy JS or HTML pattern snippets.

URL regex tester

Test website URLs against http(s) regex patterns and new URL(), and copy JS, HTML or PHP code.

HMAC-SHA256 generator

Generate and verify webhook signatures for common providers in your browser.

URL encoder and decoder

Encode text, build an x-www-form-urlencoded body or parse a query string.

Password regex generator

Pick strength rules, test passwords live and copy the regex or HTML pattern.

UTM builder

Build campaign URLs with UTM parameters, tag a CSV in bulk and check tagged links.

HTML to JSX converter

Paste HTML and get JSX or a working React/Next.js form component.

Image to Base64 converter

Convert images to Base64 data URLs in your browser and copy HTML and CSS snippets.

Base64 to image converter

Paste a Base64 data URI to preview and download the decoded image.

Base64 decode & encode

Decode Base64 to readable UTF-8 text or encode text to Base64, locally in your browser.

URL to Base64 converter

Fetch a direct image URL in your browser and get its Base64 data URL.

HTML form generator

Build a form visually and copy HTML, React JSX or Tailwind code.

AI form generator

Describe your form in plain English and copy working HTML.

Time regex tester

Test 24-hour, AM/PM and ISO time patterns and copy JavaScript, Python or HTML snippets.

Credit card regex tester

Test Visa, Mastercard 2-series, Amex and more card patterns with brand detection and a Luhn check.

Hex color regex tester

Test #RGB, #RRGGBB and alpha hex colors plus rgb() and hsl() values with live color swatches.

UUID regex tester

Test UUID v1-v8, nil/max and GUID formats with version and variant checks; copy JS or HTML patterns.

Terms explained in the form glossary: Form backend, Autoresponder

See all free tools