Skip to content
Randomly.

A library of random generators

Randomness,
sourced from reality.

Drawn for this page load · Integers

14, 26, 28, 30, 34, 45

drand round 6,593,017 — no single operator could have predicted this value. Check it yourself ↗

See how this one was made →

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. So does the field drawn behind this headline — it is the same sixteen bytes, expanded down a different path and handed to your browser to draw.

63
generators live
every one specified is built
6
modules shipping
all six
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 — class A
  • NIST Randomness Beacon — class B
  • drand · League of Entropy drand round 6,593,017 — no single operator could have predicted this value. 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.

63 generators across all 6 modules, and nothing on this page is a promise — every generator the design documents specified is written and running. The catalogue never counted unwritten code, which is why the number took a while to get here.

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 B · Public beacon
Source
drand · League of Entropy
Narrative
drand round 6,593,017 — no single operator could have predicted this value.
Observed at
2026-10-28T21:05:31+00:00
Mixed with
csprng — always
Latency
291 ms
Entropy in
16 bytes
Duration
334 µs
Token
5RV2RH3NS37ST8H1M1DR8JQBJG

Published openly — anyone can look this value up after the fact.

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'
14, 26, 28, 30, 34, 45
  • 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.