Ocean Rate Calculator

Ocean Freight Rate Calculator

Calculate total shipping costs for FCL (Full Container Load)

Estimated Total Shipping Cost


Rate per Container:
Currency Adjustment (CAF):

How Ocean Rate Calculations Work

Calculating ocean freight is more complex than a simple port-to-port price. Logistics providers break down the total cost into several components to account for fuel volatility, currency changes, and port operations.

Primary Ocean Rate Components

  • Base Freight Rate: The core cost of moving a container from Point A to Point B.
  • BAF (Bunker Adjustment Factor): A floating surcharge that compensates for fluctuations in oil prices.
  • CAF (Currency Adjustment Factor): A percentage surcharge applied to the base rate to offset currency exchange volatility between the US Dollar and other currencies.
  • THC (Terminal Handling Charges): Fees charged by the terminals for loading and unloading containers at both the origin and destination ports.
  • Documentation Fees: Fixed costs associated with issuing Bill of Ladings and other customs-related documents.

The Formula

Total Cost = ([Base Rate + BAF + (Base Rate * CAF%) + THC] * Quantity) + Fixed Documentation Fees

FCL vs. LCL Rates

This calculator is designed for FCL (Full Container Load) shipments. In FCL, you pay for the entire volume of the container (typically 20ft, 40ft, or 40ft High Cube). For LCL (Less than Container Load), rates are usually calculated based on cubic meters (CBM) or weight (tons), whichever is greater.

Example Calculation

If you are shipping 2 containers with a Base Rate of $3,000, a BAF of $200, a CAF of 5%, and $150 in THC per container, with a $100 documentation fee for the whole shipment:

  • CAF Calculation: $3,000 * 0.05 = $150
  • Cost per container: $3,000 + $200 + $150 + $150 = $3,500
  • Subtotal (2 containers): $7,000
  • Final Total: $7,000 + $100 (Docs) = $7,100
function calculateOceanRate() { // Get values from inputs var baseRate = parseFloat(document.getElementById('ocean_base_rate').value) || 0; var qty = parseFloat(document.getElementById('ocean_qty').value) || 0; var baf = parseFloat(document.getElementById('ocean_baf').value) || 0; var cafPercent = parseFloat(document.getElementById('ocean_caf').value) || 0; var thc = parseFloat(document.getElementById('ocean_thc').value) || 0; var fixedFees = parseFloat(document.getElementById('ocean_fees').value) || 0; // Validate quantity if (qty <= 0) { qty = 1; document.getElementById('ocean_qty').value = 1; } // Calculation Logic var cafAmount = baseRate * (cafPercent / 100); var ratePerContainer = baseRate + baf + cafAmount + thc; var totalCost = (ratePerContainer * qty) + fixedFees; // Display results document.getElementById('ocean_result_box').style.display = 'block'; document.getElementById('ocean_total_display').innerText = '$' + totalCost.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('ocean_per_unit').innerText = '$' + ratePerContainer.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById('ocean_caf_val').innerText = '$' + (cafAmount * qty).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Smooth scroll to result document.getElementById('ocean_result_box').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment