The Marriott Bonvoy program offers a dynamic way for members to earn points on their stays, which can then be redeemed for free nights, experiences, and more. This calculator helps estimate the points you'll accumulate based on various factors, providing a clearer picture of your Bonvoy earnings.
Core Earning Mechanics
At its core, the Marriott Bonvoy program awards 10 base points per US dollar spent on eligible folio charges during your stay. However, several multipliers and bonuses can significantly increase your total point accrual:
Base Points: Every Marriott Bonvoy member earns 10 points per US dollar spent on eligible charges.
Elite Status Bonuses: Higher elite tiers in the Bonvoy program receive bonus points on their stays.
This calculator uses simplified bonus percentages to reflect these tiers. Note that the calculator applies the percentage bonus to the *base points earned*, not the total spend.
Hotel Brand Bonuses: Certain brands within the Marriott portfolio may offer additional bonus points to encourage stays. These are often promotional or tied to specific hotel initiatives.
Marriott Bonvoy Credit Card Benefits: Holding a co-branded Marriott Bonvoy credit card can offer substantial point-earning opportunities. This can include bonus points per dollar spent on card purchases, especially on Marriott Bonvoy purchases, or through welcome offers and annual free night certificates. This calculator allows you to add a specific point earning rate per dollar spent via the card.
How the Calculator Works
The calculator estimates your total points using the following logic:
Points from Room Rate: Base points earned from the room rate are calculated as (Room Rate per Night * Number of Nights) * Base Points per Dollar.
Elite Bonus: The elite status bonus is applied as a percentage of the base points earned from the room rate. For example, a Gold Elite member earns an additional 20% of their base points.
Hotel Brand Bonus: This is added directly as points earned per dollar spent, effectively increasing the earning rate for eligible charges at specific brands.
Credit Card Bonus: This is added as a direct point earning rate per dollar spent on the card, independent of the hotel's base points.
The final calculation is approximately:
Total Points = (Room Rate * Nights * Base Points per $) * (1 + Elite Bonus Percentage) + (Room Rate * Nights * Hotel Brand Bonus per $) + (Room Rate * Nights * Credit Card Bonus per $)
Note: This is a simplified model. Actual point earning can vary based on eligible charges, specific promotions, and Marriott's terms and conditions. Taxes and fees are typically not included in point calculations unless otherwise specified.
Use Cases
Planning Stays: Estimate how many points you'll earn for an upcoming trip to help you reach redemption goals faster.
Maximizing Earnings: Understand which factors (elite status, credit card usage, hotel choice) yield the most points.
Comparing Options: Evaluate different booking strategies to see which might result in higher point accrual.
By using this calculator, you can make more informed decisions about your Marriott Bonvoy stays and accelerate your journey towards valuable reward redemptions.
function calculatePoints() {
var nights = parseFloat(document.getElementById("nights").value);
var baseRate = parseFloat(document.getElementById("baseRate").value);
var memberStatus = parseFloat(document.getElementById("memberStatus").value);
var hotelBrandBonus = parseFloat(document.getElementById("hotelBrandBonus").value);
var creditCardBonus = parseFloat(document.getElementById("creditCardBonus").value);
var roomRate = parseFloat(document.getElementById("roomRate").value);
var resultValueElement = document.getElementById("result-value");
// Validate inputs
if (isNaN(nights) || nights <= 0) {
resultValueElement.textContent = "Please enter a valid number of nights.";
resultValueElement.style.color = "#dc3545"; // Red for error
return;
}
if (isNaN(baseRate) || baseRate < 0) {
resultValueElement.textContent = "Please enter a valid base rate (e.g., 10).";
resultValueElement.style.color = "#dc3545";
return;
}
if (isNaN(hotelBrandBonus) || hotelBrandBonus < 0) {
resultValueElement.textContent = "Please enter a valid hotel brand bonus (0 or more).";
resultValueElement.style.color = "#dc3545";
return;
}
if (isNaN(creditCardBonus) || creditCardBonus < 0) {
resultValueElement.textContent = "Please enter a valid credit card bonus (0 or more).";
resultValueElement.style.color = "#dc3545";
return;
}
if (isNaN(roomRate) || roomRate <= 0) {
resultValueElement.textContent = "Please enter a valid average room rate.";
resultValueElement.style.color = "#dc3545";
return;
}
// Calculate total eligible spending
var totalEligibleSpend = roomRate * nights;
// Calculate base points
var basePoints = totalEligibleSpend * (baseRate / 10); // Assuming baseRate is points per dollar, so divide by 10 to get $ value
// Calculate elite bonus points
var eliteBonusPoints = basePoints * (memberStatus / 100); // memberStatus is a percentage like 20, 40, 50
// Calculate hotel brand bonus points
var hotelBrandPoints = totalEligibleSpend * (hotelBrandBonus / 10); // Assuming hotelBrandBonus is points per dollar
// Calculate credit card bonus points
var creditCardPoints = totalEligibleSpend * (creditCardBonus / 10); // Assuming creditCardBonus is points per dollar
// Calculate total points
var totalPoints = basePoints + eliteBonusPoints + hotelBrandPoints + creditCardPoints;
resultValueElement.textContent = totalPoints.toLocaleString(undefined, { maximumFractionDigits: 0 });
resultValueElement.style.color = "#28a745"; // Reset to success green
}