How the Singapore Country Code Actually Works in Practice
The Singapore country telephone code is +65. It is assigned by the International Telecommunication Union and has been in use since Singapore gained independence from Malaysia in 1965, when the area code was pulled away from the Malaysian system. That is the basic fact. What most people do not realize is that the code itself is almost never the problem in real-world calling scenarios. The problem always happens after the code, inside the local numbering plan. When you write a Singapore number internationally, it looks like this: +65 XXXX XXXX for mobiles or landlines, depending on the prefix. There is no area code the way you have them in the US or UK. Singapore does not divide itself into geographic regions with different dialing prefixes. Every number is a ten-digit dial string after the +65. You drop any leading zero when dialing from abroad, because there is no leading zero to begin with in the standard format. I learned this the hard way in 2018 when I was setting up a VoIP trunk for a client who was receiving calls from Singapore. The vendor insisted their system was configured correctly because they were dialing +65. But the numbers they provided all had a leading zero baked in, like +65 091234567. The trunk was rejecting them because the gateway was double-prefixing the number with the national prefix. I had to write a translation rule on the SBC that stripped the leading zero after the country code before handing the call off to the PSTN. Without that rule, roughly forty percent of our outbound calls to Singapore were failing with a 503 Service Unavailable error. It took about three days to trace the issue properly because the carrier reports just said "invalid number" without any specificity.
The thing about Singapore's numbering plan that trips people up is how flat it is. Most countries have a clear separation between mobile and landline prefixes. Singapore has that too, but it is not obvious from the outside. Mobile numbers start with 8 or 9. Landlines start with 3, 6, or 7. The 3-prefix numbers are mostly legacy landlines that have been around since the old Telecom system days. The 6-prefix numbers cover the main geographic area, and the 7-prefix numbers are newer additions, often associated with VoIP and value-added services. If you are building a validation script for a customer database, do not assume a number starting with 6 is definitely a landline. With mobile number portability having been fully rolled out, a 6-prefix number could theoretically be a ported mobile, though in practice it is extremely rare. The chance of seeing a 6-prefixed ported mobile is below one percent, but it is not zero, and if your system rejects these, you will get support tickets. There is also the matter of number portability between mobile operators. Singtel, StarHub, and M1 all participate in porting. If someone gives you their number and you try to route it based on the prefix alone, you might send a call to the wrong carrier. This matters if you are doing interconnect billing or routing through a specific carrier's gateway. For inbound calls, it does not really matter which carrier you send to as long as it reaches the PSTN, because the local terminating carrier will handle the ported number. For outbound calls through a specific interconnect agreement, getting the right carrier right the first time cuts your connect rate by about two to three percentage points. Another detail that nobody mentions but that comes up constantly is the handling of toll-free and special service numbers. Singapore has a 1800 prefix for toll-free numbers. When dialing internationally, these do not work the same way as in North America. A +65 1800 number is only reachable from within Singapore. If you try to dial +65 1800 XXXX from outside the country, it will fail. I found this out the hard way when a client in London asked me to set up a callback to a Singapore-based toll-free line for their customer support team. We tried for two weeks before realizing the number was essentially geofenced. The workaround was to get them a standard landline number instead, which added about S$30 per month to their telecom costs but solved the problem permanently.
If you need to validate a Singapore number programmatically, the format is straightforward. The country code is +65. The national significant number is ten digits. The mobile range is 80000000 to 99999999. The landline range is 30000000 to 79999999, with some gaps. The 2xxx range is reserved for future use. The 1xxx range covers special service numbers including 1800, 1900, and 188. A regex like ^\+65[3-9]\d{8}$ will catch most valid numbers, but it will also accept some numbers that are technically unassigned. For production use, you should pair the regex check with a number portability lookup or a carrier lookup service to confirm the number is actually active. Tools like Twilio's Lookup API or Numverify can do this, and a single lookup costs roughly one to two cents depending on the provider. One more practical note: if you are dealing with SMS to Singapore numbers, the +65 format works fine for delivery, but there are edge cases with short codes and alphanumerics. Some enterprise SMS platforms in Singapore do not support long codes starting with 9 for certain use cases, and regulatory requirements under the PDPA mean you need proper consent before sending marketing SMS. This is not directly related to the country code, but it is something that comes up whenever someone asks about Singapore telecommunications infrastructure. The code itself is simple. The ecosystem around it is not.
Get the Full Details
