Fpl Calculator

Fantasy Premier League (FPL) Player Points Predictor

Use this calculator to estimate a player's potential FPL points for an upcoming gameweek based on various performance metrics and their role in your squad. This tool helps you compare player value and make informed transfer decisions.

Goalkeeper (GK) Defender (DEF) Midfielder (MID) Forward (FWD)
?
?
?
?
?
?
?
No Yes (Double Points)

Understanding FPL Player Points

Fantasy Premier League (FPL) is a popular fantasy football game where participants select a squad of 15 real-life Premier League players. These players earn points based on their actual performances in matches. The goal is to accumulate as many points as possible throughout the season.

How FPL Points Are Scored:

  • Playing Time: Players earn 1 point for playing between 1 and 59 minutes, and 2 points for playing 60 minutes or more.
  • Goals Scored:
    • Goalkeeper/Defender: 6 points
    • Midfielder: 5 points
    • Forward: 4 points
  • Assists: 3 points for all positions.
  • Clean Sheets (60+ minutes played):
    • Goalkeeper/Defender: 4 points
    • Midfielder: 1 point
  • Bonus Points: 1-3 points awarded to the top-performing players in a match based on a Bonus Point System (BPS).
  • Goalkeeper Saves: 1 point for every 3 saves.
  • Penalty Saves (Goalkeeper): 5 points.

Negative Points:

  • Goals Conceded (Goalkeeper/Defender): -1 point for every 2 goals conceded after the first.
  • Yellow Card: -1 point.
  • Red Card: -3 points.
  • Own Goal: -2 points.
  • Penalty Miss: -2 points.

Captaincy and Chips:

