Standard Letter (Standard Size)
Large Envelope (Flat)
Postcard
Estimated Postage Cost
$0.00
Understanding First-Class Mail Rates
First-Class Mail is the most common and affordable way to send envelopes and lightweight packages through the United States Postal Service (USPS). This calculator helps you estimate the required postage based on the current weight-based pricing structure for letters, large envelopes (flats), and postcards.
Current Rate Structure (2024 Baseline)
Postage rates are determined by the shape of the mailpiece and its weight. The "Forever Stamp" covers the first ounce of a standard letter, but heavier items require additional postage.
Standard Letters: The base rate covers the first ounce. Each additional ounce costs extra. The maximum weight for a standard letter is 3.5 ounces.
Large Envelopes (Flats): If your envelope exceeds the dimensions of a standard letter or weighs more than 3.5 ounces (up to 13 ounces), it is classified as a "Flat." These have a higher starting base rate.
Postcards: Standard rectangular postcards have a lower, fixed flat rate.
What is the Non-Machinable Surcharge?
A "Non-Machinable Surcharge" is applied to mail that cannot be processed by automated sorting machines. If you select this option in the calculator, an extra fee is added. Common reasons for this surcharge include:
The envelope is square (height equals width) or has an aspect ratio less than 1.3 or more than 2.5.
It contains rigid items like credit cards, coins, or keys.
The surface is uneven or has clasps, strings, or buttons.
The address is written parallel to the shorter edge of the mailpiece.
Weight Limitations
It is critical to weigh your mail accurately.
Letters: Max 3.5 oz. If a letter weighs more than 3.5 oz, it must be mailed as a Large Envelope (Flat).
Large Envelopes: Max 13 oz. Items over 13 oz must be sent via Priority Mail or Ground Advantage.
function calculateMailRate() {
// 1. Get Inputs
var typeSelect = document.getElementById('mailType');
var weightInput = document.getElementById('mailWeight');
var nonMachinableCheck = document.getElementById('nonMachinable');
var resultDisplay = document.getElementById('resultDisplay');
var finalPriceDiv = document.getElementById('finalPrice');
var breakdownDiv = document.getElementById('breakdown');
var warningDiv = document.getElementById('warningMsg');
var type = typeSelect.value;
var weight = parseFloat(weightInput.value);
var isNonMachinable = nonMachinableCheck.checked;
// 2. Validate Inputs
if (isNaN(weight) || weight 1) {
warningText = "Note: A standard postcard usually weighs less than 1 oz. Heavy cards may be treated as letters.";
}
if (isNonMachinable) {
// Postcards can't really be non-machinable in the same way, usually they just become letters.
// But if forced, it pushes to letter price + surcharge.
totalCost = rateLetterBase + surchargeNonMachinable;
calculationNote = "Postcard marked non-machinable is charged as a non-machinable Letter.";
} else {
totalCost = ratePostcard;
calculationNote = "Standard Postcard Rate";
}
}
else if (type === 'letter') {
// Logic: Base for 1 oz + add for extra ounces.
// Max weight for letter class is 3.5 oz.
if (weight > 3.5) {
// Auto-upgrade to Flat logic
warningText = "Weight exceeds 3.5 oz limit for Letters. Automatically calculated as Large Envelope (Flat).";
// Recalculate as Flat
var roundedWeight = Math.ceil(weight);
if (roundedWeight > 13) {
warningText = "Weight exceeds 13 oz limit for First-Class Mail. You must use Priority Mail or Ground Advantage.";
totalCost = 0; // Invalid for this calculator
} else {
// Base Flat + (roundedWeight – 1) * add
totalCost = rateFlatBase + ((roundedWeight – 1) * rateFlatAdd);
if (isNonMachinable) {
// Flats generally don't have the same "non-machinable" surcharge logic as letters,
// but rigid flats might cost more. For this calc, we will keep it simple or ignore surcharge if upgraded.
// However, strictly speaking, non-machinable surcharge is mostly for letters.
calculationNote = "Base Flat Rate ($" + rateFlatBase + ") + " + (roundedWeight – 1) + " additional oz.";
} else {
calculationNote = "Base Flat Rate ($" + rateFlatBase + ") + " + (roundedWeight – 1) + " additional oz.";
}
}
} else {
// Standard Letter Calculation
var roundedWeight = Math.ceil(weight); // Postage is always rounded up to next ounce
var additionalOunces = roundedWeight – 1;
totalCost = rateLetterBase + (additionalOunces * rateLetterAdd);
if (isNonMachinable) {
totalCost += surchargeNonMachinable;
calculationNote = "Base Letter ($" + rateLetterBase + ") + " + additionalOunces + " add'l oz + Non-machinable Surcharge ($" + surchargeNonMachinable + ")";
} else {
calculationNote = "Base Letter ($" + rateLetterBase + ") + " + additionalOunces + " add'l oz.";
}
}
}
else if (type === 'flat') {
// Large Envelope Logic
// Max 13 oz.
if (weight > 13) {
warningText = "Weight exceeds 13 oz limit for First-Class Mail Large Envelopes. Consider Priority Mail.";
totalCost = 0;
} else {
var roundedWeight = Math.ceil(weight);
var additionalOunces = roundedWeight – 1;
totalCost = rateFlatBase + (additionalOunces * rateFlatAdd);
// Non-machinable surcharge technically applies to letters.
// For flats, rigidity implies it's a parcel (Ground Advantage).
// We will add a warning if they check non-machinable on a flat.
if (isNonMachinable) {
warningText = "Note: Rigid Large Envelopes generally classify as Packages (Ground Advantage) and cost significantly more.";
}
calculationNote = "Base Flat Rate ($" + rateFlatBase + ") + " + additionalOunces + " additional oz.";
}
}
// 5. Output Result
resultDisplay.style.display = 'block';
if (totalCost > 0) {
finalPriceDiv.innerHTML = "$" + totalCost.toFixed(2);
breakdownDiv.innerHTML = calculationNote;
warningDiv.innerHTML = warningText;
warningDiv.style.color = warningText.includes("exceeds") ? "red" : "#666";
} else {
finalPriceDiv.innerHTML = "—";
breakdownDiv.innerHTML = "Limit Exceeded";
warningDiv.innerHTML = warningText;
warningDiv.style.color = "red";
}
}