navigator.contacts is a read-only property that returns a ContactsManager object (MDN) — the entry point to the Contact Picker API so users can share selected contact details with your site.
Read the notes below before you rely on this property. Prefer feature detection when support is limited.
Syntax
Use navigator.contacts. Start with this line.
JavaScript
navigator.contacts
Call
What it does
navigator.contacts
Primary signature.
Built into the browser. Read navigator.contacts on Navigator — no import required.
Library declarations
JavaScript
navigator.contacts
Parameters
Parameter
Description
Feature detect
Required. API may be missing
Secure context
Required. HTTPS or localhost
Return Value
Return Value
Description
*
ContactsManager (same object each time)
JavaScript Examples
Example 1 — Feature Detect
MDN’s recommended support check, plus secure context.
JavaScript
const supported =
"contacts" in navigator && "ContactsManager" in window;
const secure = window.isSecureContext;
console.log("contacts supported:", supported);
console.log("secure context:", secure);
if (supported && secure) {
console.log("ready for Contact Picker");
} else {
console.log("use a manual contact form");
}
/* after a click + user pick: */
picked: 2
/* or: cancelled or failed: … */
How It Works
User gesture. Call from a click handler, not on load.
Pass props + options. Ask for fields; set multiple if needed.
Await results. Resolves to the contacts the user shared.
Catch cancel. Dismissing the picker rejects the Promise.
Compatibility
Browser Support
navigator.contacts is marked Experimental on MDN with limited availability — not Baseline. Support has been strongest on Chrome for Android.
✓ Experimental · Limited
Navigator.contacts
Returns ContactsManager for the Contact Picker API (getProperties + select). Secure context required. Feature-detect always.
LimitedNot Baseline
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
contactsCheck MDN
Bottom line: Treat Contact Picker as progressive enhancement. Always provide a manual contact form when the API is missing or cancelled.
Frequently Asked Questions
It is a read-only Navigator property that returns a ContactsManager object — the entry point to the Contact Picker API so users can select contacts and share limited details with your site.
Yes. MDN marks it Experimental and not Baseline. Support is limited (historically strongest on Chrome for Android). Always feature-detect and provide a manual form fallback.
Yes. It is available only in secure contexts (HTTPS or localhost) in supporting browsers.
Call await navigator.contacts.select(properties, options) from a user gesture such as a button click. Pass property names like "name", "email", and "tel". Use { multiple: true } to allow several contacts.
await navigator.contacts.getProperties() resolves to an array of property names the system can return. Use it so you only ask select() for supported fields.
No. The property is read-only. Two successive reads return the same ContactsManager object. You call methods on that object.