October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
accessibility

How to Create a Click-to-Call Phone Link in HTML

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To make a phone number clickable, put a tel: URI in an HTML anchor’s href attribute:

<a href="tel:+1-212-555-0101">+1-212-555-0101</a>

The link is standard HTML. When a visitor activates it, the browser or operating system hands the number to an available phone or calling application. The markup cannot guarantee that every device can place a call.

The basic click-to-call link

An ordinary anchor becomes a phone link when its destination starts with tel:. The telephone URI scheme is defined by RFC 3966, and MDN lists telephone numbers as valid anchor destinations.

<a href="tel:+1-212-555-0101">+1-212-555-0101</a>

Replace the example number with the real number for your business, office, or support team. No JavaScript is required, and there is no special HTML element for phone calls.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
HTML and CSS: Design and Build Websites
  • HTML CSS Design and Build Web Sites
  • Comes with secure packaging
  • It can be a gift option

Use an international number in the URI

For a public page, put the number in global form in the href, beginning with a plus sign and country code. You can still show a locally familiar format to visitors. RFC 3966 gives this pattern:

<a href="tel:+1-201-555-0111">(201) 555-0111</a>

The URI and the visible label serve different purposes. The URI is machine-readable and internationally addressable; the label can match the conventions of the audience reading the page. Do not publish the RFC’s example numbers as your own contact details.

Make the link label clear and accessible

Use the number itself or a phrase that tells users what will happen. A visitor who encounters the link through keyboard navigation or a screen reader should not have to guess where it leads.

  • Good: +1 201 555 0111
  • Good: Call +1 201 555 0111
  • Less informative: Click here

MDN’s anchor guidance recommends link text that indicates the destination, while RFC 3966 recommends enclosing the telephone number in the link. If your design displays a heading such as “Sales,” include the number in the link text or an accessible name rather than relying only on surrounding context.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A complete HTML example

This standalone page includes a heading, visible number, and a second link with an action-oriented label. Replace both the displayed and URI values with your real contact number.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Contact us</title>
</head>
<body>
  <main>
    <h1>Contact our team</h1>
    <p>Phone: <a href="tel:+1-201-555-0111">+1 (201) 555-0111</a></p>
    <p><a href="tel:+1-201-555-0111">Call +1 201 555 0111</a></p>
  </main>
</body>
</html>

The two anchors point to the same telephone URI. Keeping the number in both the destination and the visible text also makes the intended action obvious when styles are unavailable.

Optional styling without changing the link

You can style a phone link as text, a button, or a card. Styling does not change how the telephone URI works.

.phone-link {
  display: inline-block;
  padding: .65rem 1rem;
  border-radius: .35rem;
  background: #0b63ce;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
}

.phone-link:focus-visible {
  outline: 3px solid #111;
  outline-offset: 3px;
}
<a class="phone-link" href="tel:+1-201-555-0111">
  Call +1 201 555 0111
</a>

Do not remove the text label merely because an icon is present. If an icon is decorative, hide it from assistive technology with the appropriate markup and keep the action in text.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What happens on different devices

A tel: link requests telephone handling; it does not itself dial a number. The device and its configured applications decide what happens next. MDN describes several possible outcomes:

Visitor’s setup Possible result
Mobile device with a phone application The phone application may open and offer or begin dialing.
Desktop with a calling application The operating system may offer an application such as Skype or FaceTime, depending on configuration.
No suitable handler The browser may show an error, offer another application, save the number, or pass it to another device.
iOS device without the Phone app Apple’s archived Phone Links guidance says a warning is displayed; this is historical platform guidance, not a promise for every current iOS release.

Test the link on the operating systems and browsers your audience actually uses. A successful navigation to a calling application is the expected result; a web page cannot force a call on a device that has no telephone handler.

User consent and safety

