*Note: This is an estimation. Actual carrier invoices may vary based on demurrage, detention, and date of sailing.
Understanding Container Freight Rates
Calculating the total cost of shipping goods internationally involves more than just the base ocean freight rate. Container freight rates are composed of various elements, including fuel surcharges, currency adjustments, and terminal handling fees. Whether you are shipping a Full Container Load (FCL) or negotiating contracts with forwarders, understanding these components is essential for accurate budgeting.
Our Container Freight Rate Calculator helps logistics managers, importers, and exporters estimate the "All-In" rate for their shipments by aggregating the most common charges found in international shipping invoices.
Key Components of Freight Costs
Base Ocean Freight (BAS): The core price to transport the container from port to port. This fluctuates based on supply and demand, seasonality (e.g., peak season), and route popularity.
BAF (Bunker Adjustment Factor): A floating surcharge to cover the fluctuation in fuel (oil) prices. Carriers review this monthly or quarterly.
CAF (Currency Adjustment Factor): A percentage charge applied to the base rate to offset currency exchange rate risks between the carrier's base currency and local currencies.
THC (Terminal Handling Charges): Fees collected by the terminal authorities at both the port of loading and discharge for handling equipment and containers.
How to Calculate Your Shipping Costs
To get an accurate estimate using the tool above, you will need to gather data from your freight quote or previous invoices. Here is a step-by-step guide:
Determine Volume: Enter the number of containers. Costs like Base Freight, BAF, and THC are multiplied by this number.
Input Base & Variable Charges: Enter the quote for the ocean freight and specific surcharges like BAF and THC.
Apply Percentages: If your carrier applies a CAF (Currency Adjustment Factor), enter the percentage. This is calculated against the Base Freight only.
Fixed Fees & Insurance: Add document fees (Bill of Lading, ISF filing) which are usually charged per shipment, not per container. Finally, input the cargo value to calculate estimated insurance costs.
Common Additional Surcharges
Beyond the standard fields in the calculator, be aware of other potential costs:
GRI (General Rate Increase): A general price increase applied by carriers across all routes, typically during high-demand periods.
PSS (Peak Season Surcharge): Applied during busy shipping windows, such as pre-holiday seasons (August to October).
Demurrage & Detention: Penalty fees charged if containers are kept inside or outside the port terminal longer than the allowed free time.
Optimizing Your Freight Spend
To reduce your container freight rates, consider booking shipments during "slack season" (typically post-Chinese New Year), optimizing container utilization (stuffing), and comparing spot rates versus contract rates. Always verify if your Incoterms (e.g., FOB vs. CIF) include insurance and local handling, as this changes who is liable for specific line items in the calculation.
function calculateFreight() {
// 1. Get input values
var numContainers = parseFloat(document.getElementById('numContainers').value) || 0;
var baseRate = parseFloat(document.getElementById('baseRate').value) || 0;
var baf = parseFloat(document.getElementById('baf').value) || 0;
var thc = parseFloat(document.getElementById('thc').value) || 0;
var cafPercent = parseFloat(document.getElementById('caf').value) || 0;
var fixedFees = parseFloat(document.getElementById('fixedFees').value) || 0;
var cargoValue = parseFloat(document.getElementById('cargoValue').value) || 0;
var insuranceRate = parseFloat(document.getElementById('insuranceRate').value) || 0;
// Validation
if (numContainers < 1) {
alert("Please enter at least 1 container.");
return;
}
// 2. Perform Calculations
// Per container calculations
var totalBaseFreight = baseRate * numContainers;
var totalBAF = baf * numContainers;
var totalTHC = thc * numContainers;
// CAF is usually a percentage of the Base Freight
var totalCAF = totalBaseFreight * (cafPercent / 100);
// Shipment wide calculations
var totalInsurance = cargoValue * (insuranceRate / 100);
// Grand Total
var grandTotal = totalBaseFreight + totalBAF + totalTHC + totalCAF + fixedFees + totalInsurance;
// 3. Display Results
document.getElementById('resBaseFreight').innerText = "$" + totalBaseFreight.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resBAF').innerText = "$" + totalBAF.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCAF').innerText = "$" + totalCAF.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTHC').innerText = "$" + totalTHC.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resDocs').innerText = "$" + fixedFees.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resInsurance').innerText = "$" + totalInsurance.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotal').innerText = "$" + grandTotal.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show result box
document.getElementById('result').style.display = 'block';
}