phone number standards

Sent logo
Sent TeamMay 3, 2025 / phone number standards / Article

Luxembourg Phone Number Format: +352 Country Code Validation & Dialing Guide

Master Luxembourg phone number formats with +352 country code. Complete validation guide covering mobile (6/7), landline, toll-free (800) numbers with regex patterns, API integration, and E.164 formatting.

Luxembourg Phone Number Format & Validation Guide: +352 Country Code

Introduction

Luxembourg phone numbers use country code +352 with a closed numbering plan and no area codes. This comprehensive guide covers Luxembourg phone number formats, validation techniques, dialing instructions, and integration best practices. Whether you're implementing number portability, building validation logic, configuring PBX routing rules, or managing customer contacts across Luxembourg's telecommunications network, you'll find everything needed to handle +352 numbers effectively.

Understanding Luxembourg Phone Number Format

The Institut Luxembourgeois de Régulation (ILR) oversees Luxembourg's closed numbering plan. A closed numbering plan uses fixed-length telephone numbers where all subscribers dial the same number of digits regardless of location, as defined by ITU-T E.164 standards. This contrasts with open numbering plans (common in Europe) that use variable-length area codes and local numbers. Luxembourg has no traditional area codes – all numbers follow a consistent national format with predictable digit lengths (6–9 digits after the country code). This simplified structure makes Luxembourg numbers straightforward to work with. You don't need to account for regional variations, trunk prefixes, or complex location-based dialing rules.

Luxembourg Country Code: +352

The Luxembourg country code is +352. Include this code when dialing Luxembourg numbers from abroad, following the E.164 international telephone numbering format.

Luxembourg Phone Number Structure and Digit Format

Here are the core components of a Luxembourg phone number:

  • Country Code: +352 (required for all international calls). Include this when dialing from outside Luxembourg.
  • Area/City Codes: None. Luxembourg's unified national system uses no area codes.
  • Subscriber Numbers: 6–9 digits for most services, with landlines ranging from 5–9 digits. The length indicates the number type.
  • Service-Specific Prefixes: These prefixes categorize the number:
    • Mobile: Begins with 6 or 7, consistently 9 digits (e.g., 621123456, 785123456). Mobile codes in the format "6x1" were introduced on September 1, 2006, replacing the older "0x1" format. You'll encounter these frequently with individual contacts.
    • Landline: Newer allocations often begin with 2 (e.g., 26, 24, 27), varying from 5–9 digits.
    • Toll-Free: Begins with 800, 8 digits total (e.g., 80012345). Customer service lines typically use these.
    • Premium: Begins with 90[015], 8 digits total (e.g., 90012345, 90112345, 90512345). These numbers carry higher charges.
Number TypePrefixTotal DigitsExampleTypical Use
Mobile6, 79+352 621 123 456Personal/business mobile lines
Landline2-95-9+352 26 12 34 56Fixed business/residential lines
Toll-Free8008+352 800 12345Customer service (free for caller)
Premium900, 901, 9058+352 901 12345Premium services (higher cost)

How to Validate Luxembourg Phone Numbers with Regex

Validate phone numbers accurately to avoid errors and ensure smooth operation.

Luxembourg Phone Number Validation with JavaScript Regex

Validate Luxembourg phone numbers efficiently with this JavaScript regex validation function. This implementation handles all Luxembourg number types including mobile, landline, toll-free, and premium-rate numbers:

javascript
// Example number validation implementation
const validateLuxembourgNumber = (phoneNumber) => {
  const patterns = {
    mobile: /^(?:6[269][18]\d{6}|7[189]\d{6})$/, // Matches mobile numbers (9 digits)
    landline: /^(?:2[0-9]\d{4,7}|[3-57-9]\d{4,8})$/, // Matches landline numbers (5–9 digits)
    tollFree: /^800\d{5}$/, // Matches toll-free numbers (8 digits)
    premium: /^90[015]\d{5}$/ // Matches premium-rate numbers (8 digits)
  };

  // Remove spaces, hyphens, and any international prefix
  let cleanNumber = phoneNumber.replace(/[\s-]+/g, '');

  // Remove +352 country code if present
  if (cleanNumber.startsWith('+352')) {
    cleanNumber = cleanNumber.substring(4);
  } else if (cleanNumber.startsWith('352')) {
    cleanNumber = cleanNumber.substring(3);
  }

  // Check against each pattern and return the type if found
  for (const [type, pattern] of Object.entries(patterns)) {
    if (pattern.test(cleanNumber)) {
      return type;
    }
  }

  return false; // Return false if no match is found
};


