TFT Rolldown Calculator
Estimate the gold and rerolls needed to find your desired Teamfight Tactics champions.
Results:
Enter your details and click "Calculate" to see the expected rerolls and gold cost.
Understanding TFT Rolldowns
In Teamfight Tactics (TFT), a "rolldown" refers to the strategic act of spending gold to refresh your shop (reroll) repeatedly in search of specific champions. This is a critical mechanic for upgrading champions to 2-star or 3-star, which significantly boosts their power and can be the cornerstone of your late-game composition.
How Rolldowns Work
Each time you reroll your shop, you spend 1 gold, and five new champions appear. The probability of finding champions of a certain cost (tier) depends heavily on your current player level. Higher levels unlock better chances for higher-cost champions, while lower levels favor 1-cost and 2-cost units. The total number of copies of each champion is finite and shared among all players in the game (the "champion pool").
Factors Influencing Rolldown Success
- Player Level: This is the most crucial factor. For example, at Level 7, you have a 40% chance to see 3-cost champions, but only a 1% chance for 5-cost champions. At Level 9, 4-cost champions have the highest probability (35%).
- Champion Tier (Cost): 1-cost champions have the most copies in the pool (29), making them easier to 3-star. 5-cost champions have the fewest (10), making them the hardest.
- Copies Already Owned: The more copies you already have, the fewer remain in the shared pool, making subsequent copies slightly harder to find.
- Opponent Holdings: While not factored into this simplified calculator, other players holding copies of your desired champion effectively reduces the available pool, making it harder for you to find them.
- Number of Unique Champions in Tier: Each tier has a set number of unique champions. The more unique champions in a tier, the more diluted the pool, making it harder to find a *specific* one.
Using the Calculator
This calculator provides an estimate of the expected number of rerolls and gold required to find a certain number of additional champion copies. It takes into account your current player level, the champion's cost, and how many copies you already possess. This can help you plan your economy and decide when to commit to a rolldown.
Important Considerations & Limitations
This calculator uses a simplified probability model to provide an expected value. Real-game scenarios can vary due to:
- Randomness: TFT is a game of chance. Expected values are averages; your actual experience may be better or worse.
- Opponent Influence: This calculator does not account for champions held by other players, which can significantly impact the remaining pool size.
- Dynamic Probabilities: As you find champions, the pool changes, slightly altering subsequent probabilities. This calculator uses an average probability per copy.
- Shop Lock: The calculator assumes continuous rerolling. Locking your shop to save champions is a valid strategy but not modeled here.
Use this tool as a guide to inform your strategic decisions, but always be prepared to adapt to the unpredictable nature of the game!
Example Rolldown Scenario:
Let's say you are Level 7, looking for 6 additional copies of a 3-cost champion (to 3-star it, assuming you already have 3 copies). You currently own 3 copies. The calculator would estimate:
- Player Level: 7
- Champion Cost: 3-Cost
- Additional Copies Needed: 6
- Copies You Already Own: 3
The calculator would then output an expected number of rerolls and gold cost based on these inputs, helping you decide if you have enough gold to commit to this rolldown.
function calculateRolldown() {
var playerLevel = parseInt(document.getElementById("playerLevel").value);
var championTier = parseInt(document.getElementById("championTier").value);
var copiesNeeded = parseInt(document.getElementById("copiesNeeded").value);
var copiesOwned = parseInt(document.getElementById("copiesOwned").value);
var resultDiv = document.getElementById("result");
// Validate inputs
if (isNaN(playerLevel) || isNaN(championTier) || isNaN(copiesNeeded) || isNaN(copiesOwned)) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
return;
}
if (playerLevel 10) {
resultDiv.innerHTML = "Player Level must be between 3 and 10.";
return;
}
if (championTier 5) {
resultDiv.innerHTML = "Champion Tier must be between 1 and 5.";
return;
}
if (copiesNeeded 9) {
resultDiv.innerHTML = "Additional Copies Needed must be between 1 and 9.";
return;
}
if (copiesOwned 9) {
resultDiv.innerHTML = "Copies Owned must be between 0 and 9.";
return;
}
// TFT Set 11 Probabilities and Pool Sizes
var levelProbabilities = [
// Lvl 1: [1-cost, 2-cost, 3-cost, 4-cost, 5-cost] – Levels 1 & 2 not used for rerolling
[100, 0, 0, 0, 0], // Level 1 (index 0)
[100, 0, 0, 0, 0], // Level 2 (index 1)
[75, 25, 0, 0, 0], // Level 3 (index 2)
[55, 30, 15, 0, 0], // Level 4 (index 3)
[45, 33, 20, 2, 0], // Level 5 (index 4)
[30, 40, 25, 5, 0], // Level 6 (index 5)
[19, 30, 40, 10, 1], // Level 7 (index 6)
[18, 25, 35, 18, 4], // Level 8 (index 7)
[10, 20, 25, 35, 10], // Level 9 (index 8)
[5, 10, 20, 40, 25] // Level 10 (index 9)
];
var championPoolSizes = [29, 22, 18, 12, 10]; // Total copies of a *single* champion (e.g., 29 Garen)
var uniqueChampionsPerTier = [13, 13, 13, 13, 10]; // Number of *different* champions in each tier
var tierProb = levelProbabilities[playerLevel – 1][championTier – 1] / 100;
var numUniqueChampsInTier = uniqueChampionsPerTier[championTier – 1];
var totalCopiesOfSpecificChamp = championPoolSizes[championTier – 1];
var remainingCopiesOfSpecificChamp = totalCopiesOfSpecificChamp – copiesOwned;
if (remainingCopiesOfSpecificChamp remainingCopiesOfSpecificChamp) {
resultDiv.innerHTML = "There are not enough copies left in the pool (" + remainingCopiesOfSpecificChamp + " available) to reach your target of " + (copiesOwned + copiesNeeded) + " copies.";
return;
}
if (tierProb === 0) {
resultDiv.innerHTML = "It's impossible to find a " + championTier + "-cost champion at Level " + playerLevel + ".";
return;
}
// Probability of finding *any* specific champion of this tier in one shop slot (base)
var probPerSlotBase = tierProb / numUniqueChampsInTier;
// Adjust probability based on remaining copies of the *specific* champion
// This scales down the base probability if the specific champion is rare in the pool
var effectiveProbPerSlot = probPerSlotBase * (remainingCopiesOfSpecificChamp / totalCopiesOfSpecificChamp);
// Probability of finding at least one copy in a single reroll (5 slots)
var probPerReroll = 1 – Math.pow((1 – effectiveProbPerSlot), 5);
if (probPerReroll 0 and remainingCopies > 0, but for safety
resultDiv.innerHTML = "Probability is too low to calculate expected rerolls. It's extremely unlikely to find this champion.";
return;
}
// Expected rerolls to find one copy
var expectedRerollsPerCopy = 1 / probPerReroll;
// Total expected rerolls for all needed copies
var totalExpectedRerolls = expectedRerollsPerCopy * copiesNeeded;
// Gold cost (1 gold per reroll)
var expectedGoldCost = totalExpectedRerolls * 1;
resultDiv.innerHTML =
"To find
" + copiesNeeded + " additional copies of a
" + championTier + "-cost champion at
Level " + playerLevel + " (with " + copiesOwned + " owned):" +
"Expected Rerolls:
" + totalExpectedRerolls.toFixed(2) + "" +
"Expected Gold Cost:
" + expectedGoldCost.toFixed(2) + "" +
"
Note: This is an expected average. Actual results may vary due to randomness and opponent holdings.";
}
.tft-rolldown-calculator {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #2a2a3a;
color: #e0e0e0;
border-radius: 8px;
padding: 25px;
max-width: 700px;
margin: 20px auto;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);
border: 1px solid #444;
}
.tft-rolldown-calculator h2,
.tft-rolldown-calculator h3 {
color: #76e2b3;
text-align: center;
margin-bottom: 20px;
font-weight: 600;
}
.tft-rolldown-calculator p {
line-height: 1.6;
margin-bottom: 10px;
}
.calculator-inputs .input-group {
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
.calculator-inputs label {
margin-bottom: 8px;
font-weight: bold;
color: #c0c0c0;
}
.calculator-inputs select,
.calculator-inputs input[type="number"] {
width: 100%;
padding: 10px 12px;
border: 1px solid #555;
border-radius: 5px;
background-color: #3a3a4a;
color: #e0e0e0;
font-size: 16px;
box-sizing: border-box;
-webkit-appearance: none; /* Remove default arrow for select on some browsers */
-moz-appearance: none;
appearance: none;
}
.calculator-inputs select:focus,
.calculator-inputs input[type="number"]:focus {
border-color: #76e2b3;
outline: none;
box-shadow: 0 0 0 2px rgba(118, 226, 179, 0.3);
}
.calculator-inputs button {
display: block;
width: 100%;
padding: 12px 20px;
background-color: #76e2b3;
color: #2a2a3a;
border: none;
border-radius: 5px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.2s ease;
margin-top: 20px;
}
.calculator-inputs button:hover {
background-color: #5cd8a0;
transform: translateY(-2px);
}
.calculator-results {
background-color: #3a3a4a;
border: 1px solid #555;
border-radius: 8px;
padding: 20px;
margin-top: 25px;
text-align: center;
}
.calculator-results h3 {
color: #76e2b3;
margin-top: 0;
margin-bottom: 15px;
}
.calculator-results p {
font-size: 1.1em;
color: #e0e0e0;
}
.calculator-results p strong {
color: #76e2b3;
}
.calculator-results .small-text {
font-size: 0.9em;
color: #a0a0a0;
margin-top: 15px;
}
.calculator-article {
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #444;
}
.calculator-article h3 {
color: #76e2b3;
text-align: left;
margin-bottom: 15px;
}
.calculator-article ul {
list-style-type: disc;
margin-left: 20px;
margin-bottom: 15px;
color: #c0c0c0;
}
.calculator-article ul li {
margin-bottom: 8px;
}
.calculator-article strong {
color: #76e2b3;
}
@media (max-width: 600px) {
.tft-rolldown-calculator {
padding: 15px;
margin: 10px auto;
}
.calculator-inputs button {
font-size: 16px;
padding: 10px 15px;
}
}