Activating a phone link must remain a deliberate user action. RFC 3966 states that web clients and similar tools MUST NOT use the “tel” URI to place telephone calls without the explicit consent of the user of that client. A normal click or tap that opens the device’s call confirmation flow respects that requirement. Do not trigger a tel: navigation automatically on page load, through an unsolicited timer, or from background code.

Testing checklist

  1. Open the page over the same protocol and domain used in production.
  2. Inspect the rendered anchor and confirm that href begins with tel:, not http: or a text-only number.
  3. Check that the URI contains the global number, including country code.
  4. Check the visible label at normal zoom and with CSS disabled.
  5. Activate it on a phone with a working cellular or calling app.
  6. Activate it on a desktop with the calling software your organization supports.
  7. Confirm that the user receives the operating system’s normal confirmation or application chooser rather than an unexpected automatic call.

Common problems and fixes

The number is not clickable

Inspect the HTML source or browser developer tools. The number must be inside an <a> element with an href beginning with tel:. A phone number written only as text has no activation behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The link opens the wrong application

This is controlled by the visitor’s operating-system and browser associations, not by alternative HTML syntax. Ask the user to choose or configure the preferred calling application, then test the link again.

The URI contains local punctuation or a local-only number

Keep local formatting in the visible label if desired, but use the global form in href as recommended by RFC 3966. For example, display (201) 555-0111 while linking to tel:+1-201-555-0111.

A desktop visitor sees no call prompt

A desktop may not have a telephone handler. The markup is still valid; provide an alternate contact method, such as an email link or a copyable number, for visitors whose systems cannot process telephone URIs.

Rank #4
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers

An iPhone displays a warning

Apple’s archived documentation records a warning on iOS devices without the Phone app. Treat that message as a platform safeguard, not as evidence that the HTML is malformed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The page tries to call without a click

Remove automatic navigation or scripts that assign a tel: URL without a user gesture. Explicit consent is required by RFC 3966.

When a generated site or CMS creates the link

Site builders often have a “Phone,” “Call,” or “Telephone” field. Regardless of the editor’s label, verify the final rendered HTML. The result should be equivalent to:

<a href="tel:+1-201-555-0111">+1 (201) 555-0111</a>

Do not paste tel:+1-201-555-0111 into the visible text and assume it will become a link automatically; the editor must output an anchor or provide an explicit link control.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If you need a clean image or PDF of the page that contains your phone link, ScreenshotNeo can capture the URL through one request. Its consent step accepts the cookie banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools to Claude, Cursor, and other MCP clients.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

See the ScreenshotNeo documentation for request options. The following cURL request captures a page as WebP:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/contact -o shot.webp

The same request in Python:

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://example.com/contact"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

And in Node.js:

const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://example.com/contact'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

ScreenshotNeo supports full-page captures with lazy images loaded, CSS-selector element shots, dark mode, 12 device presets and custom viewports, retina scale, PDF paper and page-range controls, custom CSS and JavaScript, pre-capture clicks, hidden selectors, selector or network-idle waits, request and resource blocking, custom headers, cookies, user agents, authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, an OpenAPI specification, and parameter names used by other screenshot APIs. Free accounts include 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

Performance, reliability, and maintenance

A telephone anchor is static markup, so it adds no network request and has negligible page overhead. Keep the destination number in one source of truth when possible: if a business number changes, update the URI and the visible label together. After publishing, re-run the device tests because calling-app associations can change independently of your page.

Frequently Asked Questions

Can I use a telephone link in an email or PDF?

Only if the destination environment preserves and supports the tel: URI. In an HTML page, use the anchor form shown above; for documents or email clients, verify that the exported file or client keeps the link and has a configured calling application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does a tel link reveal the visitor’s phone number to the website?

The anchor sends the visitor to the device or calling application. It does not provide your page with a completed-call result. Any additional analytics or call-tracking behavior would require separate software and should be documented independently.

Should I create separate links for mobile and desktop visitors?

Usually no. One standards-based tel: link lets each device choose its configured handler. Add an alternate contact method for visitors whose devices do not have a telephone application.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.