// Example usage and edge cases:
console.log(validateLuxembourgNumber("+352 621 123 456")); // Output: "mobile"
console.log(validateLuxembourgNumber("26 12 34 56")); // Output: "landline"
console.log(validateLuxembourgNumber("80012345")); // Output: "tollFree"
console.log(validateLuxembourgNumber("+35290112345")); // Output: "premium"
console.log(validateLuxembourgNumber("1234")); // Output: false (too short)
console.log(validateLuxembourgNumber("123456789012")); // Output: false (too long)
console.log(validateLuxembourgNumber("5551234")); // Output: false (invalid prefix)

Regex Pattern Breakdown:

  • ^ – Start of string anchor
  • (?:...) – Non-capturing group for alternation
  • 6[269][18] – Mobile prefix: 6 followed by 2/6/9, then 1/8
  • \d{6} – Exactly 6 more digits
  • 7[189] – Mobile prefix: 7 followed by 1/8/9
  • 2[0-9]\d{4,7} – Landline starting with 2, followed by any digit, then 4-7 more digits
  • [3-57-9] – Landline starting with 3-5 or 7-9
  • $ – End of string anchor

This function checks the input against multiple regular expressions for different number types. It handles formatting variations like spaces and international prefixes. The function returns the number type, allowing your system to route different number types appropriately. It strips the +352 country code before validation, ensuring accurate pattern matching.

Validation in Python

python
import re

def validate_luxembourg_number(phone_number):
    """Validate Luxembourg phone numbers and return the type."""
    patterns = {
        'mobile': r'^(?:6[269][18]\d{6}|7[189]\d{6})$',
        'landline': r'^(?:2[0-9]\d{4,7}|[3-57-9]\d{4,8})$',
        'toll_free': r'^800\d{5}$',
        'premium': r'^90[015]\d{5}$'
    }

    # Clean the number
    clean_number = re.sub(r'[\s\-+]', '', phone_number)

    # Remove country code if present
    if clean_number.startswith('352'):
        clean_number = clean_number[3:]

    # Test against patterns
    for number_type, pattern in patterns.items():
        if re.match(pattern, clean_number):
            return number_type

    return False

# Example usage
print(validate_luxembourg_number("+352 621 123 456"))  # Output: mobile
print(validate_luxembourg_number("26123456"))  # Output: landline

Validation in Java

java
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class LuxembourgPhoneValidator {

    private static final Pattern MOBILE = Pattern.compile("^(?:6[269][18]\\d{6}|7[189]\\d{6})$");
    private static final Pattern LANDLINE = Pattern.compile("^(?:2[0-9]\\d{4,7}|[3-57-9]\\d{4,8})$");
    private static final Pattern TOLL_FREE = Pattern.compile("^800\\d{5}$");
    private static final Pattern PREMIUM = Pattern.compile("^90[015]\\d{5}$");

    public static String validateLuxembourgNumber(String phoneNumber) {
        // Clean the number
        String cleanNumber = phoneNumber.replaceAll("[\\s\\-+]", "");

        // Remove country code if present
        if (cleanNumber.startsWith("352")) {
            cleanNumber = cleanNumber.substring(3);
        }

        // Test against patterns
        if (MOBILE.matcher(cleanNumber).matches()) return "mobile";
        if (LANDLINE.matcher(cleanNumber).matches()) return "landline";
        if (TOLL_FREE.matcher(cleanNumber).matches()) return "toll_free";
        if (PREMIUM.matcher(cleanNumber).matches()) return "premium";

        return "invalid";
    }
}

How to Format Luxembourg Numbers for International Dialing (E.164 Standard)

Format Luxembourg numbers correctly for international dialing by including country code +352 and grouping digits according to E.164 standards. This ensures proper display and dialing compatibility across telecommunications systems:

javascript
// Format international numbers
const formatInternational = (number) => {
  // Remove existing formatting
  const clean = number.replace(/[\s-+]/g, '');

  // Remove country code if present
  const localNumber = clean.startsWith('352') ? clean.substring(3) : clean;

  // Format based on number type
  if (localNumber.length === 9 && (localNumber.startsWith('6') || localNumber.startsWith('7'))) {
    // Mobile: +352 621 123 456
    return `+352 ${localNumber.substring(0, 3)} ${localNumber.substring(3, 6)} ${localNumber.substring(6)}`;
  } else if (localNumber.length === 8) {
    // Toll-free/Premium: +352 800 12345 or +352 901 12345
    return `+352 ${localNumber.substring(0, 3)} ${localNumber.substring(3)}`;
  } else {
    // Landline: +352 26 12 34 56
    return `+352 ${localNumber.replace(/(\d{2})(?=\d)/g, '$1 ')}`;
  }
};

// Example usage:
console.log(formatInternational("621123456")); // Output: "+352 621 123 456"
console.log(formatInternational("26123456")); // Output: "+352 26 12 34 56"
console.log(formatInternational("80012345")); // Output: "+352 800 12345"

This function adds the +352 country code and formats numbers based on their type, improving readability for mobile, landline, toll-free, and premium numbers.

Handling Validation Errors

Implement mechanisms to handle these common validation pitfalls:

  • Leading zeros: Some users may include a leading 0 (legacy format). Strip these before validation.
  • Country code variations: Users may enter "352", "+352", or "00352". Normalize to one format.
  • Whitespace and separators: Accept spaces, hyphens, dots, or parentheses, then strip them.
  • Too short/too long: Reject numbers outside the 6-9 digit range after country code removal.
  • Invalid prefixes: Numbers starting with 0, 1, or invalid digit combinations should fail validation.
  • Ported numbers: Number prefix may not reflect current operator due to number portability.
javascript
// Example error handling approach
try {
     const isValid = validateLuxembourgNumber(inputNumber);
     if (!isValid) {
       throw new Error('Invalid Luxembourg phone number format. Check that your number is 6–9 digits and uses a valid prefix (6/7 for mobile, 2–9 for landline, 800 for toll-free, or 90[015] for premium).');
     }
     // Proceed with processing the valid number
} catch (error) {
     console.error(`Validation error: ${error.message}`);
     // Display the error message to the user or log it for debugging
}

This try…catch block catches validation errors and prevents your application from crashing. The error message tells users what went wrong and how to fix it.

Luxembourg Number Portability System (Mobile & Fixed Number Porting)

Luxembourg operates a sophisticated number portability system through GIE FNP (Groupement d'Intérêt Économique – Fixed Number Portability). This centralized infrastructure ensures seamless number transitions between telecommunications operators, maintaining service continuity when users switch providers. Luxembourg's fixed broadband sector has a 91% uptake rate, exceeding the EU average of 78%.

How Number Portability Works

The centralized system offers these features (source: ILR regulations):

  • Real-time Database Integration: Automated validation, instant status updates, and synchronization across all operators. The system maintains a Centralized Routing Database (CRDB) that all operators must update at the porting date and time, ensuring accurate call routing.
  • Efficient Implementation Timeline: Validation within 1–2 business days, technical implementation within 24 hours, and same-day service activation. ILR regulations require number portability completion within one working day from the date agreed with the end user.
  • Single Point of Contact (SPOC): Each operator maintains a dedicated entity accessible Monday to Friday, 8:00–12:00 and 13:00–17:00 (except legal holidays), for managing portability requests.
  • No Direct Costs: Operators cannot charge end users for number portability services. The new operator handles all portability procedures.
  • One-Month Grace Period: After contract termination, users retain the right to transfer their number to another operator for at least one month.

Developer Integration Tips for Luxembourg Number Portability

Account for portability when integrating Luxembourg phone numbers:

  1. Don't Assume Operator from Prefix: Number prefixes no longer reliably indicate the current operator due to widespread portability. Use real-time operator lookup APIs instead.

  2. Query Portability Status: While specific GIE FNP API endpoints are not publicly documented for third-party access, telecom operators must integrate with the centralized routing database. Contact the ILR or individual operators for B2B integration options.

  3. Cache Carefully: If caching operator data, use short TTL (Time To Live) values. Numbers can port with one working day notice, so cache no longer than 24 hours.

  4. Handle Porting Windows: During the porting process, service interruption must not exceed one working day. Plan for potential brief outages when routing calls.

Telecommunications Regulatory Authority

The Institut Luxembourgeois de Régulation (ILR) oversees Luxembourg's telecommunications sector, ensuring effective competition and consumer protection. Founded in 1997 during market liberalization, the ILR regulates electronic communications, postal services, energy, transport, and radio frequencies. Use these ILR consumer tools:

  • smartcompare.lu – Compare service providers and pricing
  • checkmynet.lu – Test your internet connection quality
  • calculix.lu – Calculate and compare service costs

Contact the ILR at 17, rue du Fossé, L-1536 Luxembourg, or visit www.ilr.lu for regulatory inquiries.

Luxembourg Telecom Market Overview

Luxembourg's telecommunications market features established operators competing in a small but advanced market. As of 2023-2024, the major mobile providers are:

  • POST Luxembourg – State-owned incumbent operator with approximately 40% market share, maintaining the largest subscriber base due to its long-standing presence and extensive infrastructure (source)
  • Proximus Luxembourg – Belgian-owned operator, second major player
  • Orange Communications Luxembourg – French-owned operator offering mobile and fixed services
  • Tango (subsidiary of Proximus Group) – Competitive mobile and internet provider
  • Eltrona – Alternative infrastructure operator with its own network

Additional providers include Luxembourg Online S.A., Visual Online, and various MVNOs (Mobile Virtual Network Operators). This competitive landscape drives innovation and gives users diverse choices. Luxembourg also hosts SES, a leading global satellite operator.

5G Network Infrastructure

Luxembourg invests actively in 5G infrastructure, with nationwide deployment underway. 5G spectrum allocation completed in July 2020 when the ILR auctioned frequency bands over 38 rounds of bidding (source: ILR):

  • 700 MHz band (n28): 2 x 30 MHz total (703-733 MHz / 758-788 MHz). Awarded to Orange, Proximus, and POST (2 x 10 MHz each). Provides wide coverage and better building penetration.
  • 3600 MHz band (n78): 330 MHz total (3420-3750 MHz). Orange and POST secured 110 MHz each, Proximus obtained 100 MHz, and Luxembourg Online acquired 10 MHz. Offers high bandwidth and data throughput for dense areas.
  • 26 GHz band (n257/n258): 24.25–27.5 GHz range planned for future allocation to support ultra-high-speed mmWave applications.

5G coverage concentrates in Luxembourg City and Esch-sur-Alzette, with POST offering the most extensive network, followed by Tango and Orange. Several 5G pilot projects operate across agriculture, industry, and transport sectors.

How to Integrate Luxembourg Phone Numbers into Your System

Successfully integrate Luxembourg phone numbers into your application or CRM system with careful planning around validation, number portability, and ongoing monitoring. This section covers API integration requirements and implementation best practices for Luxembourg's +352 telecommunications infrastructure.

API Integration Requirements

Follow this checklist for your integration process:

  1. Implement Number Validation: Use the provided regex patterns. This is your first line of defense against invalid formats.

  2. Integrate Portability Database: Connect with the GIE FNP system for real-time portability checks to route calls to the correct operator. Contact Luxembourg telecom operators directly for B2B integration options:

    • Use REST/SOAP interfaces for seamless communication
    • Implement secure authentication (OAuth 2.0 or API keys)
    • Adhere to rate limiting guidelines (typical limits: 100-1000 requests/minute depending on provider)
    • Handle error responses: HTTP 400 (invalid format), 404 (number not found), 429 (rate limit exceeded), 500 (server error)
  3. Monitor Your System: Track number allocation status, portability requests, service activation, and error handling. Proactive monitoring identifies and resolves issues before they impact users.

Sample API Request/Response:

javascript
// Example API integration (pseudo-code)
const checkNumberPortability = async (phoneNumber) => {
  const response = await fetch('https://api.operator.lu/v1/portability', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      phoneNumber: '+352621123456'
    })
  });

  const data = await response.json();
  return data;
  // Expected response:
  // {
  //   "phoneNumber": "+352621123456",
  //   "currentOperator": "POST Luxembourg",
  //   "originalOperator": "Orange Luxembourg",
  //   "portingDate": "2024-03-15",
  //   "status": "active"
  // }
};

