Calculate individual winnings and losses for your skins game
Skins Won Per Player
Note: Enter 0 if a player did not participate or won no skins.
Understanding the Golf Skins Game
A "Skins Game" is one of the most popular betting formats in golf. Unlike traditional stroke play, where the total score for 18 holes determines the winner, a skins game breaks the round down into 18 individual mini-competitions. Each hole is worth a "skin."
How the Rules Work
Winning a Hole: To win a skin, a player must win the hole outright. If two players tie for the lowest score on a hole, no one wins the skin.
Carryovers: When a hole is tied (halved), the skin carries over to the next hole. This increases the value of the subsequent hole. For example, if holes 1 and 2 are tied, hole 3 is worth three skins.
Validation: In some groups, a player who wins a skin must "validate" it by playing to a certain standard on the next hole, though this is an optional local rule.
Example Payout Calculation
Imagine 4 players playing for $10 per skin over 18 holes. The total "pot" is $180 ($10 x 18 holes). Each player's entry fee (theoretical buy-in) is $45 ($180 / 4 players).
If Player A wins 10 skins, their gross winnings are $100. Their net profit is $100 – $45 = $55. If Player B wins 0 skins, their net loss is -$45.
Strategies for Skins
Skins rewards "aggressive" play. Since a double bogey and a par both lose a hole if someone else birdies, there is no penalty for taking risks to secure a low score on a specific hole. It is better to have one birdie and five double bogeys than six pars in a skins game.
function calculateSkins() {
var skinValue = parseFloat(document.getElementById('skinValue').value);
var totalHoles = parseFloat(document.getElementById('totalHoles').value);
var p1Skins = parseFloat(document.getElementById('p1Skins').value) || 0;
var p2Skins = parseFloat(document.getElementById('p2Skins').value) || 0;
var p3Skins = parseFloat(document.getElementById('p3Skins').value) || 0;
var p4Skins = parseFloat(document.getElementById('p4Skins').value) || 0;
var resultDiv = document.getElementById('skinsResult');
if (isNaN(skinValue) || isNaN(totalHoles) || skinValue <= 0 || totalHoles <= 0) {
resultDiv.style.display = 'block';
resultDiv.style.backgroundColor = '#ffebee';
resultDiv.style.color = '#c62828';
resultDiv.innerHTML = 'Error: Please enter valid numbers for skin value and total holes.';
return;
}
var totalSkinsWon = p1Skins + p2Skins + p3Skins + p4Skins;
if (totalSkinsWon > totalHoles) {
resultDiv.style.display = 'block';
resultDiv.style.backgroundColor = '#ffebee';
resultDiv.style.color = '#c62828';
resultDiv.innerHTML = 'Error: Total skins won (' + totalSkinsWon + ') cannot exceed total holes played (' + totalHoles + ').';
return;
}
// Determine how many active players there are (those with values or those we assume are playing)
// For this calc, we check if they are in the game. If they won 0 but are playing, they still pay.
// We will assume any input > 0 or any player with 0 who isn't P3/P4 if those were left blank is playing.
var playersCount = 0;
if (p1Skins >= 0) playersCount++;
if (p2Skins >= 0) playersCount++;
if (p3Skins > 0 || (document.getElementById('p3Skins').value !== "" && document.getElementById('p3Skins').value !== "0")) playersCount = 3;
if (p4Skins > 0 || (document.getElementById('p4Skins').value !== "" && document.getElementById('p4Skins').value !== "0")) playersCount = 4;
// Default to at least 2 players if it's a game
if (playersCount < 2) playersCount = 2;
var totalPotPossible = totalHoles * skinValue;
var costPerPlayer = totalPotPossible / playersCount;
var p1Net = (p1Skins * skinValue) – costPerPlayer;
var p2Net = (p2Skins * skinValue) – costPerPlayer;
var p3Net = (p3Skins * skinValue) – costPerPlayer;
var p4Net = (p4Skins * skinValue) – costPerPlayer;
var html = '
Final Results
';
html += '
';
html += '
Player
Skins
Gross
Net Payout
';
html += formatRow('Player 1', p1Skins, p1Skins * skinValue, p1Net);
html += formatRow('Player 2', p2Skins, p2Skins * skinValue, p2Net);
if (playersCount >= 3) {
html += formatRow('Player 3', p3Skins, p3Skins * skinValue, p3Net);
}
if (playersCount >= 4) {
html += formatRow('Player 4', p4Skins, p4Skins * skinValue, p4Net);
}
html += '
';
if (totalSkinsWon = 0 ? '#2e7d32' : '#c62828';
var sign = net >= 0 ? '+' : ";
return '