In Old School RuneScape (OSRS), pet drops are based on a "1 in X" chance per kill. This OSRS Pet Drop Rate Calculator uses binomial distribution logic to determine the probability of you having received the pet at least once given your current Kill Count (KC).
How the Math Works
The probability of not getting a pet in a single kill is: (X - 1) / X. When you kill a boss multiple times (K), the probability of not getting the pet after all those kills is: ((X - 1) / X) ^ K. Therefore, the chance of getting the pet at least once is 1 - ((X - 1) / X) ^ K.
Common Drop Rate Examples:
Vorki (Vorkath): 1/3,000
Prince Black Dragon (KBD): 1/3,000
Pet Snakeling (Zulrah): 1/4,000
TzRek-Jad (Fight Caves): 1/200 (on task, gambling cape) or 1/100 (if sacrificing)
Olmlet (Chambers of Xeric): ~1/53 per purple (roughly 1/1,000 to 1/2,000 depending on points)
The "Drop Rate" Myth
Reaching the exact drop rate (e.g., 3,000 KC for a 1/3,000 drop) does not guarantee the item. Mathematically, you only have about a 63.2% chance of having received the pet by the time you reach the "on-rate" kill count. To reach a 99% statistical likelihood of the pet, you often need to go nearly 5 times the drop rate!
function calculatePetChance() {
var rate = parseFloat(document.getElementById('dropRate').value);
var kc = parseFloat(document.getElementById('killCount').value);
var resultDiv = document.getElementById('petResult');
if (isNaN(rate) || isNaN(kc) || rate <= 0 || kc < 0) {
resultDiv.style.display = 'block';
resultDiv.innerHTML = 'Please enter valid numbers for both Drop Rate and Kill Count.';
return;
}
// Formula: 1 – ((rate – 1) / rate) ^ kc
var probNotGetting = Math.pow(((rate – 1) / rate), kc);
var probGetting = 1 – probNotGetting;
var percentage = (probGetting * 100).toFixed(2);
var luckMessage = "";
if (percentage < 10) {
luckMessage = "You are just getting started! Keep grinding.";
} else if (percentage < 50) {
luckMessage = "You are still below the 50/50 mark. Keep going!";
} else if (percentage < 63.2) {
luckMessage = "You are approaching the drop rate. Almost there!";
} else if (percentage < 90) {
luckMessage = "You are officially 'Dry'. Most people would have it by now!";
} else {
luckMessage = "You are extremely dry! The RNG gods owe you one.";
}
resultDiv.style.display = 'block';
resultDiv.innerHTML = '
Results
' +
'Probability of pet: ' + percentage + '%' +
'Chance of being this dry: ' + (100 – percentage).toFixed(2) + '%' +
" + luckMessage + ";
}