Skip to content
Randomly.

A library of random generators

Randomness,
sourced from reality.

Drawn for this page load · Integers

4, 6, 24, 38, 44, 50

Atmospheric radio noise, sampled in Dublin moments ago. Check it yourself ↗

Every result carries a receipt like that one: the source, the moment, the proof. Reload this page and the numbers change, because the world did.

32
generators live
31 more specified
6
modules shipping
of 6 planned
10
entropy sources
wired and probed
0
API keys
no signup, ever
  • Operating System CSPRNG drawn fresh per request class A
  • ANU Quantum Vacuum class A
  • RANDOM.ORG Atmospheric radio noise, sampled in Dublin moments ago. class A
  • NIST Randomness Beacon class B
  • drand · League of Entropy class B
  • Bitcoin Proof-of-Work class B
  • USGS Seismic Feed class C
  • NOAA Space Weather class C
  • Live Weather class C
  • ISS Position class C

Values appear as each source gets drawn from. Nothing is fetched merely to fill this strip · what each one is worth → · the ticker lost its connection and is showing its last known values

Pick what you want to be random.

6 of 6 modules have something live in them: 32 generators built, 31 more specified and not written. The cards below keep the two apart, because a catalogue that counts unwritten code is just a wishlist.

Browse the library →

Collect, condition, generate.

Three steps, one of which is a single line of PHP. The honesty is in the middle one.

  1. 01

    Collect

    10 free, keyless sources: the kernel's own pool, a quantum optics bench in Canberra, atmospheric radio noise, a signed government beacon, a threshold signature network, ten minutes of global Bitcoin hashrate, and every earthquake on Earth in the last hour. Every call has a timeout and a circuit breaker; when one misses we fall back to the OS CSPRNG and mark the receipt degraded rather than pretending.

  2. 02

    Condition

    The exotic material supplies the story and a real contribution. Fresh CSPRNG bytes, the nanosecond clock and a counter supply uniqueness — which is what makes caching a 60-second beacon pulse safe without ever reusing a seed.

    ikm  = source ‖ random_bytes(32) ‖ hrtime() ‖ counter
    seed = hash_hkdf('sha256', ikm, 16, 'randomly.seed')
    source bytes OS csprng extract → PRK expand → seed
  3. 03

    Generate

    16 bytes and a token. The token is the seed, so a permalink recomputes the result instead of looking it up — which is why this site has no database. Change a parameter and you get a different answer from the same randomness; press Generate and you get new randomness. Two buttons, one lesson.

    info = randomly/v1|{generator}|v{n}|sha256(params)

Every result has a receipt.

This is the receipt for the numbers at the top of this page — not an example, the actual one, from this request.

Seed receipt Class A · Cryptographic
Source
RANDOM.ORG
Narrative
Atmospheric radio noise, sampled in Dublin moments ago.
Observed at
2026-09-13T18:14:45+00:00
Mixed with
csprng — always
Latency
284 ms
Entropy in
16 bytes
Duration
84 µs
Token
SN8Y0ZP8FK3T2HKE6D63CRPBDG

The same API we use.

There is no private API. This page's own hero went through the endpoints below. No authentication, no key, no signup — matching every source we draw from. Rate limited to 60 requests a minute per IP.

curl -s 'https://randomly.cluxnei.dev/api/v1/g/numbers.integers?count=6&min=1&max=60&unique=1' \
  -H 'Accept: text/plain'
4, 6, 24, 38, 44, 50
  • GET /api/v1/generators the catalogue, machine-readable
  • GET /api/v1/sources every source, status and class
  • POST /api/v1/generate one result plus its receipt
  • GET /api/v1/replay/{token} recompute a past result, bit-for-bit

A replay against a generator whose version has moved on answers 409 version_changed rather than quietly returning something different. Honest failure beats a silently different answer.