RFC 3966 / START HERE
Telephone-number URIs, before the details
tel: telephone-number Uniform Resource Identifiers (URIs)
RFC 3966 defines how a link or document can identify a telephone number. A global number starts with +; a local extension also names the phone system or other scope in which it is meaningful. The URI is an identifier, not a set of keypad instructions.
Why it exists
A phone application may need its own outside-line or international dialing rules. Those rules do not belong in the identifier. RFC 3966 separates number identity, local-number context and parameters; RFC 5341 later adds the parameter registry. Neither promises that a number is assigned or reachable.
A familiar example
A fictional contact card can show tel:+1-201-555-0123;ext=42. The chapters explain that number, its separate extension, how local contexts and comparison work, and why an application must obtain explicit consent before placing a call. Every example here is inert text; no dialer is opened.
Helpful background
You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.
What you’ll learn next
Begin with chapter one, or choose a topic.
- Separate a telephone identifier from a dial stringA tel URI identifies a telephone number. The application supplies the local dialing procedure, and reaching a real endpoint is a separate task.→
- Read global numbers and visual separatorsThe plus sign marks global form. Hyphens, dots and parentheses help people read the number; they do not change its comparison identity.→
- Give a local number its own contextA local extension needs a context that identifies its numbering scope. A context is not a prefix to concatenate or a host to contact.→
- Keep extensions, subaddresses and escapes separateA semicolon starts a parameter. Phone extensions and ISDN subaddresses are alternatives, and an escaped semicolon inside a value is not a new parameter.→
- Compare identifiers without guessing a routeCompare number form, number digits and parameters. Matching digits alone do not make two tel URIs equivalent.→
- Stop at unknown requirements and missing consentUnderstanding a URI, forwarding it and attempting a call are different operations. Unknown mandatory parameters and missing user consent stop use.→
This introduction explains RFC 3966 (2004). Read the original RFC ↗