Check and format a phone number
Paste a phone number in any common format. PhoneCheck tells you whether it is valid for its region and gives you the E.164, international, national and tel: forms, plus the line type when the numbering plan defines it.
What you get
- Valid / possible: whether the digits match an allocated range, or at least a possible length, for the region.
- Formats: E.164 (
+442079460018), international, national and RFC 3966 (tel:). - Region: ISO country code and calling code, or "non-geographic" for global services such as +800.
- Line type when the metadata defines it: mobile, fixed line, toll-free, premium rate, shared cost, VoIP, personal number, pager, UAN or voicemail. Some plans (US, Canada) don't separate mobile from fixed line, so you get
fixed_line_or_mobile. - The reason when it fails: too short, too long, no country code, or not an allocated range.
Use it from code
curl -X POST https://phonecheck/v1/parse \
-H "Content-Type: application/json" \
-d '{"number": "020 7946 0018", "defaultCountry": "GB"}'
POST keeps the number out of URLs. Light use works without an API key, with a per-IP rate limit. Pro keys can normalise up to 500 numbers per request with POST /v1/bulk. See the API docs.
Privacy
Numbers are processed in memory to build the response, then discarded. They are not stored or logged; PhoneCheck keeps request counts only. This checker sends the number in the request body, never in the URL. Privacy note.
For AI agents (MCP)
PhoneCheck is also a remote Model Context Protocol (MCP) server with the tools parse_phone_number and get_example_number (same offline engine, keys and limits as the API). Most MCP clients accept this config; some use a different format (for example, VS Code uses a servers key). Clients with a settings screen just need the URL https://phonecheck.mike-tusa.workers.dev/mcp.
{ "mcpServers": { "phonecheck": { "type": "http", "url": "https://phonecheck.mike-tusa.workers.dev/mcp" } } }
Machine-readable docs: llms.txt · OpenAPI 3.1 spec