Unfortunately, Faker doesn't have a built-in function to do this.

You have two options.

Write functions yourself, for example:

def fake_phone_number(fake: Faker) -> str:
    return f'+91 {fake.msisdn()[3:]}'
from faker import Faker

def main():
    fake = Faker()
    print(fake_phone_number(fake))

Or create an appropriate provider and suggest adding it: https://faker.readthedocs.io/en/master/communityproviders.html

Python src MSISDN. What is MSISDN.

Or

from faker import Faker
from faker.providers.phone_number import Provider


class IndiaPhoneNumberProvider(Provider):
    """
    A Provider for phone number.
    """

    def india_phone_number(self):
        return f'+91 {self.msisdn()[3:]}'


def main():
    fake = Faker()
    fake.add_provider(IndiaPhoneNumberProvider)
    print(fake.india_phone_number())
Answer from fabelx on Stack Overflow
🌐
Faker
faker.readthedocs.io › en › master › providers › faker.providers.python.html
faker.providers.python — Faker 40.13.0 documentation
'F6-0486311W' 'n4-7596634Y' 'Z4-2198268i' 'U9-2414104I' 'w5-7811208R' pystruct(count: int = 10, value_types: List[Type] | Tuple[Type, ...] | None = None, allowed_types: List[Type] | Tuple[Type, ...] | None = None) → Tuple[List, Dict, Dict]¶ ... >>> Faker.seed(0) >>> for _ in range(5): ...
🌐
Faker
faker.readthedocs.io › en › master › providers › baseprovider.html
faker.providers. - BaseProvider - Faker's documentation!
If fix_len is True, only integers with the exact number of digits can be generated. Examples: >>> Faker.seed(0) >>> for _ in range(5): ... fake.random_number(fix_len=False) ... 7056020 4 521760889 5088743 48056573 · >>> Faker.seed(0) >>> for _ in range(5): ...
Top answer
1 of 2
4

Unfortunately, Faker doesn't have a built-in function to do this.

You have two options.

Write functions yourself, for example:

def fake_phone_number(fake: Faker) -> str:
    return f'+91 {fake.msisdn()[3:]}'
from faker import Faker

def main():
    fake = Faker()
    print(fake_phone_number(fake))

Or create an appropriate provider and suggest adding it: https://faker.readthedocs.io/en/master/communityproviders.html

Python src MSISDN. What is MSISDN.

Or

from faker import Faker
from faker.providers.phone_number import Provider


class IndiaPhoneNumberProvider(Provider):
    """
    A Provider for phone number.
    """

    def india_phone_number(self):
        return f'+91 {self.msisdn()[3:]}'


def main():
    fake = Faker()
    fake.add_provider(IndiaPhoneNumberProvider)
    print(fake.india_phone_number())
2 of 2
3

You can use faker's hindi Indian provider, it will generate most of the numbers with +91, but not all:

Code sample with faker and factoryboy.Faker:

import factory
from faker import Faker

fake = Faker(locale="hi_IN")

fake.phone_number()

# with factory-boy's faker
class New(factory.DictFactory):

    phone = factory.Faker("phone_number", locale="hi_IN")

New()

Usage result:

print(fake.phone_number())
>> +91 9018742635
print(New())
>> {'phone': '+91 1489998444'}

If you want to ensure that every number has a +91, you need to tweak with factoryboy or wrap fake.phone_number with a parsing function.

A neat solution could be using a library called phonenumbers like this:

import phonenumbers
from faker import Faker

