Estimate shipping costs based on weight and dimensions.
Mainland China – Intra-City (Same City)
Mainland China – Intra-Province (Different City)
Mainland China – Inter-Province (Standard)
Mainland China to HK/Macau/Taiwan
Mainland China to USA (Standard Express)
Mainland China to Europe (Standard Express)
Used to calculate volumetric weight (L x W x H / 6000).
Volumetric Weight:–
Chargeable Weight:–
Base Fee (First kg):–
Additional Weight Fee:–
Total Estimated Cost:–
*Estimates are for reference only. Actual prices may vary due to fuel surcharges, specific origin/destination addresses, and real-time rate adjustments.
Understanding SF Express Shipping Rates
SF Express (Shunfeng Express) is one of the leading logistics service providers, widely known for its reliability and speed, especially within China and Asia. Calculating the shipping rate correctly requires understanding not just the actual weight of your package, but also its size (volumetric weight) and the specific service route.
How is the Rate Calculated?
SF Express, like most international couriers, uses the "Chargeable Weight" method to determine the final shipping cost. The chargeable weight is the higher value between the Actual Weight and the Volumetric Weight.
1. Volumetric Weight Formula
For standard express services, the volumetric weight is calculated as:
Note: Some specific heavy freight products or international economy lines might use a divisor of 5000. This calculator uses the standard 6000 divisor.
2. Pricing Structure
The total shipping cost usually consists of two parts:
First Weight (Base Fee): A fixed cost for the first kilogram (or 0.5kg for some international routes).
Additional Weight: A cost per kilogram (or 0.5kg) for the remaining weight.
Typical Rate Estimates (Reference)
Route Type
Approx. First 1kg (CNY)
Approx. Addl. kg (CNY)
Mainland Intra-City
12 ¥
2 ¥
Mainland Intra-Province
14 ¥
3 ¥
Mainland Inter-Province
23 ¥
13 ¥
Mainland to HK/TW
30 ¥
20 ¥
Why did my shipping cost increase?
Several factors can affect the final price quoted at the counter compared to an online estimate:
Fuel Surcharge: A percentage added to the base rate, fluctuating with global oil prices.
Remote Area Surcharge: Delivering to rural or hard-to-reach locations often incurs extra fees.
Value Added Services: Insurance (SPP), special packaging, or Cash on Delivery (COD) services.
Tips for Reducing SF Express Costs
To optimize your shipping costs, try to minimize the empty space in your packaging. Since volumetric weight can exceed actual weight for light but bulky items, using a box that tightly fits your item can significantly reduce the chargeable weight.
function calculateSFExpressRate() {
// 1. Get Inputs
var weightInput = document.getElementById('actualWeight').value;
var lengthInput = document.getElementById('length').value;
var widthInput = document.getElementById('width').value;
var heightInput = document.getElementById('height').value;
var routeType = document.getElementById('routeType').value;
// 2. Validate Inputs
var actualWeight = parseFloat(weightInput);
var length = parseFloat(lengthInput) || 0;
var width = parseFloat(widthInput) || 0;
var height = parseFloat(heightInput) || 0;
if (isNaN(actualWeight) || actualWeight 0 && width > 0 && height > 0) {
volWeight = (length * width * height) / 6000;
}
// Round weights to 1 decimal place usually, but calculations often happen on 0.5kg steps.
// For this estimator, we will treat chargeable weight rounded up to next 0.5kg or 1kg depending on route.
// Let's standardise on rounding up to the nearest 0.5kg for accuracy.
var chargeableRaw = Math.max(actualWeight, volWeight);
var chargeableWeight = Math.ceil(chargeableRaw * 2) / 2; // Rounds up to nearest 0.5
// However, many domestic mainland routes calculate per 1kg step.
// International often per 0.5kg.
// We will simplify logic based on route for better estimation.
var basePrice = 0;
var unitPrice = 0;
var unitStep = 1; // 1kg or 0.5kg
var currency = "CNY";
// Mock Data Logic for Routes (Estimates)
switch (routeType) {
case "intra_city":
// ~12 RMB first kg, 2 RMB addl
basePrice = 12;
unitPrice = 2;
unitStep = 1;
chargeableWeight = Math.ceil(chargeableRaw); // Domestic usually 1kg steps
break;
case "intra_province":
// ~14 RMB first kg, 3 RMB addl
basePrice = 14;
unitPrice = 3;
unitStep = 1;
chargeableWeight = Math.ceil(chargeableRaw);
break;
case "inter_province":
// ~23 RMB first kg, 13 RMB addl (Average long distance)
basePrice = 23;
unitPrice = 13;
unitStep = 1;
chargeableWeight = Math.ceil(chargeableRaw);
break;
case "hk_mo_tw":
// ~30 RMB first kg, 20 RMB addl
basePrice = 30;
unitPrice = 20;
unitStep = 0.5; // Often 0.5kg steps for cross-border
// Re-calculate chargeable for 0.5 step
chargeableWeight = Math.ceil(chargeableRaw * 2) / 2;
break;
case "international_us":
// ~200 RMB base (0.5kg), 50 RMB per addl 0.5kg (Very rough estimate)
basePrice = 240;
unitPrice = 60;
unitStep = 0.5;
chargeableWeight = Math.ceil(chargeableRaw * 2) / 2;
break;
case "international_eu":
// ~260 RMB base (0.5kg), 60 RMB per addl 0.5kg
basePrice = 260;
unitPrice = 70;
unitStep = 0.5;
chargeableWeight = Math.ceil(chargeableRaw * 2) / 2;
break;
default:
basePrice = 23;
unitPrice = 10;
unitStep = 1;
chargeableWeight = Math.ceil(chargeableRaw);
}
// 4. Calculate Total Cost
// Formula: Base Price + ( (Weight – FirstUnit) / Step * UnitPrice )
// If weight < FirstUnit (e.g. 1kg or 0.5kg depending on logic), just Base Price.
var firstUnitSize = (unitStep === 0.5) ? 0.5 : 1.0;
var totalCost = 0;
var additionalWeight = 0;
var additionalFee = 0;
if (chargeableWeight <= firstUnitSize) {
totalCost = basePrice;
additionalWeight = 0;
additionalFee = 0;
} else {
additionalWeight = chargeableWeight – firstUnitSize;
// How many steps?
var steps = additionalWeight / unitStep;
// Ensure floating point precision doesn't mess up steps (e.g. 1.0 / 0.1)
steps = Math.round(steps * 100) / 100; // soft clean
additionalFee = steps * unitPrice;
totalCost = basePrice + additionalFee;
}
// 5. Display Results
document.getElementById('volWeightDisplay').innerHTML = volWeight.toFixed(2) + " kg";
document.getElementById('chargeableWeightDisplay').innerHTML = chargeableWeight.toFixed(2) + " kg";
document.getElementById('baseFeeDisplay').innerHTML = "¥ " + basePrice.toFixed(2);
document.getElementById('additionalFeeDisplay').innerHTML = "¥ " + additionalFee.toFixed(2);
document.getElementById('totalCostDisplay').innerHTML = "¥ " + totalCost.toFixed(2);
// Show result box
document.getElementById('results').style.display = 'block';
}