Implementation Best Practices

Follow these best practices beyond technical requirements:

  1. Conserve Numbers: Audit number blocks regularly, automate recovery of unused numbers, and use efficient allocation algorithms to maximize utilization.

  2. Manage Special Numbers: Establish clear procedures for allocating golden numbers and monitoring premium services. Integrate with toll-free number databases for accurate routing.

  3. Security and Data Privacy Compliance: Under GDPR and Luxembourg's Data Protection Law (August 1, 2018), phone numbers are personal data. Implement these safeguards:

    • Data minimization: Collect only necessary phone number data
    • Purpose limitation: Use phone numbers only for stated purposes
    • Encryption: Encrypt phone numbers at rest and in transit (TLS 1.2+)
    • Access controls: Restrict access to authorized personnel only
    • Retention policies: Delete phone numbers when no longer needed
    • User consent: Obtain explicit consent for marketing communications
    • Right to erasure: Provide mechanisms for users to request deletion
    • Data breach notification: Report breaches involving phone numbers to Luxembourg's CNPD (Commission Nationale pour la Protection des Données) within 72 hours
  4. Troubleshooting Common Integration Issues:

    • Validation failures: Verify regex patterns match current ILR numbering plan
    • Portability delays: Account for 24-hour porting windows in call routing logic
    • API timeouts: Implement retry logic with exponential backoff (wait 1s, 2s, 4s, 8s)
    • Format inconsistencies: Normalize all numbers to E.164 format before storage
    • Country code confusion: Always store numbers with country code (+352) in database

Luxembourg Phone Number FAQs

What is the country code for Luxembourg?

The Luxembourg country code is +352. Always include this when dialing Luxembourg from abroad. Luxembourg uses no area codes – dial +352 followed by the subscriber number (6–9 digits).

How do I format a Luxembourg mobile number?

Luxembourg mobile numbers start with 6 or 7 and are 9 digits long. Format internationally as +352 621 123 456. The "6x1" mobile prefix format was introduced on September 1, 2006.

How many digits are in a Luxembourg phone number?

Luxembourg phone numbers have 6–9 digits after the country code (+352). Mobile numbers are consistently 9 digits, toll-free and premium numbers are 8 digits, and landlines vary from 5–9 digits.

Does Luxembourg use area codes?

No, Luxembourg uses a closed numbering plan with no area codes. All numbers are dialed the same way nationwide using only the country code +352 and the subscriber number.

How do I validate a Luxembourg phone number with regex?

Use regex patterns to validate Luxembourg numbers by type: mobile /^(?:6[269][18]\d{6}|7[189]\d{6})$/, landline /^(?:2[0-9]\d{4,7}|[3-57-9]\d{4,8})$/, toll-free /^800\d{5}$/, and premium /^90[015]\d{5}$/.

What are Luxembourg toll-free numbers?

Luxembourg toll-free numbers begin with 800 and are 8 digits total (e.g., 80012345). Format internationally as +352 800 12345. These numbers are commonly used for customer service lines.

Who regulates telecommunications in Luxembourg?

The Institut Luxembourgeois de Régulation (ILR) regulates Luxembourg's telecommunications sector. Founded in 1997, the ILR oversees electronic communications, number portability, and consumer protection. Visit www.ilr.lu for more information.

