Thieving is one of the fastest skills to train in Old School RuneScape (OSRS), but it is also click-intensive (or tap-intensive on mobile). Whether you are aiming for the quest cape requirements, achievement diaries, or the coveted skill mastery cape at level 99, knowing exactly how many actions are required helps in planning your gaming sessions effectively.
Pro Tip: At higher levels, particularly with Ardougne Knights, obtaining the Rogue's Outfit is essential. While it doesn't increase XP rates, it doubles the loot you receive, making your training significantly more profitable.
Common Training Benchmarks
Most players follow a standard route to optimize experience rates per hour:
Levels 1-5: Pickpocket Men/Women. It's slow, but only takes a few minutes.
Levels 5-20: Bakery Stalls in the Ardougne market are safe and offer decent early XP.
Levels 20-55: Silk Stalls or Fruit Stalls. Fruit Stalls in the Great Kourend offer excellent XP for lower levels.
Levels 55-99: Ardougne Knights. This is the "meta" for most players. With the Ardougne Hard Diary completed, you stop failing these pickpockets at level 95, allowing for mindless clicking.
Alternative (Profit): Master Farmers (Level 38+) yield Ranarr seeds and other valuable herbs. Pickpocketing Elves (Level 85+) yields Enhanced Crystal Teleport Seeds but has a high failure rate.
How XP Calculation Works
The OSRS experience curve is exponential. The XP difference between Level 98 and Level 99 is roughly 1.2 million XP, which is greater than the total XP required to go from Level 1 to Level 75. This calculator uses the standard Runescape experience formula to determine the exact points needed for your desired level, then divides that by the specific XP granted by your chosen NPC or stall.
Blackjacking vs. Spam Clicking
For players seeking the absolute highest XP rates, "Blackjacking" Menaphite Thugs offers superior experience compared to Ardougne Knights, often exceeding 200,000 XP/hr. However, this method requires much more attention and rhythm. If you prefer a more relaxed approach (AFK style), Ardougne Knights remain the most popular choice despite the slightly lower experience rates.
// Function to handle the custom dropdown selection
function updateXpVal() {
var methodSelect = document.getElementById('thievingMethod');
var customDiv = document.getElementById('customXpDiv');
if (methodSelect.value === 'custom') {
customDiv.style.display = 'block';
} else {
customDiv.style.display = 'none';
}
}
// Standard OSRS XP Formula
// Points = floor(L + 300 * 2^(L/7))
// Output = floor(points / 4)
function getXpForLevel(level) {
if (level < 1) return 0;
var total = 0;
for (var i = 1; i < level; i++) {
total += Math.floor(i + 300 * Math.pow(2, i / 7.0));
}
return Math.floor(total / 4);
}
function calculateThieving() {
// Get Inputs
var currentLevelInput = document.getElementById('currentLevel');
var targetLevelInput = document.getElementById('targetLevel');
var methodSelect = document.getElementById('thievingMethod');
var customXpInput = document.getElementById('customXp');
var currentLevel = parseInt(currentLevelInput.value);
var targetLevel = parseInt(targetLevelInput.value);
// Validation
if (isNaN(currentLevel) || currentLevel 98) {
alert("Please enter a valid current level between 1 and 98.");
return;
}
if (isNaN(targetLevel) || targetLevel 99) {
alert("Please enter a target level higher than your current level (max 99).");
return;
}
// Determine XP per action
var xpPerAction = 0;
if (methodSelect.value === 'custom') {
xpPerAction = parseFloat(customXpInput.value);
if (isNaN(xpPerAction) || xpPerAction Target Level)
// 0% means you are at start level, 100% means at target.
// Actually, let's display simple progress: (Current XP / Target XP) * 100
var percentage = (currentTotalXp / totalXpForTarget) * 100;
if (percentage > 100) percentage = 100;
// Display Results
document.getElementById('xpDiffResult').innerText = xpNeeded.toLocaleString();
document.getElementById('actionsResult').innerText = actionsNeeded.toLocaleString();
document.getElementById('percentResult').innerText = percentage.toFixed(2) + "% of way to Level " + targetLevel;
document.getElementById('results-area').style.display = 'block';
}