One player can be selected as captain each gameweek, whose points are doubled. Various "chips" like Triple Captain (captain's points tripled), Bench Boost (all bench players score points), Free Hit (one-off free transfers for a gameweek), and Wildcard (unlimited free transfers) can significantly impact scores.

How to Use the FPL Player Points Predictor:

This calculator allows you to input your best estimates for a player's performance in an upcoming gameweek. By adjusting the "Expected" values, you can simulate different scenarios and compare potential returns from various players.

  1. Player Price: Enter the player's current FPL price. This is used to calculate "Points Per Million" (PPM), a key value metric.
  2. Player Position: Select the player's position, as goal and clean sheet points vary.
  3. Expected Minutes Played: Estimate how many minutes the player will feature.
  4. Expected Goals/Assists: Use statistics, form, and fixture difficulty to estimate their attacking returns. These can be fractional (e.g., 0.5 for a 50% chance of scoring).
  5. Expected Clean Sheet Probability: Assess the likelihood of their team keeping a clean sheet.
  6. Expected Bonus Points: Consider the player's history of earning bonus points.
  7. Expected Negative Points: Estimate the likelihood of yellow cards, red cards, or own goals.
  8. Is Captain?: Select 'Yes' if you plan to captain this player for double points.

The calculator will then provide an "Expected Gameweek Points" total and a "Points Per Million" (PPM) value, helping you identify potential FPL gems.

Example Calculation:

Let's consider a hypothetical midfielder for an upcoming gameweek:

  • Player Price: £8.0m
  • Player Position: Midfielder (MID)
  • Expected Minutes Played: 90
  • Expected Goals Scored: 0.4
  • Expected Assists Made: 0.3
  • Expected Clean Sheet Probability: 20%
  • Expected Bonus Points: 0.8
  • Expected Yellow Cards: 0.1
  • Expected Red Cards: 0
  • Expected Own Goals: 0
  • Is Captain?: No

Calculation Breakdown:

  • Appearance: 2 points (for 90 minutes)
  • Goals: 0.4 goals * 5 points/goal (MID) = 2.0 points
  • Assists: 0.3 assists * 3 points/assist = 0.9 points
  • Clean Sheet: 20% probability * 1 point/clean sheet (MID) = 0.2 points
  • Bonus Points: 0.8 points
  • Yellow Cards: 0.1 cards * -1 point/card = -0.1 points
  • Red Cards: 0 points
  • Own Goals: 0 points
  • Total Expected Points: 2 + 2.0 + 0.9 + 0.2 + 0.8 – 0.1 = 5.8 points
  • Points Per Million (PPM): 5.8 points / £8.0m = 0.725 PPM

This example demonstrates how the calculator combines various factors to give you a comprehensive point estimate.

.fpl-calculator-container { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 8px; padding: 20px; max-width: 700px; margin: 20px auto; box-shadow: 0 4px 8px rgba(0,0,0,0.05); color: #333; } .fpl-calculator-container h2, .fpl-calculator-container h3, .fpl-calculator-container h4 { color: #0056b3; margin-top: 20px; margin-bottom: 15px; border-bottom: 1px solid #eee; padding-bottom: 5px; } .fpl-calculator-container p { line-height: 1.6; margin-bottom: 10px; } .fpl-calculator-form { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 20px; padding: 15px; background-color: #fff; border-radius: 5px; border: 1px solid #eee; } .fpl-input-group { display: flex; flex-direction: column; position: relative; } .fpl-input-group label { margin-bottom: 5px; font-weight: bold; color: #555; font-size: 0.95em; } .fpl-input-group input[type="number"], .fpl-input-group select { padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 1em; width: calc(100% – 22px); /* Account for padding and border */ } .fpl-input-group input[type="number"]:focus, .fpl-input-group select:focus { border-color: #007bff; outline: none; box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); } .fpl-tooltip { position: absolute; right: 5px; top: 30px; background-color: #007bff; color: white; border-radius: 50%; width: 20px; height: 20px; text-align: center; line-height: 20px; font-size: 0.8em; cursor: help; z-index: 10; } .fpl-calculator-form button { grid-column: 1 / -1; padding: 12px 20px; background-color: #28a745; color: white; border: none; border-radius: 5px; font-size: 1.1em; cursor: pointer; transition: background-color 0.3s ease; margin-top: 10px; } .fpl-calculator-form button:hover { background-color: #218838; } .fpl-result { grid-column: 1 / -1; margin-top: 20px; padding: 15px; background-color: #e9f7ef; border: 1px solid #d4edda; border-radius: 5px; font-size: 1.1em; color: #155724; font-weight: bold; text-align: center; } .fpl-result p { margin: 5px 0; } .fpl-calculator-container ul { list-style-type: disc; margin-left: 20px; margin-bottom: 10px; } .fpl-calculator-container ol { list-style-type: decimal; margin-left: 20px; margin-bottom: 10px; } .fpl-calculator-container li { margin-bottom: 5px; } @media (max-width: 600px) { .fpl-calculator-form { grid-template-columns: 1fr; } .fpl-input-group input[type="number"], .fpl-input-group select { width: calc(100% – 20px); } .fpl-tooltip { right: 10px; } } function calculateFPLPoints() { var playerPrice = parseFloat(document.getElementById('playerPrice').value); var playerPosition = document.getElementById('playerPosition').value; var expectedMinutes = parseFloat(document.getElementById('expectedMinutes').value); var expectedGoals = parseFloat(document.getElementById('expectedGoals').value); var expectedAssists = parseFloat(document.getElementById('expectedAssists').value); var cleanSheetProb = parseFloat(document.getElementById('cleanSheetProb').value); var expectedBonus = parseFloat(document.getElementById('expectedBonus').value); var expectedYellow = parseFloat(document.getElementById('expectedYellow').value); var expectedRed = parseFloat(document.getElementById('expectedRed').value); var expectedOwnGoals = parseFloat(document.getElementById('expectedOwnGoals').value); var isCaptain = document.getElementById('isCaptain').value === 'yes'; // Input validation if (isNaN(playerPrice) || isNaN(expectedMinutes) || isNaN(expectedGoals) || isNaN(expectedAssists) || isNaN(cleanSheetProb) || isNaN(expectedBonus) || isNaN(expectedYellow) || isNaN(expectedRed) || isNaN(expectedOwnGoals) || playerPrice = 60) { totalPoints += 2; } else if (expectedMinutes >= 1) { totalPoints += 1; } // 2. Goal Points var goalPointsPerGoal; switch (playerPosition) { case 'GK': case 'DEF': goalPointsPerGoal = 6; break; case 'MID': goalPointsPerGoal = 5; break; case 'FWD': goalPointsPerGoal = 4; break; default: goalPointsPerGoal = 0; // Should not happen with dropdown } totalPoints += expectedGoals * goalPointsPerGoal; // 3. Assist Points totalPoints += expectedAssists * 3; // 4. Clean Sheet Points (assuming 60+ minutes played for eligibility) var cleanSheetPointsPerCS; switch (playerPosition) { case 'GK': case 'DEF': cleanSheetPointsPerCS = 4; break; case 'MID': cleanSheetPointsPerCS = 1; break; case 'FWD': cleanSheetPointsPerCS = 0; break; default: cleanSheetPointsPerCS = 0; } // Apply clean sheet points based on probability and eligibility if (expectedMinutes >= 60) { totalPoints += (cleanSheetProb / 100) * cleanSheetPointsPerCS; } // 5. Bonus Points totalPoints += expectedBonus; // 6. Negative Points totalPoints += expectedYellow * -1; totalPoints += expectedRed * -3; totalPoints += expectedOwnGoals * -2; // 7. Captaincy if (isCaptain) { totalPoints *= 2; } var pointsPerMillion = totalPoints / playerPrice; var resultDiv = document.getElementById('fplResult'); resultDiv.innerHTML = 'Expected Gameweek Points: ' + totalPoints.toFixed(2) + " + 'Points Per Million (PPM): ' + pointsPerMillion.toFixed(3) + "; }

Leave a Reply

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