I’ll Show You How to Add Weight Based Shipping in WooCommerce
Unexpected shipping fees are a leading cause of cart abandonment for online shoppers. If your WooCommerce store imposes high or unclear shipping charges, you may be unknowingly losing potential sales.
Thus, providing straightforward and reasonable shipping costs is paramount. One effective approach is implementing weight-based shipping.
This method calculates shipping fees according to the total weight of the items in the cart. Lighter purchases are charged lower rates, while heavier ones incur more accurate costs, ensuring you cover your expenses without deterring customers.
I have experimented with both WooCommerce’s native features and various third-party plugins to discover the most effective ways to implement this.
In this guide, I will walk you through the steps to incorporate weight-based shipping into your store. Additionally, I will share valuable advice to help you steer clear of typical mistakes and maintain a seamless checkout experience.

Benefits of Weight-Based Shipping in WooCommerce
This approach ensures that delivery costs are fair and reflective of the actual weight of orders.
In contrast to flat-rate shipping, which imposes the same fee regardless of the purchase’s weight, this method prevents overcharging for lighter items and loss on heavier ones.
By implementing weight-based shipping, you gain enhanced control and adaptability, eliminating guesswork, surprises at checkout, and maintaining transparency in costs.
This is especially beneficial for merchants selling bulky, heavy items, bundled goods, or a variety of light and heavy products.
Whether you’re dispatching furniture, books, or exercise equipment, this strategy keeps you profitable while ensuring customers understand the shipping expenses.
Now, let’s dive into how to enable weight-based shipping in WooCommerce. Below, you’ll find two different methods. You may click the links below to proceed to the preferred option:
Method 1: Implement Weight-Based Shipping Using Default Settings (Basic Configuration)
If you are looking to establish weight-based shipping in WooCommerce without any additional plugins or extensions, this method is suitable for you.
While WooCommerce does not directly offer a weight-based shipping feature, there’s a straightforward workaround.
Instead of using a specific weight-based setting, you can apply shipping classes to group products according to their weight. This allows you to create various flat rates for each class within your shipping zones.
As a result, heavier products will incur higher shipping fees, while lighter items can be shipped at lower costs, all based on the standard WooCommerce settings.
Pro Tip: Before you begin, ensure that you’ve set your preferred weight measurement (e.g., kg, lbs, oz) for the store.
Simply navigate to WooCommerce » Settings » Products » General and choose your unit from the ‘Weight unit’ dropdown. This guarantees all calculations remain consistent.
If you require further guidance in setting up your store, be sure to view our comprehensive guide to WooCommerce store configuration.
To initiate the process, access the WooCommerce » Settings » Shipping » Classes page from your WordPress dashboard and press the ‘Add shipping class’ button.

In the pop-up window that appears, provide a name for your shipping class. It’s best to select something descriptive that helps you quickly identify the types of products it covers.
For instance, if you are creating a class for items weighing under 5 kg, you might call it ‘Under 5kg.’

Next, give the class a slug. You can leave it blank, allowing WooCommerce to create one based on the name provided. However, for greater control, you may enter a custom one.
Then, add a brief description regarding the purpose of the shipping class, primarily beneficial for your reference or for other admins collaborating on the site.
Once done, click the ‘Create’ button.
You can repeat this procedure to establish as many weight-based shipping classes as required.
Your setup should resemble this:

Next, navigate to the ‘Shipping Zones’ tab, where you’ll find a list of all the shipping zones configured for your store. These zones correspond to the countries or regions where you provide shipping services.
If you haven’t set up a shipping zone yet, simply click the ‘Add zone’ button.

You will be directed to a new screen where you can add a name. Naming the zone after the region or country you’re shipping to reduces potential confusion.
Then, simply enter the name of the region or country in the ‘Zone regions’ field. Click on the option once it appears to add it to your zone. You can incorporate as many regions as necessary.
When finished, click the ‘Add shipping method’ button to proceed.

A new popup will appear on your screen.
Select the ‘Flat rate’ option and then click ‘Continue.’

In the following step, provide a name for your shipping method. This is vital as your customers will encounter it at checkout.
A clear name like ‘Shipping Fee Based on Product Weight’ is advisable.
Next, input a cost for shipping in the ‘Cost’ field. This will become the default shipping fee that customers incur when purchasing an item.
This cost applies to any product without a designated shipping class. Keep in mind, this amount can be combined with other shipping fees, which I will elaborate on shortly.

