Free Tool

Free tel: and sms: Link Generator

Generate tel: and sms: links with prefilled numbers and messages. Tap-to-call and tap-to-text on any mobile site or email. Free dev utility, instant copy, no signup.

International format: + followed by country code and number.

Enter a phone number to generate the tel: link

No signup required
Free forever
GDPR compliant
Powered by U2L

Quick Answer

A tel: / sms: link generator builds RFC 3966 (tel:) and RFC 5724 (sms:) URIs that mobile browsers and email clients open in the user's dialer or messaging app. The U2L tel/sms generator builds both URI types with optional message prefill, outputs raw URI plus HTML anchor and styled button snippets, and validates phone numbers against the E.164 international format - all browser-only, no signup.

Quick Facts

  • tel: URIs (RFC 3966) open the dialer with the number pre-populated. iOS shows a 'Call this number?' confirmation; Android dials directly or shows a similar prompt.
  • sms: URIs (RFC 5724) open the messaging app with the number and (optional) prefilled body. Works with iMessage, Google Messages, Samsung Messages, and every default SMS handler.
  • Use international format (+1, +44, +91, etc.) for unambiguous cross-region routing. Domestic-only formats may misroute on phones outside the originating country.
  • Outputs three formats per URI: raw URI for code, HTML anchor (<a href>) for blog posts and websites, styled HTML button for email signatures and landing-page CTAs.
  • Browser-only, instant. No signup, no API key, no server round trip. Your phone numbers stay in your browser.
  • For QR codes embedding tel: or sms:, use the companion /tools/phone-qr-code-generator and /tools/sms-qr-code-generator.
  • For tracking which channel drove the most clicks, route via a u2l.ai short link first - native tel: and sms: URIs can't be tracked.

How to build a tel: or sms: link

Three steps. Pick type, fill, copy.

  1. 1

    Pick tel: or sms:

    tel: opens the dialer (one-tap call). sms: opens the messaging app (one-tap text). They're separate URI schemes; the tool builds both.

  2. 2

    Enter phone number (and message for sms:)

    International format: + followed by country code and number. For sms:, optionally prefill the message body. Both fields URL-encoded automatically.

  3. 3

    Copy the URI / HTML / button

    Three outputs: raw URI for code or scripts, HTML <a> tag for sites and blog posts, styled HTML button for emails and landing pages. Copy any of them with one click.

What is a tel: / sms: Link Generator?

tel: / sms: Link Generator is a tool that builds tel: and sms: URIs - the URL schemes mobile devices recognize as 'open the dialer' and 'open the messaging app' respectively. Marketers and developers use these to add tap-to-call and tap-to-text affordances on websites, in email signatures, and on landing pages. The user clicks the link on a phone; their default app opens with the number ready.

tel: and sms: are sibling URI schemes defined in RFC 3966 (2004) and RFC 5724 (2010) respectively. Both are supported on every modern mobile OS: iOS opens the Phone app or Messages app; Android opens the dialer or default SMS handler; Windows / macOS forward to the registered handler if any. The format is straightforward: tel:+15551234567 or sms:+15551234567?body=Hello.

Building these URIs by hand is error-prone for two reasons: international format requires the + prefix and country code (often missed for domestic-only intent), and sms body fields need URL encoding for spaces, line breaks, and special characters. The U2L generator handles both pitfalls - validates E.164 format, encodes the body automatically.

Beyond the raw URI, real-world use is mostly via HTML anchor tags or styled buttons embedded in websites and email. The generator outputs both, with inline CSS in the button form for email-client compatibility (Outlook desktop being the strictest constraint).

How does a tel: / sms: Link Generator work?

When you fill in the phone number, the generator strips formatting characters (spaces, hyphens, parentheses) and validates against the E.164 pattern (+CountryCodeNumber, 7-15 digits). For sms:, an optional body field is URL-encoded via encodeURIComponent so spaces become %20, newlines become %0A, and special characters (& = ?) are escaped to avoid breaking the URI's syntax.

The URI is assembled as tel:+15551234567 or sms:+15551234567?body=Hello%20world. tel: doesn't support a body parameter (RFC 3966 reserves no field for it); sms: does (RFC 5724 ?body=...).

