This guide provides a detailed overview of Georgia's phone numbering system, designed for developers, telecom professionals, and system administrators. It covers number formats, validation, best practices, and advanced implementation considerations.
Quick Reference
Country: Georgia 🇬🇪
Country Code: +995
International Prefix: 00
National Prefix: 0
E.164 Format Length: 12 digits total (3-digit country code +995 + 9-digit national number)
National Number Length: 9 digits (uniform since June 4, 2011)
Georgia uses a closed numbering plan, adhering to the ITU-T E.164 standard. All numbers are 9 digits long, including the area/service code. This standardized format was implemented on June 4, 2011, simplifying previous variations and improving compatibility. The reform included updating area codes, standardizing mobile prefixes, and padding some geographic numbers to ensure a uniform 9-digit length.
Number Categories and Formats
Georgian phone numbers fall into several categories:
1. Geographic (Landline) Numbers
Format:0[3-5][1-9] XXXXXX (Note: Not all combinations within this range are valid area codes. See the area code table below for details.)
Example:032 234 5678 (Tbilisi)
Geographic numbers start with 0 followed by a two or three-digit area code. The area code's first digit (3 or 4) indicates the region: 3 for eastern Georgia and 4 for western Georgia.
Major City Area Codes:
Tbilisi: 032
Kutaisi: 043
Batumi: 042
Rustavi: 0341
A more comprehensive list of area codes can be found in the Additional Context.
2. Mobile Numbers
Format:5XX XXX XXX
Example:595 123 456
Mobile numbers always begin with 5 followed by eight more digits (total 9 digits). While the second and third digits historically indicated the operator (e.g., 595 for MagtiCom), number portability has been available since February 15, 2011, making prefix-based operator identification unreliable.
Valid Mobile Prefixes (5XX): Blocks allocated to operators include 511, 514, 551, 555, 557, 558, 559, 568, 570, 571, 574, 577, 578, 579, 591, 592, 593, 595, 596, 597, 598, and 599. Not all 500-599 ranges are currently assigned.
SMS and MMS Capability: Georgian mobile networks support standard SMS messaging with GSM-7 encoding (160 characters) and Unicode (70 characters). MMS messages are automatically converted to SMS with embedded URL links for compatibility across all devices.
3. Special Purpose Numbers
Toll-Free:800 XXX XXX (Used for customer service, government helplines)
Premium Rate:900 XXX XXX (Used for pay-per-call services)
Emergency/Special Services:1XX (e.g., 112 for general emergency)
Legacy emergency numbers (111 Fire, 113 Medical, 122 Patrol Police) were transitioned to the unified 112 system but may still function during transition periods.
4. Reserved Numbers
Prefixes:2XX, 6XX (Currently reserved for future use)
Implementation Guide
1. Number Validation
Regular expressions provide a robust way to validate Georgian phone numbers:
JavaScript
// Mobile - validates 5XX format with proper prefix rangesconst mobileRegex = /^5(11|14|51|55|57|58|59|68|70|71|74|77|78|79|91|92|93|95|96|97|98|99)\d{6}$/;
// Geographic (More precise validation requires a lookup table of valid area codes)const landlineRegex = /^0[34]\d{1,2}\d{6,7}$/; // Accommodates 2 or 3 digit area codes// Toll-Freeconst tollFreeRegex = /^800\d{6}$/;
// Premium Rateconst premiumRegex = /^900\d{6}$/;
// Emergencyconst emergencyRegex = /^1(12|25)$/;
Important Note: The landlineRegex provided here is a general match. For precise validation, you should cross-check the area code against a list of valid Georgian area codes from the ITU numbering plan.
Validation Approach Comparison:
Regex: Fast, no dependencies, good for format validation, but limited for operator identification
API Services: Real-time portability data, operator lookup, but requires network calls and rate limits
2. Number Formatting
Consistent formatting improves user experience. Here's an example function:
JavaScript
functionformatGeorgianNumber(number) {
const cleaned = number.replace(/\D/g, ''); // Remove non-digitsif (cleaned.startsWith('5')) {
return`+995 ${cleaned.slice(0, 3)}${cleaned.slice(3, 6)}${cleaned.slice(6)}`; // Mobile
} elseif (cleaned.startsWith('0')) {
// Landline (formatting depends on area code length - requires area code lookup)const areaCodeLength = getAreaCodeLength(cleaned); // Function to determine area code length (not shown here, but crucial)if (areaCodeLength === 2) {
return`+995 ${cleaned.slice(1, 3)}${cleaned.slice(3)}`;
} elseif (areaCodeLength === 3) {
return`+995 ${cleaned.slice(1, 4)}${cleaned.slice(4)}`;
} else {
returnnull; // Invalid area code length
}
} elseif (cleaned.startsWith('800') || cleaned.startsWith('900')) {
return`+995 ${cleaned.slice(0, 3)}${cleaned.slice(3, 6)}${cleaned.slice(6)}`; // Special numbers
}
returnnull; // Invalid format
}
// Helper function for area code length determinationfunctiongetAreaCodeLength(number) {
const areaCode2 = number.slice(1, 3);
const areaCode3 = number.slice(1, 4);
// 2-digit area codes (32 Tbilisi, 42 region)const twoDigit = ['32', '42'];
if (twoDigit.includes(areaCode2)) return2;
// 3-digit area codes start with 3 or 4if (number.startsWith('03') || number.startsWith('04')) {
return3;
}
returnnull; // Invalid
}
3. Operator Identification
While prefixes like 595 were initially tied to specific operators, number portability has made this unreliable. For accurate operator identification, use a real-time lookup service. The GNCC may offer such a service, or you can use third-party providers.
Current Mobile Operators (2024-2025):
MagtiCom - Leading operator, best coverage (prefixes: 591, 595, 598, 599, 551, 511, 596)
Silknet (formerly Geocell) - Second largest (prefixes: 577, 593, 555, 557, 558, 514)
Rate Limiting Considerations: Most portability APIs limit requests to 100-1000/minute. Implement caching and batch processing for high-volume scenarios.
Performance Optimization
Caching: Cache operator and portability data to reduce API calls. Implement appropriate TTLs (Time-To-Live) based on data volatility.
Recommended TTLs:
Operator lookups: 24-48 hours (portability data changes infrequently)
Validation results: 1-7 days
Area code lists: 30-90 days (rarely change)
Batch Processing: Validate or process numbers in batches to improve efficiency when dealing with large volumes.
Regulatory Compliance
Adhere to GNCC regulations and data protection requirements:
Store numbers in E.164.
Implement robust error handling.
Maintain audit logs for number modifications.
Stay updated on current number plans and regulations via the GNCC website.
Consent Requirements: Obtain explicit written consent before storing or processing phone numbers for marketing purposes. Document consent with timestamp, source, and specific opt-in campaign.
Data Retention: Follow Georgian telecommunications law for retention periods. Implement right-to-deletion workflows within 30 days of user request.
Security: Encrypt phone numbers at rest and in transit. Limit access to authorized personnel only.
Additional Context
The provided additional context offers valuable details on Georgian telecommunications, including:
Area Codes: A more extensive list of area codes is available in the Wikipedia excerpt. Use this for comprehensive landline validation.
Mobile Operators: Information on mobile operators and their historical prefixes is provided. Remember that number portability makes prefix-based identification unreliable.
Market Dynamics: The additional context includes information on market share, competition, and regulatory changes. This is useful for understanding the broader telecommunications landscape in Georgia.
Number Portability: Details on the implementation and implications of number portability are crucial for developers.
By understanding these details and following the best practices outlined in this guide, you can effectively integrate Georgian phone numbers into your applications and systems.
Frequently asked questions
The country code for Georgia is +995. This code is required when dialing Georgian numbers from outside the country and follows the ITU-T E.164 standard.
Georgian landline numbers follow the format 0[3-5][1-9] XXXXXX, where 0 is the national prefix and the following two or three digits represent the area code. Not all combinations are valid area codes, so consult the area code table for specifics. For example, Tbilisi is 032.
Georgian mobile numbers start with 5 followed by eight digits. A regex such as /^5\d{8}$/ can be used for validation. Due to number portability, the digits following 5 no longer reliably indicate the operator.
Georgia uses a closed numbering plan, adhering to the ITU-T E.164 standard, for simplified dialing and international compatibility. All numbers are 9 digits long, including the area/service code. This standardized format was implemented on June 4, 2011.
You should store phone numbers in E.164 format (+995XXXXXXXX) for consistency and database storage. This international standard ensures compatibility across different systems and simplifies number processing.
The area code for Tbilisi, Georgia is 032. This is a two-digit area code, and when dialing from within Georgia, it should be preceded by 0, following the format 0XX XXXXXX. From abroad you should use +99532, according to E.164 international standard.
Georgian toll-free numbers begin with 800 followed by six digits. They are commonly used for customer service and government helplines. For example, a toll-free number could be 800 123 456.
No, relying on prefixes to identify mobile operators in Georgia is unreliable due to number portability. While historically prefixes like 595 indicated specific operators, users can now switch operators while keeping their number. Use a real-time lookup service for accurate operator identification.
Implement custom error classes to handle specific validation issues, such as invalid area codes or portability lookup failures. This allows for more granular error reporting and targeted troubleshooting within your application. Include details like the number type and attempted value in the error message.
Store Georgian phone numbers in E.164 format (+995XXXXXXXX) without spaces or formatting for database storage and processing. Use local format (0XX XXXXXX) for display to domestic users and international format (+995 XX XXXXXXX) in international contexts.
Number portability in Georgia requires using a real-time lookup service for accurate operator identification. Do not rely on prefixes, as users can switch operators while retaining their number. Integrate a portability API for efficient operator lookups, and consider caching to reduce API calls.
This guide provides a detailed overview of Georgia's phone numbering system, designed for developers, telecom professionals, and system administrators. It covers number formats, validation, best practices, and advanced implementation considerations.
Quick Reference
Numbering Plan Overview
Georgia uses a closed numbering plan, adhering to the ITU-T E.164 standard. All numbers are 9 digits long, including the area/service code. This standardized format was implemented on June 4, 2011, simplifying previous variations and improving compatibility. The reform included updating area codes, standardizing mobile prefixes, and padding some geographic numbers to ensure a uniform 9-digit length.
Number Categories and Formats
Georgian phone numbers fall into several categories:
1. Geographic (Landline) Numbers
0[3-5][1-9] XXXXXX(Note: Not all combinations within this range are valid area codes. See the area code table below for details.)032 234 5678(Tbilisi)Geographic numbers start with
0followed by a two or three-digit area code. The area code's first digit (3 or 4) indicates the region: 3 for eastern Georgia and 4 for western Georgia.Major City Area Codes:
0320430420341A more comprehensive list of area codes can be found in the Additional Context.
2. Mobile Numbers
5XX XXX XXX595 123 456Mobile numbers always begin with
5followed by eight more digits (total 9 digits). While the second and third digits historically indicated the operator (e.g.,595for MagtiCom), number portability has been available since February 15, 2011, making prefix-based operator identification unreliable.Valid Mobile Prefixes (5XX): Blocks allocated to operators include
511,514,551,555,557,558,559,568,570,571,574,577,578,579,591,592,593,595,596,597,598, and599. Not all 500-599 ranges are currently assigned.SMS and MMS Capability: Georgian mobile networks support standard SMS messaging with GSM-7 encoding (160 characters) and Unicode (70 characters). MMS messages are automatically converted to SMS with embedded URL links for compatibility across all devices.
3. Special Purpose Numbers
800 XXX XXX(Used for customer service, government helplines)900 XXX XXX(Used for pay-per-call services)1XX(e.g.,112for general emergency)Emergency Numbers:
Legacy emergency numbers (111 Fire, 113 Medical, 122 Patrol Police) were transitioned to the unified 112 system but may still function during transition periods.
4. Reserved Numbers
2XX,6XX(Currently reserved for future use)Implementation Guide
1. Number Validation
Regular expressions provide a robust way to validate Georgian phone numbers:
// Mobile - validates 5XX format with proper prefix ranges const mobileRegex = /^5(11|14|51|55|57|58|59|68|70|71|74|77|78|79|91|92|93|95|96|97|98|99)\d{6}$/; // Geographic (More precise validation requires a lookup table of valid area codes) const landlineRegex = /^0[34]\d{1,2}\d{6,7}$/; // Accommodates 2 or 3 digit area codes // Toll-Free const tollFreeRegex = /^800\d{6}$/; // Premium Rate const premiumRegex = /^900\d{6}$/; // Emergency const emergencyRegex = /^1(12|25)$/;Important Note: The
landlineRegexprovided here is a general match. For precise validation, you should cross-check the area code against a list of valid Georgian area codes from the ITU numbering plan.Validation Approach Comparison:
2. Number Formatting
Consistent formatting improves user experience. Here's an example function:
function formatGeorgianNumber(number) { const cleaned = number.replace(/\D/g, ''); // Remove non-digits if (cleaned.startsWith('5')) { return `+995 ${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6)}`; // Mobile } else if (cleaned.startsWith('0')) { // Landline (formatting depends on area code length - requires area code lookup) const areaCodeLength = getAreaCodeLength(cleaned); // Function to determine area code length (not shown here, but crucial) if (areaCodeLength === 2) { return `+995 ${cleaned.slice(1, 3)} ${cleaned.slice(3)}`; } else if (areaCodeLength === 3) { return `+995 ${cleaned.slice(1, 4)} ${cleaned.slice(4)}`; } else { return null; // Invalid area code length } } else if (cleaned.startsWith('800') || cleaned.startsWith('900')) { return `+995 ${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6)}`; // Special numbers } return null; // Invalid format } // Helper function for area code length determination function getAreaCodeLength(number) { const areaCode2 = number.slice(1, 3); const areaCode3 = number.slice(1, 4); // 2-digit area codes (32 Tbilisi, 42 region) const twoDigit = ['32', '42']; if (twoDigit.includes(areaCode2)) return 2; // 3-digit area codes start with 3 or 4 if (number.startsWith('03') || number.startsWith('04')) { return 3; } return null; // Invalid }3. Operator Identification
While prefixes like
595were initially tied to specific operators, number portability has made this unreliable. For accurate operator identification, use a real-time lookup service. The GNCC may offer such a service, or you can use third-party providers.Current Mobile Operators (2024-2025):
Best Practices
+995XXXXXXXX) without spaces or formatting.0XX XXXXXX) for domestic users and international format (+995 XX XXXXXXX) for international contexts.Advanced Implementation
Error Handling
Implement custom error classes for specific issues:
class GeorgianNumberError extends Error { constructor(message, numberType, attemptedValue) { super(message); this.name = 'GeorgianNumberError'; this.numberType = numberType; // e.g., 'mobile', 'landline', 'portability' this.attemptedValue = attemptedValue; } } // Example usage function validateGeorgianMobile(number) { const cleaned = number.replace(/\D/g, ''); if (cleaned.length !== 9) { throw new GeorgianNumberError( `Invalid length: expected 9 digits, got ${cleaned.length}`, 'mobile', number ); } if (!cleaned.startsWith('5')) { throw new GeorgianNumberError( 'Mobile numbers must start with 5', 'mobile', number ); } const prefix = cleaned.slice(0, 3); const validPrefixes = ['511','514','551','555','557','558','559','568','570','571','574','577','578','579','591','592','593','595','596','597','598','599']; if (!validPrefixes.includes(prefix)) { throw new GeorgianNumberError( `Invalid mobile prefix: ${prefix}`, 'mobile', number ); } return true; }User-Facing Error Messages:
Number Portability Integration
Integrate with a portability API (if available) for real-time operator lookup:
async function getOperator(phoneNumber) { try { const response = await fetch(`https://example-portability-api.com/${phoneNumber}`, { headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' } }); if (!response.ok) { throw new GeorgianNumberError('Portability lookup failed', 'portability', phoneNumber); } const data = await response.json(); return { operator: data.operator_name, original_operator: data.original_operator, ported: data.is_ported, last_updated: data.timestamp }; } catch (error) { throw new GeorgianNumberError('Portability lookup failed', 'portability', phoneNumber); } }Rate Limiting Considerations: Most portability APIs limit requests to 100-1000/minute. Implement caching and batch processing for high-volume scenarios.
Performance Optimization
Regulatory Compliance
Adhere to GNCC regulations and data protection requirements:
Additional Context
The provided additional context offers valuable details on Georgian telecommunications, including:
By understanding these details and following the best practices outlined in this guide, you can effectively integrate Georgian phone numbers into your applications and systems.