Seeded Deterministic UUID Generator

Enter any string below and get a 100% reproducible UUID — perfect for stable tests and fixtures.

Same seed = identical UUID every single time, on every device.

About This Tool

Random UUIDs are great for production security — but they are the number-one cause of flaky tests. A test that passes locally can fail in CI simply because crypto.randomUUID() generated a different value.

This Seeded Deterministic UUID Generator solves that problem once and for all. Instead of randomness, it uses SHA-256 hashing of your chosen seed string to produce a standards-compliant UUIDv5-style identifier. The result? Same seed → same UUID forever, across every machine, browser, and year.

Built entirely in the browser with zero server round-trips, zero cookies, and zero analytics, your seeds never leave your device. The algorithm truncates the SHA-256 hash to 128 bits and applies the correct version (5) and variant bits according to RFC 4122 — meaning the output is accepted by PostgreSQL, MySQL, MongoDB, Prisma, TypeORM, and every other system that understands UUIDs.

Thousands of developers already use this exact pattern to make Jest/Vitest snapshots stable, keep database fixtures consistent across environments, eliminate foreign-key mismatches in CI, and make end-to-end tests with Cypress or Playwright reliable. Whether you're writing unit tests, integration tests, or seeding production-like data for staging, deterministic UUIDs turn non-determinism from a bug into a solved problem.

The tool is open-source (MIT licensed), hosted on GitHub, and deliberately lightweight — no npm packages beyond SvelteKit and Bootstrap via CDN. It works offline after the first load and is designed to stay fast and simple forever.

In short: If you ever find yourself debugging a test failure that disappears when you re-run it, you probably need deterministic UUIDs. This tool gives them to you instantly.

How to Use

Four simple steps — and your tests become reproducible forever.

  1. Choose a meaningful seed.
    Use names that make sense in context: user-alice, order-2025-007, invoice-EU-042, session-happy-path. The clearer the seed, the easier debugging becomes.
  2. Generate the UUID here or in code.
    Paste the seed above → click Generate → copy the result. Or import the same generateDeterministicUUID function directly in your Node.js or browser tests (the algorithm is identical).
  3. Use the UUID everywhere you need stability.
    • Factory libraries (FactoryBot, Rosie)
    • Prisma / TypeORM / Sequelize seed files
    • Jest & Vitest setup files
    • Cypress/Playwright data attributes
    • Snapshot testing
    • Review-app databases
  4. Save the seed, not the UUID.
    Store the seed string in your documentation or constants file. Anyone on your team (or future you) can regenerate the exact same UUID instantly, without copying long hex strings.
Pro tip: Create a shared seeds.ts file in your repo with constants like
export const USER_ALICE = 'user-alice';
export const ORDER_2025_001 = 'order-2025-001';
Then every test uses await generateDeterministicUUID(USER_ALICE) — no more magic strings scattered around.

Once you adopt this pattern, flaky tests caused by random IDs disappear permanently. Your CI becomes greener, code reviews faster, and onboarding painless.

Frequently Asked Questions

No. This tool is intentionally deterministic and therefore not cryptographically secure. Use it only for testing, fixtures, and stable identifiers. For sessions, JWTs, password resets, etc., continue using crypto.randomUUID() or equivalent.

The probability is astronomically low — roughly 1 in 10³⁸ even after billions of records. For any realistic test suite (thousands to low millions of records) collisions are effectively impossible.

Never. All computation happens in your browser using the Web Crypto API. No network requests, no cookies, no analytics. Your data never leaves your device.

Yes! The algorithm is pure SHA-256 → truncate → set version/variant bits. You can copy the exact same logic into Node (using crypto.createHash('sha256')) and get bit-for-bit identical results.

You absolutely valid approach! This tool simply removes the namespace requirement so you have one less constant to manage. The output is functionally equivalent to UUIDv5 and accepted everywhere.

© 2026 AxelBase Crypto Price Target Calculator