Three outputs render in parallel. The raw URI is shown as-is. The HTML anchor wraps the URI in <a href="...">label</a>. The HTML button uses inline CSS (background, padding, border-radius, font-family) - inline-only because external stylesheets are stripped by major email clients.

All math runs in your browser. The phone number and message are never sent to U2L servers; the URI is built and rendered locally.

Use Cases

How marketers, businesses, and developers use tel: / sms: link generator.

Mobile site click-to-call CTA

Mobile-first websites with a 'Call us' button. tel: link wrapped in a styled button; one tap dials. Higher conversion than printing a number for users to type.

Email signature tap-to-text

Sales rep signature with a 'Text me' link to their business SMS line. Lower-friction than 'reply to this email' for fast questions.

Storefront 'after-hours' contact

Landing page with tel: link to your business line. Open hours: routes to switchboard. Off hours: routes to voicemail.

Restaurant 'order via SMS' flow

Restaurant site with a 'Text us your order' sms: link with body prefilled to 'Order: '. Customer scans, taps, types order, sends.

Real estate listing 'Text agent' button

Listing pages with sms: link to the agent's number, body 'Info on 123 Main St'. Buyers scan from the listing on their phone, tap, send.

Customer support 'tap to call'

Help center articles with tel: link to support phone for unresolved issues. Lower barrier than 'find our number on the contact page'.

Booking confirmation email

Confirmation email with tel: button to call the venue and sms: button to text. Both options for guests with different preferences.

Conference badge with text-to-connect

Speakers' badges with sms: QR linking to their cell. Attendees scan from badge, tap, type 'Hi from your talk on X', send. Faster than handing out cards.

Print ad tap-to-call CTA

Magazine ad with tel: link encoded as QR. Smartphones scan, dial. Reduces typo-driven misroutes from typing the number.

Mobile webform fallback

Webform with a 'prefer to text instead?' link below the submit button. sms: link with body 'My question: '. Useful for low-form-completion audiences.

tel: / sms: Link Generator vs Alternatives

Side-by-side feature and pricing comparison with the top alternatives.

FeatureU2LManual URIhtml-online.comOther tel/sms generators
Free unlimited generation
Both tel: AND sms:ManualLimitedMixed
Live previewMixed
HTML button output (inline CSS)BasicMixed
E.164 phone validationManualMixed
Browser-only (no signup)Mixed
Companion QR generatorsMixed

tel: / sms: Link Generator vs Manual URI building

If you know the format, you can write tel: and sms: URIs by hand: tel:+15551234567 and sms:+15551234567?body=Hi. Fast for simple cases. Free.

U2L's generator wins for non-trivial cases: international format validation, URL-encoded body with line breaks and special characters, HTML button output. The tool catches errors (missing +, invalid digits) and previews the result.

tel: / sms: Link Generator vs Email-signature-platform tel: support

Email signature platforms (WiseStamp, MySignature, Exclaimer) include tap-to-call links inline. Designed for non-technical users; integrate with full signature templates.

U2L is a focused, free, browser-only generator. For full signature design, signature platforms remain the right choice. For 'I just need a tel: link for this CTA button', U2L is faster.

Best Practices

Always use international format (+CountryCodeNumber)

+15551234567 works regardless of where the user is. Domestic formats (555-1234567) misroute on phones in other countries. International is unambiguous; use it always.

Use a business number, not personal

Once a tel: or sms: link is in production, the number can't be changed without code edits. Use a business line (Twilio, OpenPhone, RingCentral) you'll keep long-term.

Prefer sms: with prefilled body for context

sms:+1...?body=Order #1234 prefills the user's message with context. Reduces 'wait, what was this about?' friction in your inbox.

Test on iOS and Android

iOS shows a 'Call this number?' confirmation; Android dials directly (most apps). Test on both before deploying so you know what the experience looks like.

Use HTML buttons over plain anchors for visual CTAs

A styled button (background color, padding) reads as a CTA. A plain text link reads as informational. Pick by intent: button for primary actions, anchor for secondary.

Don't pre-fill long sms: bodies

