Until I researched this topic, I never quite appreciated the reasons for all these different formats. Clearly, some variants like 000.000.0000 and 000/000-0000 are purely stylistic. But other variants communicate subtle nuances about local dialing procedures, at least according to some style guides:
| Format | Dialing procedure | Trunk prefix | Area code |
|---|---|---|---|
| 1 000 000-0000 1 (000) 000-0000 (1-000) 000-0000 |
7-digit dialing | Optional | Optional |
| 1 000-000-0000 (+1) 000-000-0000 |
10-digit dialing | Optional | Required |
| 1-000-000-0000 | 11-digit dialing | Required | Required |
I suppose these nuances can be the responsibility of a software library that includes a table of dialing procedures by NPA. But that raises the question of why we’re even bothering to format these tags for human consumption. Omitting any punctuation would be less error-prone and more compatible with the tel: URI format that smartphones actually use to place calls. Another consideration is that NPAs sometimes adopt ten-digit dialing; either we’d have to make a bulk edit, or every software application would need to update its table of dialing procedures.