intl-tel-input is an international telephone input widget that provides a country-aware phone number entry experience with automatic formatting, validation, and E.164 normalization. It combines a searchable country picker with a format-as-you-type engine and a validation rule engine that checks numbers against country-specific patterns, returning machine-readable error codes when a number is invalid.
The project ships as both a zero-dependency vanilla JavaScript library and as framework-specific components for React, Vue, Angular, and Svelte, all sharing the same core logic through a framework-agnostic adapter. It includes country-detection heuristics that combine IP geolocation and browser locale to preselect the user's country, and packs flag images, dial codes, and validation patterns for all countries into a single lightweight metadata bundle.
The widget supports country restriction to limit the dropdown to a custom list, digit input restriction to prevent invalid characters, and number type restriction for filtering valid number types. It provides E.164 number extraction for clean API-ready output, and offers full visual customization through CSS custom properties for colors, borders, and spacing. The interface is localized into 54 languages with right-to-left script adaptation.