Further, scroll down to the ‘Shipping class costs’ section, where you can establish costs for each weight-based shipping class you’ve created.
For instance, consider charging $10 for items in the 11–15 kg category and $20 for those in the 16–20 kg range.
Important Te: WooCommerce adds the shipping class fee on top of the default flat rate. For example, if your basic cost is $5 and the class cost is $10, the total shipping fee the customer sees amounts to $15.

To prevent this and solely use the shipping class cost, you must set the primary ‘Cost’ field for the flat rate to $0.
Directly below the cost fields, a setting labelled ‘Calculation type’ will be visible. This determines how WooCommerce calculates shipping when a cart features items from various classes.

Here’s how each choice operates:
- Per Class: WooCommerce will tally the cost of each individual shipping class in the order. For instance, if a customer has items from the 11–15 kg class ($10 fee) and another from the 16–20 kg class ($20 fee), the total additional shipping cost will be $30.
- Per Order: WooCommerce will only charge the fee from the most costly shipping class in the order. Using the earlier example, only the $20 fee would be included in the shipping rate.
For most vendors employing weight-based shipping, the ‘Per Class’ option provides more precise and equitable pricing. This is especially beneficial when orders typically contain products of diverse weights.
Once you’ve selected your ‘Calculation Type,’ click the ‘Save’ button to confirm your settings.
Next, navigate to the ‘Products’ page and edit your preferred item in the WooCommerce editor. Scroll to the ‘Product Data’ section and select the ‘Shipping’ tab.

To begin, enter the product’s weight in the ‘Weight’ field. After that, select the correct shipping class from the ‘Shipping class’ dropdown menu.
Pro Tip: Remember to factor in the weight of your packaging materials (such as boxes and bubble wrap) when calculating the total weight of the product. This guarantees accurate shipping charges to avoid any loss on postage.
For example, if your product weighs 0.45 kg, you would select the ‘Under 5kg’ class you created earlier.
Subsequently, click the ‘Update’ or ‘Publish’ button to save your updates.
Now, check your WooCommerce store to see the shipping price based on your product’s weight.

While this method is fine for simpler configurations, handling numerous different weight classes can become unwieldy.
Thus, for businesses with a broad range of products or specific shipping needs, employing a dedicated plugin is a more effective approach.
Method 2: Implement Weight-Based Shipping via a Plugin (Recommended)
For enhanced capabilities and adjustable shipping rules, leveraging a specific plugin is advisable.
I suggest the free WooCommerce Weight Based Shipping plugin, as it permits you to create limitless shipping rules based on product weight. Additionally, you can set varied rates for different countries and offer free shipping when a customer’s order reaches a specified total.
Begin by installing and activating the WooCommerce Weight Based Shipping plugin. For instructions, refer to our guide on how to install a WordPress plugin.
Once activated, navigate to WooCommerce » Settings » Shipping » Weight Based Shipping from the admin sidebar.
Then, click the ‘Set Up Global Shipping Rules’ button.

This will lead you to a new screen where you can outline weight-based shipping rules for your products. You’ll notice a few default rules set up by the plugin, which you can modify or delete as necessary.
Begin by assigning a title for each rule. Choose names that offer clarity regarding the weight range, such as ‘Under 5kg’ or ‘5-10kg’.

In the ‘Destination’ column, leave the setting as ‘Any,’ meaning the weight shipping rule will apply to all countries. However, if you wish to impose different shipping fees for particular areas, select a country from the ‘Destination’ dropdown menu.
For instance, your store may be based in Europe. You might charge $5 for orders under 5kg to France, given the proximity, whereas the USA could incur a charge of $10 or more due to the longer distance.

Next, specify the ‘From’ and ‘Up To’ weight values for each rule in the Weight column. For the ‘Under 5kg’ rule, you’d set From: 0 and Up To: 5.
After entering these values, click the ‘OK’ button to confirm the range.

Next, focus on the ‘Value’ column, where you will indicate when the shipping rule applies, generally based on the total order amount.
For instance, if you want to offer free shipping on small packages below 5kg, but only when the customer’s cart reaches $100 or more, you can set the weight range from 0 to 5. In the ‘Value’ column, designate it as 100.00+. Then, set the shipping cost to ‘Free.’
This setup means that if someone orders items weighing under 5kg and totaling $100 or more, they will enjoy free shipping.
Conversely, you may wish to add another rule for customers purchasing less than $100.
For that scenario, establish the same weight range—0 to 5kg—but in the ‘Value’ column, enter 0.00 – 99.99 and select a shipping cost of around $10.

