phone number standards
phone number standards
Martinique Phone Numbers: +596 Country Code Format & Validation Guide
Complete guide to Martinique phone number format, validation, and integration. Learn +596 country code dialing, landline vs mobile formats, ARCEP regulations, and developer implementation for calling Martinique.
Martinique Phone Numbers: Format, Area Code & Validation Guide
Introduction
Handle Martinique phone numbers correctly in your application with this comprehensive developer guide. Whether you're building a CRM, contact management system, or telecommunications app, understanding Martinique's unique phone number format is essential. This guide covers the +596 country code, phone number formatting, validation techniques, regulatory requirements, and implementation best practices for calling Martinique from any country.
Common integration challenges when working with Martinique phone numbers include handling the distinctive double "596" pattern in landline numbers (which confuses many validation libraries), implementing mobile number portability lookups, and ensuring emergency number routing meets French telecommunications regulations. This guide addresses these technical challenges with practical code examples and verified regulatory information from ARCEP.
Quick Reference: How to Call Martinique
- Country: Martinique (French Overseas Territory)
- Country Code: +596
- International Prefix: 00 (or 011 from US/Canada)
- National Prefix: 0
- Total Digits: 9 (after country code); 10 (with leading 0 for national dialing)
- Landline Format: +596 596 XX XX XX (note the double 596)
- Mobile Format: +596 696 XX XX XX or +596 697 XX XX XX
- Calling from USA/Canada: 011 + 596 + local number (9 digits)
- Calling from Europe: 00 + 596 + local number (9 digits)
Martinique Phone System: Background and Regulations
Martinique, as a French overseas territory in the Caribbean, adheres to the French numbering plan governed by ARCEP (Autorité de Régulation des Communications Électroniques, des Postes et de la Distribution de la Presse). This alignment ensures consistency with European telecommunications standards and provides a robust framework for number management. ARCEP oversees telecommunications regulation across all French overseas territories, ensuring fair competition, consumer protection, and efficient spectrum allocation.
Compliance Requirements
Businesses using Martinique numbers must comply with French telecommunications law under the Code des postes et des communications électroniques (CPCE). Key compliance requirements include:
- Authorization: Telecommunications services in France operate under a general authorization regime. No prior approval from ARCEP is required to provide services, but operators must notify ARCEP and comply with all regulatory obligations.
- Data Protection: Comply fully with GDPR, including strict rules on subscriber data processing, storage, and portability.
- Emergency Services: Route all emergency calls (15, 17, 18, 112, etc.) with accurate location data where technically feasible.
- Number Portability: Support MNP (Mobile Number Portability) and complete porting requests within the 7-10 day regulatory window.
- Consumer Protection: Provide transparent pricing, clear service terms, and dispute resolution mechanisms under ARCEP regulations.
The International Telecommunication Union (ITU) assigns country code +596 as Martinique's unique identifier in the global numbering system. For landline numbers, "596" appears twice – once as the country code and again as the first three digits of the local number (e.g., +596 596 30 1234).
Historical Context: The Double "596"
The double "596" pattern in Martinique landline numbers results from the French numbering plan reform of 1996. Prior to 1996, calls from metropolitan France to overseas departments required international dialing (19 + country code). The reform introduced direct dialing using "0" as a trunk code, with the country code repurposed as a geographic area code within the unified French numbering system.
For Martinique landlines, the ITU-assigned country code 596 was retained for international identification, while "596" was also designated as the internal area code prefix for fixed-line services. This created the distinctive format: +596 (country) + 596 (area/service code) + subscriber number. Mobile numbers avoided the duplication by using newly introduced prefixes (696, 697) that begin with "6" to align with the metropolitan French mobile numbering scheme (06, 07). This system was implemented in 2001 when all French overseas departments transitioned to the standardized ten-digit format.
Martinique Phone Number Structure and Format
Understanding Martinique's Unique Numbering System
Martinique uses a 10-digit numbering system for both landlines and mobile phones. This standardized approach simplifies number management and ensures consistency across the island. The structure follows a logical pattern:
[Country Code] + [Area/Service Code] + [Subscriber Number]
+596 + [3-7]/696 + XXXXXXX
Each component serves a specific purpose:
- Country Code (+596): Identifies Martinique in international calls.
- Area/Service Code: Distinguishes between landlines (3-7) and mobiles (696). It can also indicate specific service providers or geographic areas.
- Subscriber Number: The unique identifier for the individual subscriber.
Geographic Distribution: Unlike metropolitan France, Martinique does not use distinct area codes for different cities or regions. All landline prefixes (596 3x through 596 7x) serve the entire island, with assignments based on service provider and capacity rather than geography. Fort-de-France, the capital, shares the same prefix ranges as other municipalities.
Categorizing Number Types
The following table provides a detailed breakdown of number categories, formats, and usage contexts:
| Type | Format | Example | Usage Context |
|---|---|---|---|
| Landline | 596 [3-7]XXXXXXX | +596 596 30 1234 | Fixed-line services, primarily for residential and business use. |
| Mobile | 596 696 [0-46-9]XXXXXX | +596 696 20 5678 | Mobile services across all major carriers (696, 697 prefixes). |
| Toll-Free | 0800[0-5]XXXXXX | +596 0800 05 6789 | Free-to-call services, commonly used for customer support. |
| Shared-Cost | 081[0-9]XXXXXX | +596 0810 12 3456 | Caller pays local rate; service provider receives share of revenue. |
| Premium-Rate | 089[0-9]XXXXXX | +596 0890 12 3456 | High-cost services; caller pays premium rate (€0.80-€3/min + telecom fee). |
| VoIP/Non-Geographic | 09[5-9]XXXXXXX | +596 0975 12 3456 | Internet-based voice services, non-location-based. |
Note: Special service numbers (08xx and 09xx) follow the French special numbering scheme. Toll-free numbers (0800-0805) are free to call. Shared-cost numbers (081x, some 082x ranges) charge local rates. Premium-rate numbers (089x) incur significant costs. Always verify pricing with your carrier before calling special service numbers.
Developer Implementation: Validating Martinique Phone Numbers
Phone Number Validation with Regular Expressions
Implement reliable validation to ensure data integrity. Use these regular expressions in your applications:
// Landline validation
const landlineRegex = /^596[3-7]\d{7}$/;
// Mobile validation – accounts for variations in subscriber number length
const mobileRegex = /^596696[0-46-9]\d{6}$|^5966965[0-6]\d{5}$|^596697\d{7}$/;
// Toll-Free validation
const tollFreeRegex = /^0?800[0-5]\d{6}$/;
// Shared-cost validation
const sharedCostRegex = /^0?81\d{8}$/;
// Premium-rate validation
const premiumRegex = /^0?89\d{8}$/;
// VoIP/Non-geographic validation
const voipRegex = /^0?9[5-9]\d{8}$/;
// Emergency numbers (should never be blocked)
const emergencyRegex = /^(15|17|18|112|196|119)$/;
// Usage example with enhanced validation
function validateMartiniqueNumber(number, type) {
const cleanNumber = number.replace(/\D/g, ''); // Remove non-digit characters
// Check for emergency numbers first (highest priority)
if (emergencyRegex.test(cleanNumber)) {
return { valid: true, type: 'emergency', emergency: true };
}
switch(type) {
case 'landline':
return { valid: landlineRegex.test(cleanNumber), type: 'landline' };
case 'mobile':
return { valid: mobileRegex.test(cleanNumber), type: 'mobile' };
case 'tollfree':
return { valid: tollFreeRegex.test(cleanNumber), type: 'tollfree', cost: 'free' };
case 'sharedcost':
return { valid: sharedCostRegex.test(cleanNumber), type: 'sharedcost', cost: 'standard' };
case 'premium':
return { valid: premiumRegex.test(cleanNumber), type: 'premium', cost: 'high' };
case 'voip':
return { valid: voipRegex.test(cleanNumber), type: 'voip' };
default:
// Auto-detect type
if (landlineRegex.test(cleanNumber)) return { valid: true, type: 'landline' };
if (mobileRegex.test(cleanNumber)) return { valid: true, type: 'mobile' };
if (tollFreeRegex.test(cleanNumber)) return { valid: true, type: 'tollfree', cost: 'free' };
if (sharedCostRegex.test(cleanNumber)) return { valid: true, type: 'sharedcost', cost: 'standard' };
if (premiumRegex.test(cleanNumber)) return { valid: true, type: 'premium', cost: 'high' };
if (voipRegex.test(cleanNumber)) return { valid: true, type: 'voip' };
return { valid: false, type: 'unknown' };
}
}
// Example test cases
console.log(validateMartiniqueNumber("59631234567", "landline")); // {valid: true, type: 'landline'}
console.log(validateMartiniqueNumber("+5966962123456", "mobile")); // {valid: true, type: 'mobile'}
console.log(validateMartiniqueNumber("0800512345", "tollfree")); // {valid: true, type: 'tollfree', cost: 'free'}
console.log(validateMartiniqueNumber("15")); // {valid: true, type: 'emergency', emergency: true}
console.log(validateMartiniqueNumber("5962123456", "landline")); // {valid: false, type: 'landline'}
console.log(validateMartiniqueNumber("6962123456", "mobile")); // {valid: false, type: 'mobile'}Validation Edge Cases:
- Leading zeros: National format includes a leading "0" (e.g., 0596 xx xx xx). Always strip or handle leading zeros before validation.
- International format variations: Accept both +596 and 00596 prefixes when parsing international format.
- Mobile 697 prefix: Some operators use 697 in addition to 696; ensure your regex captures both.
- Emergency numbers: Never validate emergency numbers using standard patterns. Use a separate whitelist and ensure they always pass validation and routing.
- Special service numbers: The leading "0" is mandatory for special service numbers (08xx, 09xx) in national format but omitted in E.164 international format.
Number Formatting and Display
Present numbers in a user-friendly format for optimal user experience. Use this function:
function formatMartiniqueNumber(number, format = 'international') {
const cleaned = number.replace(/\D/g, ''); // Sanitize input
// Validate input length
if (cleaned.length < 9) {
throw new Error('Number too short for Martinique format');
}
// Handle emergency numbers
if (/^(15|17|18|112|196|119)$/.test(cleaned)) {
return cleaned; // Emergency numbers are never reformatted
}
switch(format) {
case 'international':
// +596 XXX XX XX XX for most numbers
if (cleaned.startsWith('596')) {
return `+596 ${cleaned.slice(3, 6)} ${cleaned.slice(6, 8)} ${cleaned.slice(8, 10)} ${cleaned.slice(10)}`;
} else if (cleaned.startsWith('0')) {
// Handle special service numbers
return `+596 ${cleaned.slice(1, 5)} ${cleaned.slice(5, 7)} ${cleaned.slice(7, 9)} ${cleaned.slice(9)}`;
}
return `+596 ${cleaned.slice(0, 3)} ${cleaned.slice(3, 5)} ${cleaned.slice(5, 7)} ${cleaned.slice(7)}`;
case 'national':
// 0XXX XX XX XX or 0596 XX XX XX
if (cleaned.startsWith('596')) {
return `0${cleaned.slice(3, 6)} ${cleaned.slice(6, 8)} ${cleaned.slice(8, 10)} ${cleaned.slice(10)}`;
}
return `0${cleaned.slice(0, 3)} ${cleaned.slice(3, 5)} ${cleaned.slice(5, 7)} ${cleaned.slice(7)}`;
case 'e164': // E.164 format (commonly used for APIs)
if (cleaned.startsWith('596')) {
return `+${cleaned}`;
}
return `+596${cleaned}`;
case 'rfc3966': // RFC 3966 tel: URI format
if (cleaned.startsWith('596')) {
return `tel:+${cleaned}`;
}
return `tel:+596${cleaned}`;
default:
return cleaned; // Return sanitized number if format is unknown
}
}
// Example usage
console.log(formatMartiniqueNumber("59659631234567", "international")); // +596 596 31 23 45 67
console.log(formatMartiniqueNumber("59631234567", "national")); // 0596 31 23 45 67
console.log(formatMartiniqueNumber("5966962123456", "e164")); // +5966962123456
console.log(formatMartiniqueNumber("0800123456", "international")); // +596 0800 12 34 56
console.log(formatMartiniqueNumber("15")); // 15Locale-Specific Display: French locale conventions use spaces to group digits (e.g., +596 596 31 23 45). Some Caribbean contexts use hyphens (e.g., +596-596-31-23-45). Always respect the user's locale settings when displaying numbers in UI contexts. For database storage and API transmission, use E.164 format exclusively.
Handling Number Portability
Number portability (MNP) allows users to switch carriers while keeping their number. This adds complexity to number management. Address it with these strategies:
- Local Caching: Cache operator prefixes locally to improve performance.
- Regular Updates: Implement regular updates to your prefix database to reflect porting changes.
- Asynchronous Validation: Use asynchronous validation for real-time operator checking, especially during critical operations like billing or routing.
- Graceful Exception Handling: Implement robust error handling to manage ported number exceptions and prevent disruptions to your service.
Martinique's MNP system launched on April 1, 2006, as part of a coordinated rollout across French overseas départements (Guadeloupe, Martinique, and French Guyana). The porting process takes 7-10 days unless the subscriber requests a later date, following ARCEP regulations aligned with European best practices.
Implementing MNP Lookups
Mobile number portability requires real-time or near-real-time lookups to determine the current serving operator. Use this practical implementation approach:
// MNP Lookup Implementation Example
class MNPLookupService {
constructor(apiKey, cacheTTL = 86400000) { // 24-hour cache default
this.apiKey = apiKey;
this.cache = new Map();
this.cacheTTL = cacheTTL;
}
async lookupOperator(msisdn) {
const cleanNumber = msisdn.replace(/\D/g, '');
// Check cache first
const cached = this.cache.get(cleanNumber);
if (cached && (Date.now() - cached.timestamp < this.cacheTTL)) {
return cached.data;
}
// Perform MNP lookup via API
try {
const response = await fetch(`https://api.mnp-provider.example/lookup`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ msisdn: `+${cleanNumber}` })
});
if (!response.ok) {
throw new Error(`MNP lookup failed: ${response.status}`);
}
const data = await response.json();
// Cache the result
this.cache.set(cleanNumber, {
data: data,
timestamp: Date.now()
});
return data;
} catch (error) {
console.error('MNP lookup error:', error);
// Fallback to prefix-based estimation
return this.estimateOperatorFromPrefix(cleanNumber);
}
}
estimateOperatorFromPrefix(number) {
// Fallback logic based on known prefix ranges
if (number.startsWith('5966962') || number.startsWith('5966963')) {
return { operator: 'Orange Caraïbes', ported: false, confidence: 'low' };
} else if (number.startsWith('5966967') || number.startsWith('5966969')) {
return { operator: 'Bouygues Telecom', ported: false, confidence: 'low' };
}
return { operator: 'Unknown', ported: false, confidence: 'none' };
}
}
// Usage
const mnpService = new MNPLookupService('your-api-key-here');
const operatorInfo = await mnpService.lookupOperator('+5966962012345');
console.log(`Operator: ${operatorInfo.operator}, Ported: ${operatorInfo.ported}`);MNP Lookup APIs: Several providers offer MNP lookup services for French numbers:
- HLR Lookups – Global MNP and HLR lookup API
- BSG World MNP API – Realtime carrier identification
- Twilio Lookup API – Includes carrier information and portability status
Database Structure Recommendation:
CREATE TABLE mnp_cache (
msisdn VARCHAR(15) PRIMARY KEY,
country_code VARCHAR(3),
original_operator VARCHAR(100),
current_operator VARCHAR(100),
ported BOOLEAN,
lookup_timestamp TIMESTAMP,
cache_expiry TIMESTAMP,
INDEX idx_expiry (cache_expiry)
);Error Handling
Implement effective error handling for a robust application. Use this example:
function handleNumberError(number, error, locale = 'en') {
const errorMessages = {
en: {
INVALID_FORMAT: 'Number format invalid for Martinique',
UNSUPPORTED_PREFIX: 'Prefix not recognized',
WRONG_LENGTH: 'Invalid number length',
PORTING_ERROR: 'Error checking number portability',
EMERGENCY_BLOCKED: 'Emergency numbers cannot be blocked',
PREMIUM_WARNING: 'Premium-rate number - high cost applies',
UNKNOWN_ERROR: 'Number validation failed'
},
fr: {
INVALID_FORMAT: 'Format de numéro invalide pour la Martinique',
UNSUPPORTED_PREFIX: 'Préfixe non reconnu',
WRONG_LENGTH: 'Longueur de numéro invalide',
PORTING_ERROR: 'Erreur lors de la vérification de la portabilité',
EMERGENCY_BLOCKED: 'Les numéros d\'urgence ne peuvent pas être bloqués',
PREMIUM_WARNING: 'Numéro surtaxé - coût élevé',
UNKNOWN_ERROR: 'Échec de la validation du numéro'
}
};
// Log error for monitoring and debugging
console.error(`Number validation failed for ${number}: ${error}`, {
timestamp: new Date().toISOString(),
locale: locale
});
// Return a user-friendly localized message
const messages = errorMessages[locale] || errorMessages.en;
return messages[error] || messages.UNKNOWN_ERROR;
}Best Practices:
- Always validate on both client and server side
- Log validation failures for security monitoring (potential scanning attempts)
- Implement rate limiting on validation endpoints to prevent abuse
- Provide clear, localized error messages to users
- Never expose internal validation logic in error messages
Martinique Emergency Numbers and Essential Services
Handle emergency numbers correctly when implementing telecommunications features in your application. Martinique uses French emergency numbers that must be accessible 24/7:
| Service | Number | Description |
|---|---|---|
| Medical Emergency (SAMU) | 15 | Emergency medical assistance service, direct access per département. |
| Police | 17 | Law enforcement for road accidents, public order, and criminal offenses. |
| Fire Brigade | 18 | Fire emergencies, rescue services, and medical emergencies (traffic/domestic accidents). |
| European Emergency | 112 | Universal EU emergency number, English-speaking operators redirect as needed. |
| Maritime Rescue | 196 | Coastal and maritime emergency assistance (connects to CROSS centers). |
| Child Protection | 119 | Free 24/7 service for reporting children in danger or at risk. |
Technical Requirements for Emergency Routing:
Applications providing voice services in Martinique must comply with emergency service routing obligations:
- Mandatory Routing: Route emergency numbers (15, 17, 18, 112, 196, 119) without authentication or payment requirements on all interconnected VoIP, mobile, and landline services.
- Location Data: Transmit caller location data to emergency services where technically feasible. For mobile services, include cell tower location, GPS coordinates (if available), and registered service address.
- No Blocking: Never block emergency numbers with spam filters, call screening, or parental controls.
- Network Priority: Route emergency calls with priority during network congestion.
- Fallback Routing: Implement fallback to 112 (EU universal emergency number) if primary emergency routing fails. 112 has multiple routing paths.
- Testing Restrictions: Never place test calls to emergency numbers. Use official test numbers provided by operators for integration testing.
Legal Obligations: Under French law and FCC 911 regulations (for VoIP providers), failure to properly route emergency calls results in significant penalties, service suspension, and civil liability. Ensure compliance before launching any telecommunications service.
Warning: Always prioritize routing for emergency numbers and ensure 100% uptime for these critical services. All emergency numbers are free to call 24/7.
Martinique Mobile Carriers and Telecom Operators
Understanding the telecommunications landscape in Martinique provides valuable context for number portability and carrier routing. Here are the major mobile carriers and telecom operators:
| Operator | Market Position | Number Ranges (Examples) | Coverage Type |
|---|---|---|---|
| Orange Caraïbes | Market Leader | 696 2XXXXX, 696 3XXXXX | 4G/5G, Fixed |
| France Telecom | Legacy Provider | 596 30XXXX, 596 37XXXX | Fixed Line |
| Bouygues Telecom | Growing Presence | 696 7XXXXX, 696 9XXXXX | 4G, Fixed |
| Outremer Telecom | Regional Specialist | 596 96XXXX, 596 97XXXX | 4G, Enterprise |
| Mediaserv | Niche Provider | 596 37XXXX | Fixed Broadband |
Frequency licenses for the 900 MHz band in Martinique expired on 30 April 2025, with a 35 MHz duplex pair becoming available on 1 May 2025. ARCEP manages the reassignment process for the 700 MHz, 900 MHz, and 3.4-3.8 GHz bands to meet increasing demand for high-quality superfast mobile services.
In 2024, Digicel AFG, Orange, and Outremer Telecom qualified for frequency assignment procedures in the 1800 MHz and 2.1 GHz bands. These three operators were authorized to participate in the principal auction for frequencies in the 1800 MHz band available as of 1 May 2025. These developments will reshape the telecommunications landscape in Martinique over the coming years.
Conclusion
You now have a comprehensive understanding of Martinique's +596 country code, phone number formats, and validation techniques. Whether you're implementing international calling features, validating user input, or building telecommunications applications, the guidelines and code examples in this guide ensure your applications handle Martinique phone numbers accurately and in compliance with ARCEP regulations. For related Caribbean territories, see our guides on Guadeloupe phone numbers and French Guiana phone numbers, which share similar numbering patterns as French overseas territories.
Frequently Asked Questions
What is the country code for Martinique? The country code for Martinique is +596. When calling Martinique from the United States or Canada, dial 011 + 596 + the 9-digit local number. From Europe and most other countries, dial 00 + 596 + the local number.
How do I validate Martinique mobile numbers?
Martinique mobile numbers follow the format 596 696 [0-46-9]XXXXXX or 596 697 XXXXXXX. Use the regex pattern /^596696[0-46-9]\d{6}$|^5966965[0-6]\d{5}$|^596697\d{7}$/ to validate mobile numbers after removing all non-digit characters.
What is the difference between Martinique landline and mobile number formats?
Landlines use area codes 3-7 (format: 596 [3-7]XXXXXXX), while mobile numbers use the prefix 696 or 697 (format: 596 696/697 XXXXXXX). Both use 9 digits after the country code (10 digits with leading 0 for national dialing).
Does Martinique support mobile number portability? Yes, Martinique implemented MNP (Mobile Number Portability) on April 1, 2006. The porting process takes 7-10 days unless the subscriber requests a later date, following ARCEP regulations. Use MNP lookup APIs to determine the current serving operator.
Which telecom regulator governs Martinique phone numbers? ARCEP (Autorité de Régulation des Communications Électroniques, des Postes et de la Distribution de la Presse) governs telecommunications in Martinique as part of France's overseas territories, ensuring compliance with European standards.
What are the emergency numbers in Martinique? Martinique uses French emergency numbers: 15 (SAMU medical), 17 (Police), 18 (Fire Brigade), 112 (European emergency), 196 (Maritime rescue), and 119 (Child protection). All are free to call 24/7 and must never be blocked by applications.
How do I format Martinique phone numbers for E.164 and international dialing?
E.164 format for Martinique numbers is +596 followed by the 9-digit local number without spaces or dashes. For example: +5965963012345 for landlines or +5966962012345 for mobiles. Always use E.164 format for database storage and API integration to ensure compatibility across systems.
Which mobile operators serve Martinique? Major operators include Orange Caraïbes (market leader with 4G/5G), Outremer Telecom, Digicel AFG, and Bouygues Telecom. ARCEP manages frequency assignments across the 700 MHz, 900 MHz, 1800 MHz, 2.1 GHz, and 3.4-3.8 GHz bands.
How do I handle premium-rate and toll-free numbers in Martinique? Toll-free numbers start with 0800 (free to call). Premium-rate numbers start with 089x (high cost: €0.80-€3/min plus operator charges). Shared-cost numbers use 081x prefixes. Always validate and warn users before connecting to premium-rate numbers.
What SMS and API integration considerations exist for Martinique numbers? Martinique numbers support international SMS using standard GSM protocols. For API integration, use E.164 format (+5965963012345). Major SMS gateway providers (Twilio, MessageBird, Vonage) support Martinique routing. Be aware that SMS delivery rates may be lower than metropolitan France, and costs are typically higher (€0.05-€0.15 per message).