Long bodies look spammy and feel scripted. Stick to a short context prefix: 'Order #', 'Question about: ', 'Booking #'. Let the user write the rest.

Wrap tel:/sms: in u2l.ai for tracking

Native tel: and sms: links can't be tracked. To know how many people clicked, route through a u2l.ai short link first - the short link tracks the click before redirecting to the URI.

Add accessibility attributes

Use aria-label='Call us at +15551234567' on tel: anchors. Helps screen-reader users understand the link's destination before clicking.

Common Mistakes to Avoid

Using domestic phone format on international audiences

(555) 123-4567 won't dispatch correctly from a phone outside the US. Always use +1 5551234567 for cross-region routing.

Forgetting URL encoding on sms: body

sms:+1...?body=Hi & welcome breaks at the &. The U2L generator URL-encodes automatically; manual builds need to escape & to %26.

Trying to prefill the dialer with a name

tel: only supports the number. Names go in vCard QR. Don't try to encode names in tel: URIs - they're silently ignored.

Using a personal cell that may change

tel: and sms: links printed in marketing materials or embedded in code stay in circulation for years. Use a business number you control.

Skipping the test on real devices

Before deploying a tel: button on a landing page, click it on iPhone, Android, and desktop. Catch issues with international format or app routing.

Trusting Outlook desktop to render HTML buttons

Outlook 2016+ (especially desktop) ignores many CSS properties. Use inline-only CSS, MSO conditional comments, and test in actual Outlook.

Encoding the body with HTML entities

&amp; in sms: body is wrong; it needs to be %26 (URL-encoded). HTML entities are for HTML; URL encoding is for URIs.

Technical Specifications

tel: URI formattel:+CountryCodeNumber (RFC 3966)
sms: URI formatsms:+CountryCodeNumber?body=... (RFC 5724)
Phone formatE.164 international (+CountryCodeNumber, 7-15 digits)
Body encoding (sms:)Percent-encoded UTF-8 via encodeURIComponent
Output formatsRaw URI, HTML anchor, styled HTML button (inline CSS + MSO compat)
Email-client compatibilityGmail, Outlook 2016+, Apple Mail, Thunderbird, Yahoo Mail
Mobile OS supportiOS, Android, mobile web, all modern smartphones
PrivacyAll processing in browser. No data sent to U2L servers.
Companion tools/tools/phone-qr-code-generator, /tools/sms-qr-code-generator, /tools/mailto-link-generator

Industry-Specific Use Cases

Sales and customer-facing teams

Email signatures, landing pages, proposal CTAs. tel: for high-intent calls; sms: for lower-friction text follow-ups.

Restaurants and hospitality

Order-by-text flows, reservation calls, in-room concierge. Lower barrier than form fills or phone trees.

Real estate

Listing pages with tel: + sms: buttons. Buyers contact agents from their phone with one tap.

Healthcare and dental

Online appointment pages with tap-to-call to the front desk. Critical for older demographics who prefer voice.

Customer support

Help-center articles with tel: link for escalation, sms: for follow-up questions.

B2B SaaS and developer tools

Pricing-page sales-call tap-to-call. Developer docs with 'text us if you're stuck' sms: link.

Frequently Asked Questions

What's the difference between tel: and sms:?

tel: opens the user's dialer (initiates a call). sms: opens the user's messaging app (initiates a text). They're separate URI schemes with different RFCs (3966 and 5724). Use tel: when you want a call; sms: when you want a text.

Will the link work on desktop?

Partially. Desktop browsers either ignore the link or hand it to the registered handler (FaceTime / iMessage on Mac, Phone Link on Windows). Mobile is the primary use case; desktop fallback varies by OS / browser.

What phone number format should I use?

International format (+CountryCodeNumber). +15551234567 for US, +447700900900 for UK, +33123456789 for France. The + prefix and country code are required for cross-region routing.

Why does iOS show 'Call this number?' before dialing?

iOS security feature. Prevents malicious sites or QR codes from auto-dialing premium-rate numbers. The user must confirm. Android shows similar prompts in modern versions.

Can I prefill an SMS body?

Yes via sms:+1...?body=Hello. The U2L generator URL-encodes the body automatically (spaces become %20, newlines %0A). Most modern messaging apps decode and prefill correctly.

