Thanks to visit codestin.com
Credit goes to www.pseudata.dev

Skip to content

Pseudata

One seed. Every language. Same data.

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()

Cross-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:

  • Load testing - Each test worker accesses its own range (worker 1 uses indices 0-999, worker 2 uses 1000-1999) without coordination
  • Parallel processing - Split a billion-record dataset across processes instantly, no sequential generation required
  • Sparse testing - Test edge cases at indices 1, 1000, 1000000, 1000000000 without generating intermediate records
  • Reproducible demos - Jump to the “interesting” user at index 42857 every time

User[1000] with seed 42 = Always the same across every language:

Diagram showing seed 42 flowing to Go, Java, Python, and TypeScript implementations, all producing identical output: John Smith

package main
import "github.com/pseudata/pseudata"
users := pseudata.NewUserArray(42)
user := users.At(1000)
fmt.Println(user.Name) // → "John Smith"
fmt.Println(user.Email) // → "[email protected]"