France Phone Numbers: Format, Area Code & Validation Guide
This guide provides a deep dive into the French telephone numbering system, covering formats, area codes, validation, portability, and key market players. It incorporates the latest ARCEP regulations and best practices for developers and telecom professionals.
Quick Navigation:
Quick Reference
Country: France
Country Code: +33
International Prefix: 00 (or +)
National Prefix: 0
Emergency: 112
Overview
France utilizes a 10-digit closed numbering plan. This means all calls within France, even local ones, require dialing all ten digits. The system is structured to identify geographic areas, mobile services, and special numbers. Understanding this structure is crucial for developers working with French phone numbers.
Key Regulatory Updates (2025)
- Geographic Number Restrictions Lifted: Operators can now assign numbers from any approved range, regardless of geographic location. This change promotes competition and simplifies number allocation.
- Enhanced Anti-fraud Measures: ARCEP has implemented stricter regulations to combat phone number fraud, including enhanced verification processes.
- New Mobile Number Regulations: Specific regulations govern the allocation and use of mobile numbers, aiming to improve transparency and consumer protection. Consult ARCEP documentation for details.
- Expanded SMS Emergency Services: The emergency number 114, designed for the deaf and hard-of-hearing, now supports SMS and video calls, broadening accessibility.
Number Formats
All French phone numbers consist of 10 digits, prefixed with a '0'. The subsequent digits categorize the number type.
Format: 0X XX XX XX XX
Where:
0 = National Prefix
X = Service/Region Identifier (see below)
Number Types
- Geographic (01-05): Historically tied to specific regions, these numbers are now assignable nationwide.
- Mobile (06-07): Identify mobile phone subscriptions.
- Special Services (08): Include toll-free, shared-cost, and premium-rate numbers.
- Non-Geographic (09): Used for VoIP and other non-location-based services.
Emergency Services
It is crucial to verify emergency number functionality from your specific phone and network, especially when using VoIP.
Service | Number | Availability | Languages |
---|---|---|---|
All Emergencies | 112 | 24/7 | Multi-lingual |
Medical (SAMU) | 15 | 24/7 | French, English |
Police | 17 | 24/7 | French, English |
Fire & Rescue | 18 | 24/7 | French |
Deaf/Hard-of-Hearing | 114 | 24/7 | SMS, Video Call |
International Calling
Calling France from Abroad
Format: +33 X XX XX XX XX (Recommended)
Alternative: 0033 X XX XX XX XX
- Remove Leading Zero: When dialing from abroad, omit the leading '0' from the French number.
- Plus (+) Prefix: Using the '+' prefix is preferred over '00' as it automatically adapts to the local international dialing prefix.
Calling Abroad from France
Format: 00 [Country Code] [Number]
Alternative: + [Country Code] [Number] (Recommended)
Always consult specific country dialing instructions for any variations.
Number Portability
Number portability allows users to retain their phone number when switching operators. ARCEP regulations ensure a smooth and secure process.
- Processing Time: Typically completed within 3 business days.
- Service Continuity: Service interruption during the transfer is prohibited.
- Cost-Free: Operators cannot charge fees for the porting process.
- Consumer Protection: A 14-day cooling-off period and strict data privacy regulations are in place.
Telecom Operators & Market Landscape
The French telecom market is competitive, with several major players:
Operator | Market Position (2025) | Network Coverage (Approx.) |
---|---|---|
Orange | Leader (40%) | 99% 4G/5G |
SFR | Major Operator (25%) | 98% 4G |
Bouygues Telecom | Established (20%) | 97% 4G |
Free Mobile | Innovator (15%) | 95% 4G |
ARCEP promotes competition through infrastructure sharing requirements, transparent pricing mandates, and support for virtual operators (MVNOs).
Special Cases & Service Numbers
Golden Numbers (Numéros Dorés)
Golden numbers are premium numbers with easily memorable patterns (e.g., 06 88 88 88 88). ARCEP regulations oversee their allocation and use.
Short Codes and Special Services
Various short codes exist for specific services. Always verify the latest information from ARCEP.
Technical Implementation
Validation
const validateFrenchNumber = (number) => {
// Remove whitespace and non-digit characters
const cleanedNumber = number.replace(/\s/g, '').replace(/\D/g, '');
const patterns = {
geographic: /^0[1-5]\d{8}$/,
mobile: /^0[67]\d{8}$/,
tollFree: /^080[0-5]\d{6}$/, // Example toll-free range
premium: /^08[9]\d{7}$/, // Example premium-rate range. Check ARCEP for full ranges.
sharedCost: /^08[12]\d{7}$/, // Example shared-cost range. Check ARCEP for full ranges.
voip: /^09\d{8}$/ // Example VoIP range. Check ARCEP for full ranges.
};
return Object.entries(patterns).find(([type, pattern]) => pattern.test(cleanedNumber));
};
// Example usage:
console.log(validateFrenchNumber("06 12 34 56 78")); // Returns matching pattern (mobile)
console.log(validateFrenchNumber("+33612345678")); // Returns undefined (needs cleaning first)
// Clean and validate international number
const internationalNumber = "+33612345678";
const cleanedInternational = internationalNumber.replace(/\s/g, '').replace(/\D/g, '').replace(/^330/, '0');
console.log(validateFrenchNumber(cleanedInternational)); // Returns matching pattern (mobile)
Formatting
const formatFrenchNumber = (number) => {
const cleanedNumber = number.replace(/\s/g, '').replace(/\D/g, '');
return cleanedNumber.replace(/(\d{2})(?=\d)/g, '$1 ');
};
Internationalization
const toInternational = (number) => {
const cleanedNumber = number.replace(/\s/g, '').replace(/\D/g, '');
return `+33 ${cleanedNumber.substring(1)}`; // Remove leading 0, add +33 and space
};
Best Practices
- Use a Library: For robust handling of international numbers, consider using a dedicated library like
libphonenumber
. - Regular Expressions: While useful for basic validation, be aware that French numbering regulations can change. Regularly update your patterns.
- Input Sanitization: Always sanitize user input to prevent unexpected behavior and security vulnerabilities.
- Testing: Thoroughly test your implementation with various valid and invalid number formats.