Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 12, 2025

This PR contains the following updates:

Package Change Age Confidence
github.com/brianvoe/gofakeit/v7 v7.7.1 -> v7.9.0 age confidence

Release Notes

brianvoe/gofakeit (github.com/brianvoe/gofakeit/v7)

v7.9.0: ID Generator

Compare Source

New: ID() — Fast, Human-Readable Random Identifier

(GoFakeIt v7.9.0)

gofakeit.ID() is a new high-performance identifier generator designed for speed, readability, and practically zero collision probability.

Unlike UUID v4 or XID, this generator is intentionally random-first, not structure-based.
Perfect for mock APIs, test data, fixtures, seed data, and temporary identifiers.


Highlights

  • Human readable alphabet, no confusing characters
    23456789abcdefghjkmnpqrstuvwxyz (no 1, l, i or 0, o to alleviate confusion)
  • Fast
  • Memory Allocation
  • Generates from your rand source
  • Shorter than UUID, faster than XID, and requires no coordination

Example

id := gofakeit.ID()
fmt.Println(id)
// → "3t9qf4c92npxhw7bg6y0"

Performance Benchmarks

Measured on Go 1.25

Generator / Function Benchmark Name ops/sec ns/op B/op allocs/op
gofakeit.ID() BenchmarkID-10 31,383,146 37.8 ns 24 1
gofakeit.UUIDv4() BenchmarkUUIDv4-10 22,131,577 53.8 ns 48 1
github.com/rs/xid BenchmarkXID-10 16,190,817 74.2 ns 0 0
github.com/google/uuid (v4) BenchmarkGoogleUUIDv4-10 3,098,770 386.1 ns 64 2

Takeaway: gofakeit.ID() is ~2× faster than XID and ~10× faster than UUID v4, while being shorter and human-readable.


Collision Probability (Randomness Math)

  • ID length: 20 characters
  • Alphabet: 32 slots with one duplicated character (intentional) → avoids retries, maximizes speed
  • Effective entropy: ≈ 98.25 bits

Even under very large bursts, duplication is astronomically unlikely

Collision probability when generating n IDs within 1 second (birthday bound)
n (IDs in 1s) gofakeit.ID() collision probability
100,000 0.00000000000000000001326
1,000,000 0.000000000000000001326017
10,000,000 0.000000000000000132601736
100,000,000 0.000000000000013260173678
1,000,000,000 0.000000000001326017367838

For comparison (same n):

  • UUID v4 (122 bits): much lower probabilities (but significantly slower and longer)
  • XID: structural uniqueness (time + machine + pid + counter). Treat collisions as operationally zero when configured normally.

Need structural, sortable IDs? Use XID or Snowflake.
Want random, readable, fast? Use gofakeit.ID().


RNG Behavior

Mode Behavior
Default (gofakeit.ID()) PCG for speed, seeded via crypto/rand → fast + unpredictable
Full crypto (NewFaker(source.NewCrypto())) crypto/rand for every ID → maximum randomness (slower)
Deterministic (New(seed)) PCG with fixed seed → reproducible ID sequences (useful for tests/fixtures)

We seed PCG with a cryptographic seed when seed == 0. This prevents accidental identical streams across processes/containers.


Example Usage

package main

import (
	"fmt"

	"github.com/brianvoe/gofakeit/v7"
	"github.com/brianvoe/gofakeit/v7/source"
)

func main() {
	// Fast ID — PCG, automatically crypto-seeded
	fmt.Println("fast ID:", gofakeit.ID())

	// Cryptographically secure per-ID RNG
	crypto := source.NewCrypto()
	faker := gofakeit.NewFaker(crypto, true)
	fmt.Println("crypto ID:", faker.ID())
}

v7.8.2

Compare Source

v7.8.1

Compare Source

v7.8.0

Compare Source

v7.7.3

Compare Source

v7.7.2

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot requested a review from a team as a code owner October 12, 2025 17:41
@renovate renovate bot changed the title fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.8.0 fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.8.1 Oct 24, 2025
@renovate renovate bot force-pushed the renovate/github.com-brianvoe-gofakeit-v7-7.x branch from a66b50d to dfec75c Compare October 24, 2025 22:41
@renovate renovate bot changed the title fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.8.1 fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.8.2 Nov 1, 2025
@renovate renovate bot force-pushed the renovate/github.com-brianvoe-gofakeit-v7-7.x branch from dfec75c to 018fb65 Compare November 1, 2025 05:58
@renovate renovate bot changed the title fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.8.2 fix(deps): update module github.com/brianvoe/gofakeit/v7 to v7.9.0 Nov 8, 2025
@golanglemonade golanglemonade merged commit ef1ca4b into main Nov 17, 2025
9 checks passed
@golanglemonade golanglemonade deleted the renovate/github.com-brianvoe-gofakeit-v7-7.x branch November 17, 2025 16:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants