Oversaturated Pools
≥ 100% saturation
Critical
95% – 99.99%
Saturation Threshold
k Parameter (nOpt)
Target pool count
Total Stake (k base)
45B − reserves
Stake Snapshot Epoch
How saturation is calculated: saturation_threshold = (max_supply − reserves) / k where max supply is 45B ADA, reserves come from db-sync's ada_pots table, and k (nOpt) from epoch_param. Each pool's saturation % = (pool_stake / saturation_threshold) × 100. (max_supply − reserves) is the ledger's total stake, not circulating supply — it still contains the treasury and undistributed rewards.
Pool stake: Sum of all epoch_stake rows for the pool in the newest completed snapshot that is not in the future — the snapshot for the epoch the chain is in (includes pledge + delegations). Two guards are needed. Completeness comes from epoch_stake_progress: db-sync pre-populates the next epoch's snapshot progressively while the current epoch runs, so reading the highest epoch_stake epoch directly would sum a partially written future snapshot and under-report every pool. Capping that at the chain epoch is the second: the newest completed snapshot is the one that becomes active next epoch, and using it put pools in the wrong status band.
Active vs live stake: The stake column is active stake — the snapshot the protocol is paying rewards on right now, which is what explorers show as active stake — not a live, second-by-second delegation total. It moves at epoch boundaries, not continuously, so a delegation change made this epoch will not appear here until the next boundary.
Max supply: Derived from ada_pots rather than hardcoded. Every lovelace sits in exactly one pot, so the columns sum to the 45B maximum supply by construction; the page checks that sum each time instead of taking the constant on trust.
Saturation threshold: Dynamically calculated each epoch from on-chain data — not a fixed number.
Impact: Pools above 100% still produce blocks, but total rewards are capped at the saturation level. Additional stake above that point dilutes rewards among more delegators without increasing the total payout.
Retirement filter: Truly retired pools are excluded using on-chain certificate ordering and the retirement epoch. A retirement certificate names a future epoch, so a pool that has merely announced one is still listed until that epoch arrives.
Caveat: Saturation is computed from the stake snapshot for the current epoch, the one the protocol is paying rewards on right now — the same figure explorers show as active stake. Stake moves at epoch boundaries, not continuously, so a delegation change made this epoch will not appear here until the next boundary. Reserves and k come from that same epoch. Always cross-check with cardanoscan.io or pool.pm before taking action. For fuller metrics on any pool listed here, see the GNP1 Delegator Tool (our own tool). Click any row for full pool details and explorer links.
Status labels: Oversaturated = ≥100% (rewards are actively diminished); Critical = 95–99.99% (very close to saturation); High = 80–94.99% (approaching saturation); Healthy = 50–79.99%. If your pool is oversaturated, consider redelegating to a smaller pool to maximise your rewards.

Ticker confidence: a normal ticker is current, its metadata fetched and matched against the pool's latest on-chain registration. A greyed ticker is last known, carried over from an earlier registration and possibly out of date. A greyed, shortened pool ID means the ticker is unavailable (the current metadata could not be retrieved) or that the pool has no registered metadata at all.
Before you use these results. These results may contain mistakes. This page is maintained by one person. If your pool is listed here and you believe the figure is wrong, or it disagrees with an independent explorer, treat the explorer as authoritative and tell us via the chat widget on this page. We will look into it and correct it. This page previously read the stake snapshot one epoch ahead of the chain, which labelled some pools oversaturated that were not; that is fixed, and we would rather hear about the next one early.
# Pool ID Ticker Name Active Stake (₳) Saturation Status Margin Fixed Cost (₳)
Loading data...
Loading saturation data...