> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Free Tool: E.164 Phone Formatter & Validator

> A free, no-sign-up checker on the Developer Orbit tools hub that turns any raw phone input — dashes, parentheses, spaces, or a missing + — into canonical E.164, reports country/calling-code/line type, and rejects incomplete numbers exactly the way the dashboard and API validators do.

# Free Tool: E.164 Phone Formatter & Validator

The [E.164 phone formatter & validator](https://orbit.devotel.io/en/tools#e164-formatter)
is a free, browser-side checker on the [developer tools hub](https://orbit.devotel.io/en/tools).
Paste any phone string — dashes, parentheses, spaces, even a missing `+` — and it returns
the canonical E.164 form, the national and international display formats, the RFC-3966
`tel:` URI, and the country, calling code, and line type. No account required.

## What the tool resolves

For every input it resolves a single verdict plus, when the number is complete
and dialable, a small set of display projections:

* **Valid E.164 number** (green badge) or **Not a valid phone number** (amber badge).
* **E.164 canonical form** — `+14155552671` — the exact string a send surface
  carries.
* **National / International display** — `(415) 555-2671` / `+1 415 555 2671`.
* **`tel:` URI** — `tel:+14155552671`.
* **Country + calling code** — the numbering-plan country and its dial prefix.
* **Line type** — Mobile, Fixed line, Fixed line or mobile, Toll-free, Premium
  rate, Shared cost, VoIP, Personal number, Pager, Voicemail, when the range
  declares one.

The verdict leans on the same libphonenumber analysis the dashboard, the API,
and every other Orbit number validator use, so the tool can never disagree
with a real send: what it calls valid is valid on the wire.

## Why E.164 matters

E.164 is the [ITU standard](https://www.itu.int/rec/T-REC-E.164/en) for
international phone numbering: a leading `+`, the country calling code, then
the national number — at most fifteen digits, no spaces or separators. Every
send and receive path in Orbit — SMS, voice, WhatsApp ingest, webhook
payloads — carries numbers in canonical E.164 form on the wire.

Do not conflate this with the [carrier-line-type lookup checker](/guides/carrier-line-type-lookup-tool)
on the same hub: that page classifies line-type reachability from the number
structure alone. The formatter is a **structural canonicalisation check** — it
never queries a live network. For a billed dip that reaches out and confirms
the carrier, reachability, ported state, or SIM-swap history, use the
authenticated [Number Lookup](/concepts/number-lookup-model) API.

## Recommended workflow

Use the formatter as a pre-flight sanity check before you pick recipients —
especially before the [connect-first-channel](/guides/connect-first-channel)
picker that registers a list or flow:

1. Paste the recipient list (acquisitions, contact CSVs, inbound numbers)
   into a free-text staging column and run each row through the tool.
2. Deduplicate on the **canonical E.164** value it returns, not on your raw
   input — `(415) 555-2671` and `+1 415 555-2671` resolve to the same string.
3. Drop rows the tool rejects. What remains is what you hand to a list, a
   flow, or the batch-send validator.

## Input shapes the tool accepts

Formatting whitespace and punctuation matter only for humans — the validator
strips spaces, dashes, parentheses, and periods for the structural check.
A missing leading `+` is treated leniently and added back. A leading
`00` international-access prefix is rejected — convert it to `+` before
you paste.

| Raw input                         | Structural shape                | What the tool confirms                                                   |
| --------------------------------- | ------------------------------- | ------------------------------------------------------------------------ |
| `+1 415 555 2671`                 | valid                           | E.164, national form, international form, `tel:` URI, US, +1             |
| `14155552671` (no `+`)            | valid                           | same fields — the lenient `+` prefix is added                            |
| `(415) 555-2671`                  | valid                           | same fields                                                              |
| `+ 1 415 555-2671` (stray space)  | valid                           | same fields                                                              |
| `0044 20 7946 0958` (`00` prefix) | **rejected**                    | amber badge, no fields — `00` must become `+`                            |
| `+123` (truncated)                | structurally shaped, incomplete | amber badge "Looks like E.164, but it isn't a complete, dialable number" |
| *letters / junk*                  | not a number                    | amber badge "Not a valid phone number"                                   |

The amber "incomplete" badge is deliberately different from "not a phone
number": a `+<digits>` string matches the E.164 **shape** (`+` then 2–15
digits) but the numbering plan rejects it as not-dialable. That distinction
lets an operator tell a typo apart from a corrupted field.

## When to stop

An input that parses to nothing — blank, junk, or a numbering-plan miss —
returns **no classification at all**. The tool does not guess a verdict, and
it deliberately matches the [carrier-line-type checker's](/guides/carrier-line-type-lookup-tool)
behaviour there: an empty verdict is honest, a guessed one is not. If you
need a definitive answer from a live network rather than the numbering plan,
step over to the billed [Number Lookup](/concepts/number-lookup-model) API.

## See also

* [Carrier & Line-Type Lookup Checker](/guides/carrier-line-type-lookup-tool) — pair this structural check with the line-type verdict before you scrub a list.
* [Number Lookup model](/concepts/number-lookup-model) — the billed HLR / ported-carrier / SIM-swap / CNAM dip when structure is not enough.
* [SMS calculator](https://orbit.devotel.io/en/tools#sms-calculator) — the sibling free tool on the same hub for segment + cost estimation.
* [Import contacts](/guides/import-contacts) — the scrub-before-capture workflow the formatter feeds.
