Stop Generating Nonsense Indian Mock Data. I Built a Better Way! A developer built 'indian-fakedata', a Python library that generates realistic Indian demographic data by ensuring consistent combinations of names, religions, states, and other attributes. The tool addresses the problem of standard mock-data generators producing impossible profiles like a Sikh person named Mohammed Sharma living in Mizoram. The library provides detailed profiles including Aadhaar numbers, PAN numbers, and cultural data for testing and ML training. If you build apps for the Indian market, you've probably needed mock demographic data for testing, UI previews, or training ML models. And if you've used standard mock-data generators, you've probably ended up with a profile that looks something like this: A Sikh person named Mohammed Sharma living in Mizoram. ๐Ÿ˜… Most fake-data libraries generate impossible demographic combinations because they operate on simple random selection. They pick a first name from list A, a last name from list B, a religion from list C, and a state from list D. When context matters, that bad data can ruin your testing environment. Thatโ€™s why I built indian-fakedata . { "id": "33553413-2014-4616-9361-511204427271", "firstName": "Pushpa", "lastName": "Sharma", "fatherName": "Santosh Sharma", "motherName": "Geeta Sharma", "spouseName": "Sanjay Sharma", "gender": "female", "age": 34, "dateOfBirth": "1992-06-11", "bloodGroup": "O+", "heightCm": 152.9, "weightKg": 65.9, "bmi": 28.2, "aadhaarNumber": "500233102039", "panNumber": "EKIPS1361G", "voterIdNumber": "MHR3140140", "phoneNumber": "7513110431", "email": "pushpasharma328@gmail.com", "state": "Maharashtra", "stateCode": "MH", "district": "Aurangabad", "areaType": "urban", "addressLine": "469/A, Adarsh Colony, Aurangabad", "locality": "Adarsh Colony", "pinCode": "418683", "religion": "Hindu", "caste": "Deshastha Brahmin", "socialCategory": "General", "motherTongue": "Marathi", "secondLanguage": "English", "education": "secondary", "occupation": "agricultural labourer", "employmentSector": "self employed", "maritalStatus": "married", "annualIncomeINR": 194000, "monthlyExpenditureINR": 15300, "numberOfChildren": 1, "dietaryPreference": "non vegetarian", "disability": "none", "isMigrant": true, "migrationOriginState": "Kerala", "bankIFSC": "PUNB0314300", "bankName": "Punjab National Bank", "bankAccountNumber": "03131130413", "rationCardType": "APL", "healthInsurance": "none", "landOwnershipAcres": 0, "vehicleRegistration": "MH 01 BG 3908", "vehicleType": "four wheeler", "hasInternetAccess": true, "hasSmartphone": true, "usesSocialMedia": true, "upiId": "pushpa@okicici", "personality": { "openness": 53, "conscientiousness": 47, "extraversion": 53, "agreeableness": 46, "neuroticism": 74 }, "politicalLeaning": "nationalist right", "religiosity": "very religious", "cognitiveProfile": { "aptitudeScore": 40, "numeracyScore": 37, "literacyScore": 75, "digitalLiteracyScore": 45, "financialLiteracyScore": 93 }, "interests": { "primarySport": "cricket", "petPreference": "fish", "entertainment": "Bollywood", "TV Serials", "Cricket Matches", "News", "YouTube", "OTT/Netflix", "Devotional Music" , "readingHabit": "rare", "musicPreference": "Bollywood", "preferredSocialMedia": "WhatsApp" }, "habits": { "tobaccoUse": "none", "alcoholUse": "none", "exerciseFrequency": "weekly", "avgSleepHours": 9.3, "cooksAtHome": true, "chronotype": "early riser" }, "educationDetails": { "fieldOfStudy": null, "institutionType": "private", "mediumOfInstruction": "English", "qualificationYear": 2008, "competitiveExamPercentile": null }, "culturalProfile": { "entrepreneurialScore": 32, "academicOrientation": 64, "artisticInclination": 41, "militaryTradition": 37, "agriculturalRootedness": 21, "artisanTradition": 1, "bureaucraticOrientation": 50, "socialActivism": 13, "communityBonding": 67, "migrationTendency": 24, "careerPreference": "business trade", "familyStructure": "nuclear family", "savingsOrientation": 65, "riskAppetite": 12 }, "householdSize": 1, "householdAssets": { "hasRadioTransistor": false, "hasTelevision": true, "hasComputer": true, "hasPhone": true, "hasBicycle": true, "hasScooter": true, "hasCar": true, "bankingService": true, "treatedWaterSource": true, "latrineFacility": true, "numberOfRooms": 2, "roofMaterial": "concrete", "wallMaterial": "burnt brick", "cookingFuel": "lpg", "lightingSource": "electricity", "drinkingWaterSource": "tap treated" }, "probabilityMetrics": { "nationalReligionFreq": 0.8033, "stateGivenReligionProb": 0.1032, "casteGivenContextProb": 0.0423, "lastNameGivenCasteProb": 0.2000, "socialCategoryProb": 0, "educationProb": 0.2189, "occupationProb": 0.1800, "jointProbability": 2.76e-05 }, "generatedAt": "2026-07-12T21:56:35.146855", "seed": 7 } npm install @abhay557/indian-fakedata Requires Node.js = 18 . pip install indian-fakedata Requires Python 3.8+ . Both packages ship with the indian-fakedata CLI binary. The arguments are identical across both versions Node.js npx @abhay557/indian-fakedata options Python or globally installed Node package indian-fakedata options Run with no arguments to display the full help menu. | Flag | Alias | Description | Default | |---|---|---|---| --count