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
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
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
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
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.
| Feature | U2L | Manual URI | html-online.com | Other tel/sms generators |
|---|---|---|---|---|
| Free unlimited generation | ||||
| Both tel: AND sms: | Manual | Limited | Mixed | |
| Live preview | Mixed | |||
| HTML button output (inline CSS) | Basic | Mixed | ||
| E.164 phone validation | Manual | Mixed | ||
| Browser-only (no signup) | Mixed | |||
| Companion QR generators | Mixed |
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
& 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 format | tel:+CountryCodeNumber (RFC 3966) |
| sms: URI format | sms:+CountryCodeNumber?body=... (RFC 5724) |
| Phone format | E.164 international (+CountryCodeNumber, 7-15 digits) |
| Body encoding (sms:) | Percent-encoded UTF-8 via encodeURIComponent |
| Output formats | Raw URI, HTML anchor, styled HTML button (inline CSS + MSO compat) |
| Email-client compatibility | Gmail, Outlook 2016+, Apple Mail, Thunderbird, Yahoo Mail |
| Mobile OS support | iOS, Android, mobile web, all modern smartphones |
| Privacy | All 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:?
Will the link work on desktop?
What phone number format should I use?
Why does iOS show 'Call this number?' before dialing?
Can I prefill an SMS body?
Can I prefill a tel: with a phone-tree extension?
How do I track clicks on tel: / sms: links?
Will sms: support multiple recipients?
Can I include emojis in the sms: body?
Will the link work on feature phones?
Should I use HTML buttons or plain anchors?
Can I use this for unsubscribe links?
Is the tool privacy-safe?
What's the difference vs the QR generators?
Will the prefilled SMS body lose newlines?
Can I use a business SMS API (Twilio, MessageBird) with these links?
What happens if the user has multiple SIMs (dual-SIM phone)?
Can I A/B test tel: vs sms: CTAs?
Related Free Tools
WhatsApp Link Generator
Create wa.me click-to-chat links with prefilled messages. Add to your bio, ads, or QR codes for instant WhatsApp customer chats.
OG / Metatag Checker
Inspect Open Graph and Twitter Card tags for any URL. Preview link cards on Facebook, X, LinkedIn, and Slack before publishing.
Redirect Checker
Trace the full redirect chain of any URL. See every hop, status code, response time, and final destination.
URL Encoder / Decoder
Encode or decode any URL. Handle special characters, query strings, and percent-encoding. Pure browser, instant.
Schema Markup Generator
Generate valid JSON-LD schema for FAQ, HowTo, Article, Product, and Organization. Boost rich results and AI Overview citations.
URL Expander
Reveal the full destination behind any shortened URL. Check where a short link leads before clicking it.
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