OSRS Chinning Calculator
Chinning is one of the fastest methods to train Ranged in Old School RuneScape, particularly effective in multi-combat areas like the Ape Atoll or Monkey Madness 2 caves. This calculator helps you estimate the number of chinchompas and prayer potions needed, along with the total cost and experience gains, to reach your desired Ranged level.
How Chinning Works
Chinchompas are throwable weapons that explode on impact, dealing damage to multiple enemies in a small radius. This makes them incredibly efficient for gaining Ranged experience when used against large groups of low-defence monsters. The most popular location for chinning is the northern chamber of the Ape Atoll Dungeon (after Monkey Madness 2), where up to 9 maniacal monkeys can be stacked and hit simultaneously.
Key Factors for Efficient Chinning
- Location: Monkey Madness 2 caves (northern chamber) are optimal due to the high density of maniacal monkeys (up to 9 targets).
- Equipment:
- Void Knight Ranged Set: Provides a 10% accuracy and 10% damage bonus, significantly boosting XP rates. This is almost always recommended.
- Ava's Accumulator/Attractor: Helps conserve chinchompas by retrieving some after they are thrown.
- Blessing/God Book: For prayer bonus.
- Archers' Ring (i): For Ranged attack bonus.
- Prayers:
- Rigour: The highest Ranged prayer, offering +20% Ranged accuracy and damage. Essential for maximizing XP.
- Eagle Eye: A lower-level alternative (+10% Ranged accuracy and damage) if Rigour is not unlocked.
- Chinchompa Type:
- Red Chinchompas: Cheaper, lower base XP per hit.
- Black Chinchompas: More expensive, higher base XP per hit. Generally preferred for faster XP rates if budget allows.
- Attack Style: Always use "Rapid" for maximum attack speed.
Using the Calculator
Input your current and target Ranged levels, prayer level, chinchompa type, and current market prices for chinchompas and prayer potions. Select whether you'll be using the full Void Ranged set and which Ranged prayer you'll activate. The calculator will then provide estimates for total chinchompas, prayer potions, total cost, and XP rates.
Example Calculation
Let's say you want to go from Ranged level 90 to 99. You have 70 Prayer, plan to use Black Chinchompas (2,000 GP each) and Prayer Potions (4) (10,000 GP each). You'll be using a full Void Ranged set and Rigour prayer in the Monkey Madness 2 caves (9 targets).
- Current Ranged Level: 90
- Target Ranged Level: 99
- Prayer Level: 70
- Chinchompa Type: Black
- Chinchompa Price: 2,000 GP
- Prayer Potion (4) Price: 10,000 GP
- Using Full Void Ranged Set: Yes
- Using Rigour Prayer: Yes
Based on these inputs, the calculator would estimate:
- Total XP Needed: ~8,000,000 XP
- XP per Chinchompa: ~1,300 XP
- Total Chinchompas Needed: ~6,150
- Total Prayer Potions Needed: ~150 (4-dose)
- Total Cost: ~130,000,000 GP
- Estimated Time: ~5.5 hours
Note: These are estimates. Actual results may vary based on game updates, market prices, and individual efficiency.
.osrs-chinning-calculator-container { font-family: 'Arial', sans-serif; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 8px; padding: 20px; max-width: 800px; margin: 20px auto; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .osrs-chinning-calculator-container h2, .osrs-chinning-calculator-container h3 { color: #333; text-align: center; margin-bottom: 15px; } .osrs-chinning-calculator-container p { line-height: 1.6; margin-bottom: 10px; color: #555; } .osrs-chinning-calculator-container ul { margin-bottom: 15px; padding-left: 20px; color: #555; } .osrs-chinning-calculator-container ul li { margin-bottom: 5px; } .calculator-form { background-color: #fff; border: 1px solid #eee; border-radius: 5px; padding: 20px; margin-top: 20px; } .form-group { margin-bottom: 15px; display: flex; flex-direction: column; } .form-group label { margin-bottom: 5px; font-weight: bold; color: #444; } .form-group input[type="number"], .form-group select { padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; width: 100%; box-sizing: border-box; } .checkbox-group { flex-direction: row; align-items: center; } .checkbox-group input[type="checkbox"] { margin-right: 10px; width: auto; } .calculator-form button { background-color: #4CAF50; color: white; padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 18px; width: 100%; box-sizing: border-box; margin-top: 10px; } .calculator-form button:hover { background-color: #45a049; } .calculator-result { margin-top: 20px; padding: 15px; border: 1px solid #d4edda; background-color: #d4edda; border-radius: 5px; color: #155724; font-size: 1.1em; line-height: 1.8; } .calculator-result p { margin: 5px 0; color: #155724; } .calculator-result strong { color: #0e3a17; } var xpTable = [ 0, 0, 83, 174, 276, 388, 512, 650, 801, 969, 1154, 1358, 1584, 1833, 2107, 2406, 2731, 3084, 3466, 3879, 4328, 4818, 5351, 5928, 6557, 7240, 7982, 8783, 9646, 10573, 11567, 12632, 13772, 14991, 16292, 17679, 19155, 20724, 22394, 24168, 26056, 28059, 30184, 32443, 34845, 37398, 40107, 42980, 46024, 49248, 52667, 56291, 60133, 64208, 68527, 73096, 77927, 83025, 88402, 94069, 100039, 106323, 112935, 119887, 127188, 134857, 142908, 151351, 160199, 169468, 179171, 189321, 199933, 211026, 222614, 234711, 247333, 260495, 274210, 288497, 303374, 318859, 334970, 351721, 369128, 387198, 405942, 425373, 445500, 466338, 487900, 510200, 533252, 557072, 581676, 607083, 633309, 660373, 688291, 717088, 746786, 777408, 808976, 841511, 875037, 909578, 945159, 981806, 1019541, 1058391, 1098374, 1139516, 1181839, 1225364, 1270113, 1316108, 1363377, 1411946, 1461836, 1513073, 1565681, 1619685, 1675108, 1731979, 1790326, 1850175, 1911551, 1974481, 2038994, 2105116, 2172876, 2242306, 2313436, 2386294, 2460914, 2537325, 2615557, 2695642, 2777610, 2861491, 2947317, 3035120, 3124930, 3216779, 3310704, 3406739, 3504911, 3605250, 3707783, 3812540, 3919550, 4028845, 4140454, 4254406, 4370730, 4489457, 4610619, 4734245, 4860366, 4988999, 5120176, 5253925, 5390272, 5529245, 5670874, 5815187, 5962214, 6111985, 6264529, 6419877, 6578063, 6739116, 6903067, 7069947, 7239788, 7412620, 7588475, 7767384, 7949378, 8134489, 8322748, 8514187, 8708838, 8906736, 9107914, 9312402, 9520234, 9731440, 9946051, 10164099, 10385618, 10610641, 10839200, 11071325, 11307048, 11546404, 11789426, 12036149, 12286609, 12540844, 12798892, 13060794 ]; function calculateChinning() { var currentRangedLevel = parseFloat(document.getElementById('currentRangedLevel').value); var targetRangedLevel = parseFloat(document.getElementById('targetRangedLevel').value); var prayerLevel = parseFloat(document.getElementById('prayerLevel').value); var chinchompaType = document.getElementById('chinchompaType').value; var chinchompaPrice = parseFloat(document.getElementById('chinchompaPrice').value); var prayerPotionPrice = parseFloat(document.getElementById('prayerPotionPrice').value); var voidSet = document.getElementById('voidSet').checked; var rigourPrayer = document.getElementById('rigourPrayer').checked; var eagleEyePrayer = document.getElementById('eagleEyePrayer').checked; var resultDiv = document.getElementById('chinningResult'); resultDiv.innerHTML = "; // Clear previous results // Input validation if (isNaN(currentRangedLevel) || currentRangedLevel 98) { resultDiv.innerHTML = 'Please enter a valid Current Ranged Level (1-98).'; return; } if (isNaN(targetRangedLevel) || targetRangedLevel 99) { resultDiv.innerHTML = 'Please enter a valid Target Ranged Level (2-99).'; return; } if (currentRangedLevel >= targetRangedLevel) { resultDiv.innerHTML = 'Target Ranged Level must be higher than Current Ranged Level.'; return; } if (isNaN(prayerLevel) || prayerLevel 99) { resultDiv.innerHTML = 'Please enter a valid Prayer Level (1-99).'; return; } if (isNaN(chinchompaPrice) || chinchompaPrice < 0) { resultDiv.innerHTML = 'Please enter a valid Chinchompa Price (GP).'; return; } if (isNaN(prayerPotionPrice) || prayerPotionPrice < 0) { resultDiv.innerHTML = 'Please enter a valid Prayer Potion Price (GP).'; return; } // XP Calculation var baseXPPerHit = (chinchompaType === 'red') ? 100 : 110; // Red vs Black chins var targetsHit = 9; // Standard for MM2 caves var voidBonus = voidSet ? 0.10 : 0; // 10% XP bonus from Void var prayerBonus = 0; var prayerDrainRatePerMinute = 0; if (rigourPrayer) { prayerBonus = 0.20; // 20% XP bonus from Rigour prayerDrainRatePerMinute = 6.5; } else if (eagleEyePrayer) { prayerBonus = 0.10; // 10% XP bonus from Eagle Eye prayerDrainRatePerMinute = 4.5; } var xpPerChinchompa = baseXPPerHit * targetsHit * (1 + voidBonus) * (1 + prayerBonus); // Total XP Needed var currentTotalXP = xpTable[Math.floor(currentRangedLevel)]; var targetTotalXP = xpTable[Math.floor(targetRangedLevel)]; var totalXPNeeded = targetTotalXP – currentTotalXP; // Chinchompas Needed var totalChinchompasNeeded = Math.ceil(totalXPNeeded / xpPerChinchompa); // Prayer Potion Calculation var prayerPointsPerDose = Math.floor(prayerLevel / 4) + 7; var chinsPerHour = 1100; // Estimated chins thrown per hour var totalHoursChinning = totalChinchompasNeeded / chinsPerHour; var totalMinutesChinning = totalHoursChinning * 60; var totalPrayerPointsDrained = totalMinutesChinning * prayerDrainRatePerMinute; var totalPrayerPotionDoses = totalPrayerPointsDrained / prayerPointsPerDose; var totalPrayerPotions = Math.ceil(totalPrayerPotionDoses / 4); // 4 doses per potion // Cost Calculation var totalChinchompaCost = totalChinchompasNeeded * chinchompaPrice; var totalPrayerPotionCost = totalPrayerPotions * prayerPotionPrice; var totalCost = totalChinchompaCost + totalPrayerPotionCost; // XP per Hour & Cost per XP var xpPerHour = xpPerChinchompa * chinsPerHour; var costPerXP = totalCost / totalXPNeeded; // Format numbers for display function formatNumber(num) { return num.toLocaleString(undefined, { maximumFractionDigits: 0 }); } resultDiv.innerHTML = 'Results:' + 'Total XP Needed: ' + formatNumber(totalXPNeeded) + ' XP' + 'XP per Chinchompa: ' + formatNumber(xpPerChinchompa) + ' XP' + 'Total Chinchompas Needed: ' + formatNumber(totalChinchompasNeeded) + '' + 'Total Prayer Potions (4-dose) Needed: ' + formatNumber(totalPrayerPotions) + '' + 'Total Cost: ' + formatNumber(totalCost) + ' GP' + 'Estimated XP per Hour: ' + formatNumber(xpPerHour) + ' XP/hr' + 'Estimated Cost per XP: ' + formatNumber(costPerXP) + ' GP/XP' + 'Estimated Time to Target Level: ' + totalHoursChinning.toFixed(1) + ' hours'; }