Can I keep my phone number when switching operators in Luxembourg?

Yes, Luxembourg guarantees number portability. The process must complete within one working day from your agreed activation date, with no direct costs charged to you. Contact your new operator to initiate the transfer.

Which operators provide 5G service in Luxembourg?

POST Luxembourg, Orange, Proximus, and Tango provide 5G services in Luxembourg using the 700 MHz (n28) and 3600 MHz (n78) frequency bands. Coverage is concentrated in Luxembourg City and Esch-sur-Alzette.


Conclusion

Follow the guidelines and best practices in this guide to ensure accurate validation, seamless integration, and efficient management of Luxembourg phone numbers. Stay updated on regulatory changes from the ILR and numbering plan updates to maintain compliance and optimal performance.

Next Steps:

Frequently Asked Questions

How to validate a Luxembourg phone number?

Validate Luxembourg phone numbers using regular expressions that check for specific patterns for geographic, mobile, toll-free, and premium numbers. Remove formatting characters before validation, and consider adding checks for minimum and maximum lengths. The provided JavaScript function offers a robust example of this validation process covering various number types and formats like spaces and the international prefix.

What is the format for Luxembourg phone numbers?

Luxembourg phone numbers follow a closed numbering plan with the country code +352 followed by 4-11 digits. There are no area codes. Mobile numbers start with 6 or 7, toll-free with 800, and premium with 90. For international use, always include the country code +352 and group digits for better readability, such as +352 62 11 23 456.

Why does Luxembourg not have area codes?

Luxembourg doesn't use area codes due to its small size and advanced telecommunications infrastructure. This simplified structure makes number handling easier, as there's no need to account for regional variations. The country uses a closed numbering plan where all subscriber numbers adhere to a consistent national format.

How to format Luxembourg numbers internationally?

Always include the country code +352 when formatting Luxembourg numbers for international use. For improved readability, group the remaining digits in pairs after the country code, for example, +352 62 11 23 456. This formatting ensures clear and consistent representation in international contexts.

What is GIE FNP in Luxembourg?

GIE FNP (Groupement d'Intérêt Economique - Fixed Number Portability) manages number portability in Luxembourg. It ensures seamless number transitions between operators with features like real-time database integration and a rapid implementation timeline (1-2 business days for validation, 24 hours for technical setup, and same-day activation). This infrastructure is vital for service continuity when users switch providers.

How does number portability work in Luxembourg?

Number portability in Luxembourg is handled by the GIE FNP, allowing users to keep their numbers when switching providers. The process typically takes 1-2 business days for validation and 24 hours for the technical implementation, with same-day service activation. This system is facilitated by real-time database integration and synchronization across all operators in Luxembourg.

What are the service-specific prefixes for Luxembourg numbers?

Luxembourg numbers use prefixes to indicate service types: 6 or 7 for mobile, 800 for toll-free, and 90 for premium-rate numbers. Subscriber numbers range from 4 to 11 digits. Understanding these prefixes helps in identifying the type of number and associated costs.

When should I integrate with GIE FNP database?

Integrate with the GIE FNP portability database when your system handles Luxembourg phone numbers and needs to verify their current operator in real time. This integration is crucial for accurate call routing and ensures service continuity, especially when dealing with ported numbers. Use secure authentication and adhere to rate limiting.

Can I port my number in Luxembourg?

Yes, Luxembourg operates a sophisticated number portability system through GIE FNP. This system ensures a seamless transition between operators, allowing you to keep your existing number when switching providers. The process is typically completed within a few business days.

What is the country code for Luxembourg?

The country code for Luxembourg is +352. It must be included when dialing Luxembourg numbers from outside the country. Always place it before the subscriber number to ensure the call connects correctly.

How to implement error handling for Luxembourg number validation?

Implement robust error handling for Luxembourg number validation using try-catch blocks in your code. This allows your system to gracefully handle invalid numbers or other potential errors during the validation process, preventing crashes. Display user-friendly error messages or log the error for debugging.