Can I prefill a tel: with a phone-tree extension?

Limited. The tel: spec supports extensions via tel:+1...; ext=123 but dialer support varies. iOS handles it sometimes; Android support is patchy. For reliable extensions, use a number that doesn't require one.

How do I track clicks on tel: / sms: links?

Native tel: / sms: can't be tracked - the click hands off to the OS. To track, route through a u2l.ai short link (which tracks the click) and have the short link redirect to the tel: / sms: URI.

Will sms: support multiple recipients?

Technically yes via sms:+1...,+1...?body=... but support varies. iOS handles multi-recipient sms: URIs reliably; Android support is patchy. Test before relying on this.

Can I include emojis in the sms: body?

Yes. The tool URL-encodes as UTF-8, which preserves emojis. Recipients see the emoji rendered in their messaging app. Some older feature phones may show placeholders.

Will the link work on feature phones?

Modern feature phones with cameras and basic browsers usually support tel:; sms: support is mixed. Older feature phones may not recognize either. Don't rely on tel: / sms: for sub-2010-era phone audiences.

Should I use HTML buttons or plain anchors?

Buttons for primary CTAs (visually emphasized). Anchors for secondary / inline references. Same URI underneath; different visual weight. The U2L generator outputs both; pick the right one for context.

Can I use this for unsubscribe links?

tel: / sms: aren't standard unsubscribe formats. Email unsubscribe uses HTTP POST (RFC 8058) or mailto:. Don't use tel: / sms: for compliance unsubscribe.

Is the tool privacy-safe?

Yes. All processing happens in your browser. Phone numbers and message bodies are never sent to U2L's servers. The URI is built and rendered locally.

What's the difference vs the QR generators?

/tools/phone-qr-code-generator and /tools/sms-qr-code-generator encode tel: / sms: URIs as scannable QR codes for printed materials. This generator builds the URIs themselves for HTML / code use. Same URI underneath; different distribution channel.

Will the prefilled SMS body lose newlines?

Newlines are encoded as %0A. Most modern messaging apps decode this correctly (Apple Messages, Google Messages, Samsung Messages). A few older apps may render the literal %0A; test on your audience.

Can I use a business SMS API (Twilio, MessageBird) with these links?

Indirectly. The tel: / sms: link opens the user's native app, which sends via their carrier. To route inbound texts to a Twilio / MessageBird API, use a Twilio-hosted phone number as the destination - inbound texts hit Twilio, not your personal cell.

What happens if the user has multiple SIMs (dual-SIM phone)?

iOS / Android dual-SIM phones show the user a SIM picker before initiating the call / SMS. The link opens the dialer / messaging app; the user picks which SIM to use.

Can I A/B test tel: vs sms: CTAs?

Yes. Build both URIs, deploy as separate buttons or A/B variants. Track click-through via u2l.ai short links wrapping each. Compare CTR using /tools/conversion-rate-calculator.

Key Terms

tel: URI
URI scheme defined in RFC 3966. Opens the user's dialer with the number pre-populated. Format: tel:+15551234567.
sms: URI
URI scheme defined in RFC 5724. Opens the user's messaging app with the number and optional prefilled body. Format: sms:+15551234567?body=Hello.
E.164
International phone number format standard. +CountryCodeNumber, 7-15 digits total. Required in tel: / sms: URIs for unambiguous cross-region routing.
Percent encoding
URL-encoding scheme replacing special characters with %XX escapes (space = %20, ampersand = %26, newline = %0A). Required in sms: body to avoid breaking the URI's syntax.
Inline CSS
CSS written directly on HTML elements via the style attribute. Required for HTML buttons used in email because external <style> blocks are stripped by most email clients.
MSO conditional comments
<!--[if mso]>...<![endif]--> blocks targeting Outlook desktop's Word renderer. Used in HTML buttons for Outlook-specific fallback rendering.

Want trackable tap-to-call / tap-to-text buttons?

Sign up free for U2L Pro to wrap tel: / sms: URIs in u2l.ai short links and track every click. See which CTAs drive the most calls and texts.

Sign up free