Surprised I can't find a definitive answer about this anywhere online: I am setting up a translated HTML page in French with a different contact number that begins with "+33 (0)." Since I can't personally test it on this number -- a canonical question: can I get away with an anchor tag that begins <a href="tel:+33(0)..."
i.e. has a number contained in parentheses with the remaining numbers following and have the link work?

- 674
- 2
- 11
- 27
-
1Just try. The phone won`t actually call instantly but rather open your dial. – DigitalJedi Jun 10 '19 at 18:26
-
2It was actually a bit of a joke -- I couldn't actually call that number and, as I didn't find this answer anywhere online, I though having it definitely answered here was worth posting the question. Trying for a canonical answer is really worth a downvote? – jimiayler Jun 10 '19 at 18:37
-
4@HereticMonkey, respectfully I have to disagree - "trying it and seeing if it works" is not a good solution for most web development cases, unless you have the ability to try it and see if it works on every combination of devices and browsers. Sure, we might get a general idea of whether something will work in a lot of cases, but the OP is looking for a "definitive answer". Perhaps jimiayler could have specified "across all devices/browsers", but I think "definitive" is still fairly descriptive of what is being sought. Upvoting the question. – Luke Oct 07 '19 at 22:24
4 Answers
Good question. Finding a clear, authorative answer regarding href="tel:"
specifically is difficult.
RFC 3986 (Section 2.2) defines parenthesis as "reserved sub-delims". This means that they may have special meaning when used in certain parts of the URL. The RFC says:
URI producing applications should percent-encode data octets that correspond to characters in the reserved set unless these characters are specifically allowed by the URI scheme to represent data in that component. If a reserved character is found in a URI component and no delimiting role is known for that character, then it must be interpreted as representing the data octet corresponding to that character's encoding in US-ASCII.
(Emphasis mine)
Basically, you can use any character in the US-ASCII character set in a URL. But, in some situations, parentheses are reserved for specific uses, and in those cases, they should be percent-encoded. Otherwise they can be left as is.
So, yes, you can use parentheses in href="tel:"
links and they should work across all browsers. But as with any web standard in the real world, performance relies on each browser correctly implementing that standard.
However, regarding your example (<a href="tel:+33(0)...
), I would steer clear of the format you have given, that is:
[country code]([substituted leading 0 for domestic callers])[area code][phone number]
While I was unable to find a definitive guide to how browsers handle such cases, I think you will find, as @DigitalJedi has pointed out, that some (perhaps all?) browsers will strip the parentheses and leave the number contained therein, ultimately resulting in an incorrect number, e.g.
<a href="tel:+33(0)1234567890">+33 (0) 123 456 7890</a>
...which may result in a call to +3301234567890.
Will this still work? Maybe? We're getting into phone number routing territory now.
Some browsers/devices may be smart enought to figure out what is intended and adapt accordingly, but I would play it safe and instead simply use:
[country code][area code][phone number]
, e.g.
<a href="tel:+331234567890">+33 123 456 7890</a>
or
<a href="tel:+331234567890">(0) 123 456 7890</a>
There is no downside (that I know of) to having your local users dialing the international country code - it will result in the same thing as if they had omitted it and substituted the leading zero.
As a side note, according to the ITU's (International Telecommunications Union) E.123 document, section 7.2,
The ( ) should not be used in an international number.
This recommendation concerns how phone numbers are written, but is of some relevance in terms of the text that should be used when creating an href="tel:"
link, and is the reason for the two alternative examples I have provided above.
(Credit to @NiKiZe for this semi-related info).
Finally, here is some semi-related, useful information regarding browser treatment of telephone links: https://css-tricks.com/the-current-state-of-telephone-links/

- 4,825
- 2
- 30
- 37
-
2Excellent answer! This is exactly what I was looking for and am grateful for the thoroughness of your response. – jimiayler Oct 09 '19 at 01:14
-
1I am concerned that leaving out the parentheses will work. As far as I am used to it (for German phone numbers), the 0 in parentheses should be left out when using the international number: +331234567890 and if it is a domestic call then you need to dial 01234567890 – AnnetteC Oct 11 '21 at 06:30
-
1But if you dial the international number from a domestic line (i.e. you're in the same country), you'll still be connected. Hence, sticking with the international version is probably the best way to ensure a working tel: link. – Luke Oct 11 '21 at 06:41
-
1I think this is authorative: [ITU-T E.123](https://www.itu.int/rec/T-REC-E.123-200102-I/en) Section 7.2 Use of parentheses: "The ( ) should not be used in an international number." – NiKiZe Dec 16 '21 at 09:17
The ()
in the href
attribute should not be a problem: (href-wise)
http://example.com/test(1).html
HOWEVER, if I do a href="tel:+000 (1) 000 000"
, after clicking the link on phone, the dial on my phone will show +0001000000
This is tested and confirmed on a Android device
This means that the parentheses are removed, as well as the spaces.
But this could still vary because of different OS on the phone.
P.S.:
If you think the +
in your number is an issue... I did test this too, and the +
does not have any unexpected behavior.

- 1,066
- 8
- 14

- 1,577
- 1
- 10
- 29
-
2As noted in the title, the question is not about the use of plus signs, but the "Use of Parentheses." – jimiayler Jun 10 '19 at 18:39
-
@jimiayler where does it say that? I can't find anything related to parentheses in the question. "[]...begins with "+33 (0)." " leads me to think the `+` is what the question is about – DigitalJedi Jun 10 '19 at 18:46
-
1The title of this question is: "Use of Parentheses in HTML with “href=tel:”" I thought that made the question straightforward -- apparently not. I will add it to the body of the question itself. – jimiayler Jun 10 '19 at 18:50
-
1Sorry mb, but let me ask you this... have Parentheses ever been a problem to you when using href? http://example.com/test(1).html ;) – DigitalJedi Jun 10 '19 at 18:55
-
Well, good to know I can build URLs with parentheses, though I probably won't be doing that anytime soon. :) But, again, linked numbers have a different result and I was hoping for this question to answer that definitely, not be an occasion for my SO rep to take a hit (or, not exclusively). – jimiayler Jun 10 '19 at 19:00
-
I have updated my answer, aswell as tested a specific number to be 100% sure. Check it out – DigitalJedi Jun 10 '19 at 19:30
-
2So, again, I'm looking for something canonical -- the "just try"/"it worked on my phone today" is fine, but not the answer I'm seeking. These are non-numerical characters and it seems reasonable to want to clearly identify what the standard is for them. That's the only reason I posted this question and I really have to object again to this being downvoted for the wrong reasons. – jimiayler Jun 18 '19 at 19:15
-
1@jimiayler I agree with you. I think this is a great question and the answers you have been provided with ("I just tested this and it worked fine") don't cut it. – Luke Oct 07 '19 at 22:27
According to ITU-T E.123 Section 7.2 Use of parentheses
The ( ) should not be used in an international number.
So (0)
should not be included at all.

- 1,256
- 10
- 26
I read and remember the correct format should be: +33.1 23 45 67 89 But I can't find where from.

- 53
- 6