Runecrafting Calculator Osrs

OSRS Runecrafting Calculator

Plan your Runecrafting journey in Old School RuneScape. This calculator helps you estimate the XP, essences, time, and potential profit or loss required to reach your desired Runecrafting level.

Air Rune (Level 1) Mind Rune (Level 2) Water Rune (Level 5) Earth Rune (Level 9) Fire Rune (Level 14) Body Rune (Level 20) Cosmic Rune (Level 27) Chaos Rune (Level 35) Astral Rune (Level 40) Nature Rune (Level 44) Law Rune (Level 54) Death Rune (Level 65) Blood Rune (Level 77) Soul Rune (Level 90) Wrath Rune (Level 95)
Pure Essence Daeyalt Essence (+50% XP, 1 rune/essence) Guardian Essence (+10% XP)
Includes inventory, pouches, colossal pouch. Max 84 for pure/daeyalt, 100 for guardian.
Estimate round trip time to altar and back to bank.

Understanding Runecrafting in OSRS

Runecrafting is one of the most unique and often challenging skills in Old School RuneScape. It involves crafting various elemental and catalytic runes from Rune Essence or Pure Essence at specific altars scattered across Gielinor. While it can be a slow skill to train, it's also one of the most consistently profitable, especially at higher levels.

How Runecrafting Works

To craft runes, players must first obtain Rune Essence or Pure Essence. Pure Essence is required for all altars except the Air altar, and it's the primary essence used for training. Players then take their essence to the corresponding altar (e.g., Air altar for Air runes, Nature altar for Nature runes) and use the essence on the altar to craft runes.

The number of runes crafted per essence increases with your Runecrafting level. For example, at level 1, you craft 1 Air rune per essence. At level 11, you craft 2 Air runes per essence, and so on, up to 10 runes per essence at level 99 for Air runes. This multiplier is crucial for both XP rates and profit.

Essence Types

  • Pure Essence: The standard essence, used for most altars.
  • Daeyalt Essence: Obtained from the Daeyalt Mine. It provides 50% more experience per essence but only crafts 1 rune per essence, regardless of your Runecrafting level. This makes it excellent for pure XP training but terrible for profit.
  • Guardian Essence: Obtained from the Guardians of the Rift minigame. It provides 10% more experience per essence and uses the standard rune multiplier, making it a good balance between XP and profit.

Pouches and Inventory Management

To maximize essences per trip, players use various Runecrafting pouches (small, medium, large, giant, colossal) which can hold additional essence. These pouches degrade and must be repaired by the Dark Mage in the Abyss or by using the NPC Contact spell.

The Colossal Pouch, obtained from Guardians of the Rift, is a significant upgrade, holding 40 essence and not degrading.

Profit vs. XP

Runecrafting often presents a trade-off between experience per hour and profit per hour. Methods like crafting Nature runes or Blood runes are highly profitable but may offer lower XP rates than methods like Daeyalt essence training or ZMI (Ourania) altar. This calculator helps you weigh these factors based on your goals.

Using the Calculator

Input your current and target Runecrafting levels, select the rune and essence type you plan to use, and estimate your essences carried per trip and time per trip. The calculator will then provide estimates for total XP needed, essences required, trips, time, and potential profit or loss.

