Farming rare weapons and armor sets in Elden Ring depends entirely on your Item Discovery stat and the enemy's specific Base Drop Rate. Unlike standard RNG, Elden Ring allows players to manipulate their luck significantly using stats and equipment. This calculator determines your exact probability of finding an item based on your current build.
The Formula: How Discovery Works
In Elden Ring, the math behind loot drops is straightforward but powerful. The formula for your adjusted drop rate is:
Adjusted Rate = Base Rate × (Total Discovery / 100)
For example, if a weapon has a base drop chance of 0.5% (like the Magma Blade) and you have 200 Discovery, your real drop chance becomes 1.0% per kill.
Components of Item Discovery
Your Total Discovery is calculated by summing up several sources:
Base Discovery: All characters start with a baseline of 100.
Arcane Stat: Every point of Arcane adds 1 point to Discovery. (e.g., 99 Arcane adds +99).
Silver Scarab: A talisman found in the Hidden Path to the Haligtree, granting a massive +75 flat bonus.
Silver Pickled Fowl Foot: A consumable item that boosts Discovery by +50 for 3 minutes.
Silver Tear Mask: A helm that increases Arcane by +8 (indirectly adding +8 Discovery).
Understanding "Kills Needed"
Drop rates in Elden Ring are probabilities, not guarantees. A 1% drop rate does not guarantee an item in 100 kills. This calculator uses binomial probability to estimate how many attempts you need for a specific confidence level:
50% Confidence: The number of kills where you have a statistical coin-flip chance of having seen the item at least once.
99% Confidence: The number of kills required to be virtually certain you will get the drop. This is the safest number to plan your farming session around.
Rare Item Base Rates Reference
Noble's Slender Sword: ~0.5%
Magma Blade: ~1.0%
Cleanrot Knight's Spear: ~1.0% – 2.0%
Iron Greatsword: ~2.0%
Celebrant's Rib-Rake: ~0.5%
function calculateDropRate() {
// 1. Get Inputs
var arcaneInput = document.getElementById('arcaneStat').value;
var baseRateInput = document.getElementById('baseDropRate').value;
// 2. Parse and Validate Inputs
var arcane = parseFloat(arcaneInput);
var baseRate = parseFloat(baseRateInput);
if (isNaN(arcane) || arcane 99) arcane = 99; // Cap arcane
if (isNaN(baseRate) || baseRate 100) adjustedRate = 100;
// 6. Calculate Probability (Binomial Distribution)
// N = log(1 – Confidence) / log(1 – P)
// P must be in decimal form (e.g. 1% = 0.01)
var p = adjustedRate / 100;
var kills50 = 0;
var kills90 = 0;
var kills99 = 0;
if (p >= 1) {
kills50 = 1;
kills90 = 1;
kills99 = 1;
} else if (p > 0) {
kills50 = Math.ceil(Math.log(1 – 0.50) / Math.log(1 – p));
kills90 = Math.ceil(Math.log(1 – 0.90) / Math.log(1 – p));
kills99 = Math.ceil(Math.log(1 – 0.99) / Math.log(1 – p));
} else {
kills50 = "∞";
kills90 = "∞";
kills99 = "∞";
}
// 7. Update UI
document.getElementById('displayDiscovery').innerText = totalDiscovery;
// Formatting adjusted rate: up to 3 decimals if small, otherwise 2
var displayRate = adjustedRate < 0.1 ? adjustedRate.toFixed(4) : adjustedRate.toFixed(2);
document.getElementById('displayAdjustedRate').innerText = displayRate + "%";
document.getElementById('kills50').innerText = kills50;
document.getElementById('kills90').innerText = kills90;
document.getElementById('kills99').innerText = kills99;
document.getElementById('resultsArea').style.display = 'block';
}