This signifies that if the cart is under 5kg and the total falls below $100, the customer will be charged $10 for shipping.
Pro Tip: If you intend the shipping rule to be exclusively weight-based and ignore the order’s total value, this is a straightforward approach.
In the ‘Value’ column, enter 0.00
in the ‘From’ field and leave the ‘To’ field blank.
This instructs the plugin to apply the rule across all orders, regardless of their cost.
Next, it’s time to set the shipping cost according to weight. Open the ‘Shipping’ tab for each rule. You can select the ‘Free’ option for complimentary shipping.
Alternatively, select the ‘Flat’ option and enter the shipping price determined by weight.

You can also opt for the ‘Flat + Progressive’ option, which is beneficial if you offer heavier products that surpass your set weight rules.
For example, if your rules extend up to 30 kg, you might set a flat rate of $20 for orders up to 30 kg, then include a progressive cost of $2 for each additional kg.
This means if a customer places an order weighing 32 kg, they will incur a charge of the initial $20 (for the first 30 kg) plus $4 (for the extra 2 kg), resulting in a total shipping fee of $24.
This configuration ensures you adequately cover your shipping expenses, even for larger orders.

Proceed to assign a note to each weight rule. This note serves primarily for your reference, helping to organise information by clarifying the purpose of each rule.
For instance, you could write “Free shipping for small orders exceeding $100” or “Additional fees for items over 30kg.”

Once you’ve added the necessary notes, click the ‘Save’ icon to record your settings.
Next, you need to incorporate the shipping method you created into one of your shipping zones.
From the ‘Shipping’ tab, click on a zone where you intend to offer weight-based shipping. Then click the ‘Add shipping method’ button.

A popup will emerge on the screen where you should select ‘Weight Based Shipping’ as the shipping method.
Following that, click the ‘Continue’ button.

Next, return to the ‘Products’ page and open a product in the editor.
Scroll down to the ‘Product Data’ section and switch to the ‘Shipping’ tab. Now, you must input the product’s weight to apply the shipping rules effectively.

After that, simply click ‘Update’ or ‘Publish’ to save your configuration.
You can now go to your WooCommerce store and add a product to your cart.
You should observe the shipping charges reflecting the weight of the products on the screen.

Bonus: Providing a Shipping Discount in WooCommerce
Implementing weight-based shipping guarantees that your customers are paying a fair price. However, if you aim to enhance your sales, consider offering shipping discounts.
Many customers expect some form of incentive concerning shipping, particularly for larger orders. Even a slight discount can significantly influence conversions and enhance customer satisfaction.
This is why providing a shipping discount is a great strategy to decrease cart abandonment and increase your average order value.
To conveniently apply shipping discounts to your WooCommerce store, I endorse using the Advanced Coupons plugin.

The plugin is user-friendly and empowers you to effortlessly establish shipping discount rules.
For example, you can provide free shipping when a customer’s cart reaches a specific amount, apply percentage-based discounts on shipping charges, or automatically trigger particular shipping offers based on certain cart conditions.
Moreover, you can integrate these promotions with your weight-based shipping rules for optimal flexibility.

To begin, refer to our tutorial on how to implement a shipping discount in WooCommerce.
FAQs: Weight-Based Shipping in WooCommerce
Here are answers to frequently asked questions about implementing weight-based shipping in WooCommerce.
Do I need to assign a weight to every product in WooCommerce?
Yes, in order for weight-based shipping to function accurately, it’s essential to input a weight for each physical product in your store.
If a product lacks a weight assignment, WooCommerce will struggle to calculate shipping fees correctly, potentially defaulting to a flat rate or failing to display shipping options.
What occurs if a customer places both physical and digital items in their cart?
WooCommerce manages this automatically. Shipping costs will be calculated solely based on the physical items’ weight in the cart. Digital products, which don’t require shipping, have no weight and won’t influence the shipping calculation.
Is it possible to offer free shipping for certain WooCommerce orders?
Absolutely! Using the default method, you can create a shipping class for a specific weight range and set its cost to $0.
Through the plugin method, you can establish a rule granting free shipping once an order exceeds a particular weight or cart value, providing increased versatility.
How do I manage products with a wide range of weights?
The optimal solution is to create multiple shipping rules encompassing all your products. For exceptionally heavy items that may surpass your heaviest rule, the plugin method proves ideal.
You can leverage its ‘Flat + Progressive’ option to establish a base rate plus an additional charge per kg/lb, guaranteeing every shipping expense is covered for oversized orders.
I hope this article has equipped you with the knowledge to seamlessly add weight-based shipping in WooCommerce. You might also be interested in our beginner’s guide on how to implement a free shipping bar in WooCommerce or our tutorial on how to mitigate fraud and false orders in WooCommerce.
If you found this article helpful, consider subscribing to our YouTube Channel for WordPress video tutorials, as well as following us on Twitter.