// OSRS XP Table (levels 1-99) var xpTable = [ 0, // Level 0 (not used) 0, // Level 1 83, // Level 2 174, // Level 3 276, // Level 4 388, // Level 5 512, // Level 6 650, // Level 7 801, // Level 8 969, // Level 9 1154, // Level 10 1358, // Level 11 1584, // Level 12 1833, // Level 13 2107, // Level 14 2406, // Level 15 2731, // Level 16 3084, // Level 17 3466, // Level 18 3879, // Level 19 4328, // Level 20 4818, // Level 21 5351, // Level 22 5928, // Level 23 6557, // Level 24 7240, // Level 25 7981, // Level 26 8780, // Level 27 9646, // Level 28 10585, // Level 29 11604, // Level 30 12710, // Level 31 13911, // Level 32 15217, // Level 33 16636, // Level 34 18180, // Level 35 19860, // Level 36 21683, // Level 37 23661, // Level 38 25803, // Level 39 28125, // Level 40 30640, // Level 41 33364, // Level 42 36311, // Level 43 39502, // Level 44 42955, // Level 45 46686, // Level 46 50717, // Level 47 55069, // Level 48 59766, // Level 49 64834, // Level 50 70300, // Level 51 76190, // Level 52 82534, // Level 53 89360, // Level 54 96700, // Level 55 104583, // Level 56 113047, // Level 57 122129, // Level 58 131872, // Level 59 142360, // Level 60 153622, // Level 61 165705, // Level 62 178679, // Level 63 192626, // Level 64 207600, // Level 65 223661, // Level 66 240891, // Level 67 259356, // Level 68 279147, // Level 69 300363, // Level 70 323114, // Level 71 347502, // Level 72 373638, // Level 73 401660, // Level 74 431711, // Level 75 463912, // Level 76 498391, // Level 77 535251, // Level 78 574631, // Level 79 616605, // Level 80 661283, // Level 81 708808, // Level 82 759376, // Level 83 813154, // Level 84 870297, // Level 85 930971, // Level 86 995341, // Level 87 1063573, // Level 88 1135873, // Level 89 1212421, // Level 90 1293443, // Level 91 1379196, // Level 92 1469956, // Level 93 1565974, // Level 94 1667507, // Level 95 1774877, // Level 96 1888360, // Level 97 2008286, // Level 98 2134969, // Level 99 2268730, // Level 100 (for calculation purposes, if needed) 2409900, // Level 101 2558815, // Level 102 2715815, // Level 103 2881269, // Level 104 3055590, // Level 105 3239208, // Level 106 3432576, // Level 107 3636161, // Level 108 3850446, // Level 109 4075933, // Level 110 4313143, // Level 111 4562613, // Level 112 4824892, // Level 113 5090500, // Level 114 5370000, // Level 115 5663000, // Level 116 5970000, // Level 117 6292000, // Level 118 6629000, // Level 119 6982000, // Level 120 7352000, // Level 121 7739000, // Level 122 8145000, // Level 123 8570000, // Level 124 9015000, // Level 125 9481000, // Level 126 9968000, // Level 127 10478000, // Level 128 11011000, // Level 129 11568000, // Level 130 12150000, // Level 131 12758000, // Level 132 13393000 // Level 133 ]; // Rune data: base XP, and an array of [level, multiplier] for runes per essence var runeData = { "air": { xp: 5, multipliers: [[1, 1], [11, 2], [22, 3], [33, 4], [44, 5], [55, 6], [66, 7], [77, 8], [88, 9], [99, 10]] }, "mind": { xp: 5.5, multipliers: [[1, 1], [14, 2], [28, 3], [42, 4], [56, 5], [70, 6], [84, 7], [98, 8]] }, "water": { xp: 6, multipliers: [[1, 1], [19, 2], [38, 3], [57, 4], [76, 5], [95, 6]] }, "earth": { xp: 6.5, multipliers: [[1, 1], [26, 2], [52, 3], [78, 4]] }, "fire": { xp: 7, multipliers: [[1, 1], [35, 2], [70, 3]] }, "body": { xp: 7.5, multipliers: [[1, 1], [46, 2], [92, 3]] }, "cosmic": { xp: 8, multipliers: [[1, 1], [59, 2]] }, "chaos": { xp: 8.5, multipliers: [[1, 1], [74, 2]] }, "astral": { xp: 8.5, multipliers: [[1, 1], [82, 2]] }, "nature": { xp: 9, multipliers: [[1, 1], [91, 2]] }, "law": { xp: 9.5, multipliers: [[1, 1]] }, "death": { xp: 10, multipliers: [[1, 1]] }, "blood": { xp: 10.5, multipliers: [[1, 1]] }, "soul": { xp: 11, multipliers: [[1, 1]] }, "wrath": { xp: 11.5, multipliers: [[1, 1]] } }; // Helper function to get XP for a given level function getXPForLevel(level) { if (level 99) return 0; return xpTable[level]; } // Helper function to get runes per essence based on rune type and level function getRunesPerEssence(runeType, level) { var data = runeData[runeType]; if (!data) return 0; var multiplier = 1; // Default to 1 rune per essence for (var i = 0; i = data.multipliers[i][0]) { multiplier = data.multipliers[i][1]; } else { break; // Multipliers are sorted by level, so we can stop } } return multiplier; } // Main calculation function function calculateRunecrafting() { // Get input values var currentLevel = parseInt(document.getElementById("currentLevel").value); var targetLevel = parseInt(document.getElementById("targetLevel").value); var runeType = document.getElementById("runeType").value; var essenceType = document.getElementById("essenceType").value; var essencesPerTrip = parseInt(document.getElementById("essencesPerTrip").value); var timePerTrip = parseInt(document.getElementById("timePerTrip").value); // in seconds var essenceCost = parseFloat(document.getElementById("essenceCost").value); var runeSellPrice = parseFloat(document.getElementById("runeSellPrice").value); var resultDiv = document.getElementById("runecraftingResult"); resultDiv.innerHTML = ""; // Clear previous results // Input validation if (isNaN(currentLevel) || currentLevel 99 || isNaN(targetLevel) || targetLevel 99 || isNaN(essencesPerTrip) || essencesPerTrip < 1 || isNaN(timePerTrip) || timePerTrip < 1 || isNaN(essenceCost) || essenceCost < 0 || isNaN(runeSellPrice) || runeSellPrice = targetLevel) { resultDiv.innerHTML = "Target level must be higher than your current level."; return; } // Get XP for current and target levels var currentXP = getXPForLevel(currentLevel); var targetXP = getXPForLevel(targetLevel); var totalXPNeeded = targetXP – currentXP; // Determine base XP per essence and runes per essence based on selected type var baseRuneXP = runeData[runeType].xp; var runesPerEssenceMultiplier = getRunesPerEssence(runeType, currentLevel); // Use current level for multiplier var xpPerEssence; var actualRunesPerEssence; if (essenceType === "daeyalt") { xpPerEssence = baseRuneXP * 1.5; // Daeyalt gives 50% more XP actualRunesPerEssence = 1; // Daeyalt always crafts 1 rune per essence } else if (essenceType === "guardian") { xpPerEssence = baseRuneXP * runesPerEssenceMultiplier * 1.1; // Guardian gives 10% more XP actualRunesPerEssence = runesPerEssenceMultiplier; // Guardian uses standard multipliers } else { // pure essence xpPerEssence = baseRuneXP * runesPerEssenceMultiplier; actualRunesPerEssence = runesPerEssenceMultiplier; } // Calculate total essences needed var totalEssencesNeeded = Math.ceil(totalXPNeeded / xpPerEssence); // Calculate total trips needed var totalTripsNeeded = Math.ceil(totalEssencesNeeded / essencesPerTrip); // Calculate total time needed var totalTimeSeconds = totalTripsNeeded * timePerTrip; var totalTimeMinutes = totalTimeSeconds / 60; var totalTimeHours = totalTimeMinutes / 60; // Calculate XP per hour var tripsPerHour = (3600 / timePerTrip); // 3600 seconds in an hour var xpPerHour = tripsPerHour * essencesPerTrip * xpPerEssence; // Calculate profit/loss var totalEssenceCost = totalEssencesNeeded * essenceCost; var totalCraftedRunes = totalEssencesNeeded * actualRunesPerEssence; var totalRuneRevenue = totalCraftedRunes * runeSellPrice; var totalProfitLoss = totalRuneRevenue – totalEssenceCost; var profitLossPerHour = (totalRuneRevenue / totalTimeHours) – (totalEssenceCost / totalTimeHours); if (totalTimeHours === 0) profitLossPerHour = 0; // Avoid division by zero if time is negligible // Display results var resultsHTML = "

Calculation Results:

"; resultsHTML += "XP Needed: " + totalXPNeeded.toLocaleString() + ""; resultsHTML += "Essences Required: " + totalEssencesNeeded.toLocaleString() + ""; resultsHTML += "Trips Required: " + totalTripsNeeded.toLocaleString() + ""; resultsHTML += "Time Required: " + Math.floor(totalTimeHours) + " hours, " + Math.round(totalTimeMinutes % 60) + " minutes"; resultsHTML += "Estimated XP per Hour: " + Math.round(xpPerHour).toLocaleString() + ""; resultsHTML += "Total Crafted Runes: " + totalCraftedRunes.toLocaleString() + ""; resultsHTML += "Total Essence Cost: " + totalEssenceCost.toLocaleString() + " GP"; resultsHTML += "Total Rune Revenue: " + totalRuneRevenue.toLocaleString() + " GP"; resultsHTML += "Total Profit/Loss: " + totalProfitLoss.toLocaleString() + " GP"; resultsHTML += "Profit/Loss per Hour: " + Math.round(profitLossPerHour).toLocaleString() + " GP"; resultDiv.innerHTML = resultsHTML; }

Leave a Reply

Your email address will not be published. Required fields are marked *