fake = Faker(locale="hi_IN")
number = fake.phone_number()
num_obj = phonenumbers.parse(number, "IN")
interanational_IN_number = phonenumbers.format_number(num_obj, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
print(interanational_IN_number)

This should work most of the time, except with numbers starting with 091 - they should have two leading zero to be identified properly (0091), fix that corner case, and you should be good to go.

🌐
FakerPHP
fakerphp.org › formatters › numbers-and-strings
Numbers and Strings - FakerPHP / Faker
echo $faker->numberBetween(); // 120378987, 182, 102310983 echo $faker->numberBetween(0, 100); // 32, 87, 91, 13, 75
🌐
Linux Hint
linuxhint.com › python-faker-generate-dummy-data
How to Use Python Faker to Generate Dummy Data – Linux Hint
Create a Python file with the following script that will generate three types of random numbers. The random_int() function will generate a random integer number. The random_number(digit=5) function will generate a random number of 5 digits. The random_int(50, 150) function will generate a random ...
🌐
CodingNomads
codingnomads.com › how-to-use-python-faker-random-data-generator
How to Use Python Faker: Random Data Generator
Because some user submits a composition, you can pick a user at random as the artist for each new composition. To do that, you can utilize the offset() query filter, which discards the first n number of results given as an argument. In this case, n is a random number between 0 and the number of users, less one. Want to know my favorite Python Faker function?
🌐
GitHub
github.com › crowdcomms › faker-e164
GitHub - crowdcomms/faker-e164: Faker provider to generate E164 Phone Numbers
from faker import Faker from ... fake.safe_e164(region_code="US") Generate a random phone number for the given region_code, if region_code is None then a random region will be selected for you....
Starred by 23 users
Forked by 10 users
Languages   Python 100.0% | Python 100.0%
🌐
ZetCode
zetcode.com › python › faker
Python Faker - generating fake data in Python with Faker module
January 29, 2024 - In this article we show how to generate fake data in Python with Faker package.
Find elsewhere
🌐
Faker
faker.readthedocs.io › en › master › providers › faker.providers.phone_number.html
faker.providers.phone_number — Faker 40.11.1 documentation
faker.providers.phone_number · class faker.providers.phone_number.Provider(generator: Any)¶ · Bases: BaseProvider · country_calling_code() → str¶ · Examples: >>> Faker.seed(0) >>> for _ in range(5): ... fake.country_calling_code() ... '+687' '+595' '+880' '+964' '+41' msisdn() → str¶ ·
🌐
PyPI
pypi.org › project › Faker
Faker · PyPI
When using Faker for unit testing, you will often want to generate the same data set. For convenience, the generator also provides a seed() method, which seeds the shared random number generator.
      » pip install Faker
    
Published   Apr 06, 2026
Version   40.13.0
🌐
DEV Community
dev.to › dev_neil_a › python-how-to-create-sample-data-using-faker-co4
Python How-To: Create Sample Data Using Faker - DEV Community
October 20, 2024 - Faker is a third-party Python library that is used to generate random data, such as names and addresses that can be used for whatever purpose it is needed for.
🌐
GeeksforGeeks
geeksforgeeks.org › python › python-faker-library
Python Faker Library - GeeksforGeeks
January 9, 2026 - Generate student data with name, address, coordinates, and roll number. ... from faker import Faker import json from random import randint fake = Faker() n1 = 5 students = {} for i in range(n1): students[i] = { 'id': randint(1, 10), 'name': fake.name(), 'address': fake.address(), 'latitude': float(fake.latitude()), 'longitude': float(fake.longitude()) } print(json.dumps(students, indent=4)) with open('students.json', 'w') as fp: json.dump(students, fp, indent=4) print(f"JSON file created with {n1} student records.")
🌐
Faker
faker.readthedocs.io › en › latest › providers › faker.providers.python.html
faker.providers.python — Faker 40.11.1 documentation
'F6-0486311W' 'n4-7596634Y' 'Z4-2198268i' 'U9-2414104I' 'w5-7811208R' pystruct(count: int = 10, value_types: List[Type] | Tuple[Type, ...] | None = None, allowed_types: List[Type] | Tuple[Type, ...] | None = None) → Tuple[List, Dict, Dict]¶ ... >>> Faker.seed(0) >>> for _ in range(5): ...
🌐
Faker
faker.readthedocs.io
Welcome to Faker’s documentation! — Faker 40.13.0 documentation
Starting from version 4.0.0, Faker dropped support for Python 2 and from version 5.0.0 only supports Python 3.8 and above.
🌐
Towards Data Science
towardsdatascience.com › home › latest › fake (almost) everything with faker
Fake (almost) everything with Faker | Towards Data Science
January 19, 2025 - Generating customer and address data for testing has never been easier. We'll see how to do that using the Faker Python library. ... I was recently tasked with creating some random customer data, with names, phone numbers, addresses, and the usual other stuff.
🌐
GitHub
gist.github.com › rg3915 › 744aacde209046901748
Generate random values with Python gen_random faker gen_date fake gen date fake · GitHub
Generate random values with Python gen_random faker gen_date fake gen date fake - gen_random_values.py
🌐
GitHub
github.com › joke2k › faker
GitHub - joke2k/faker: Faker is a Python package that generates fake data for you. · GitHub
When using Faker for unit testing, you will often want to generate the same data set. For convenience, the generator also provides a seed() method, which seeds the shared random number generator.
Starred by 19.2K users
Forked by 2.1K users
Languages   Python
🌐
DEV Community
dev.to › ankitmalikg › python-generate-fake-data-with-faker-1ecj
Python - Generate Fake Data With Faker - DEV Community
August 17, 2024 - Faker can generate a wide variety of data types. Here are some common examples: print(fake.text()) # Generate a random text paragraph print(fake.date()) # Generate a random date print(fake.company()) # Generate a random company name print(fake.phone_number()) # Generate a random phone number print(fake.job()) # Generate a random job title print(fake.ssn()) # Generate a random social security number print(fake.profile()) # Generate a random user profile
🌐
Medium
medium.com › @mohamedmeqlad9 › faker-the-perfect-python-package-to-generate-fake-data-6f43fa168e86
Faker the perfect python package to generate fake data | by Mohamedmeqlad | Medium
November 11, 2023 - Faker is a Python library developed by François Best that generates large volumes of high-quality fake data. It is designed to produce realistic data in various formats, including names, addresses, phone numbers, dates, and more.