Cross-Language Consistency
Same seed = same data across all languages. No more integration test mismatches.
Your frontend expects Alice. Your backend returns Bob.
Different faker libraries = Different realities.
Pseudata solves this by making mock data generation a standardized algorithm—not a language-specific implementation.
📖 Read the full story: Why faker.js and Faker Don’t Agree
Cross-Language Consistency
Same seed = same data across all languages. No more integration test mismatches.
Infinite Scale
O(1) instant access to billions of records. Zero memory overhead—virtual arrays calculate on demand.
Multi-Locale Support
15+ locales with culturally appropriate names, addresses, and geographic data.
Zero Dependencies
Pure implementation in every language. No FFI, no bindings, just native code.
Pseudata is the only faker library that guarantees both cross-language consistency and O(1) infinite scale.
Different data across languages
# Python (Faker)Faker.seed(42)fake.name() # → "Brett Davis"// TypeScript (faker.js)faker.seed(42);faker.person.fullName(); // → "Miss Dora Kiehn"Sequential access only
# To get item 1,000,000, must iterate - O(n)faker.seed(42)for i in range(1_000_000): name = faker.name()Identical data across all languages
# Pythonusers = UserArray(42)user = users.at(0)print(user.name) # → "John Smith"// TypeScriptconst users = new UserArray(42);const user = users.at(0);console.log(user.name); // → "John Smith"Direct access to any index - O(1)
# Jump directly to the billionth recordusers = UserArray(42)user = users.at(1_000_000_000) # InstantCross-Language Consistency enables reliable integration testing across polyglot systems. When your Go backend and TypeScript frontend both generate User[1000] with seed 42, you get the same test data—eliminating the integration test mismatches that plague microservices architectures.
Direct O(1) Access unlocks scenarios impossible with traditional fakers:
User[1000] with seed 42 = Always the same across every language:
package mainimport "github.com/pseudata/pseudata"
users := pseudata.NewUserArray(42)user := users.At(1000)fmt.Println(user.Name) // → "John Smith"import dev.pseudata.UserArray;
UserArray users = new UserArray(42);User user = users.at(1000);System.out.println(user.getName()); // → "John Smith"from pseudata import UserArray
users = UserArray(42)user = users.at(1000)print(user.name) # → "John Smith"import { UserArray } from "@pseudata/core";
const users = new UserArray(42);const user = users.at(1000);console.log(user.name); // → "John Smith"© 2025 Pseudata Project. Open Source under Apache License 2.0. · RSS Feed