{
  "id": "freight-class",
  "version": "eda03fb695d3",
  "status": "published",
  "name": "Freight Class Calculator",
  "question": "What freight class is my shipment?",
  "summary": "Computes the density of a less-than-truckload shipment (total weight ÷ total volume, in pounds per cubic foot) and its class on the NMFC 13-sub density scale in effect since July 19, 2025.",
  "category": "logistics",
  "url": "https://www.acalculator.org/logistics/freight-class-calculator",
  "markdown": "https://www.acalculator.org/logistics/freight-class-calculator.md",
  "kind": "function",
  "method": "density = total weight (lb) ÷ total volume (ft³); class from the NMFC 13-sub density scale",
  "assumptions": [
    "Only density sets the class here. The NMFC also weighs stowability, handling and liability, and many items have their own class, so check the item in the NMFC before you ship.",
    "Measure each piece at its longest, widest and highest points, packaging and pallet included.",
    "For a shipment of several pieces, the density is the total weight ÷ the total volume.",
    "The scale is the 13-sub density scale that NMFTA Docket 2025-1 put in effect on July 19, 2025."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "lines": {
        "title": "Lines of pieces",
        "description": "How many different kinds of piece the shipment has (1 to 5), each with its own size and weight.",
        "type": "integer",
        "minimum": 1,
        "maximum": 5
      },
      "length1": {
        "title": "Length",
        "description": "The length of one piece on line 1, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "width1": {
        "title": "Width",
        "description": "The width of one piece on line 1, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "height1": {
        "title": "Height",
        "description": "The height of one piece on line 1, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "weight1": {
        "title": "Weight",
        "description": "The weight of one piece on line 1, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "mass",
        "minimum": 0.01,
        "maximum": 50000
      },
      "quantity1": {
        "title": "Quantity",
        "description": "How many pieces of this size and weight on line 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000
      },
      "length2": {
        "title": "Length (line 2)",
        "description": "The length of one piece on line 2, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "width2": {
        "title": "Width (line 2)",
        "description": "The width of one piece on line 2, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "height2": {
        "title": "Height (line 2)",
        "description": "The height of one piece on line 2, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "weight2": {
        "title": "Weight (line 2)",
        "description": "The weight of one piece on line 2, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "mass",
        "minimum": 0.01,
        "maximum": 50000
      },
      "quantity2": {
        "title": "Quantity (line 2)",
        "description": "How many pieces of this size and weight on line 2.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000
      },
      "length3": {
        "title": "Length (line 3)",
        "description": "The length of one piece on line 3, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "width3": {
        "title": "Width (line 3)",
        "description": "The width of one piece on line 3, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "height3": {
        "title": "Height (line 3)",
        "description": "The height of one piece on line 3, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "weight3": {
        "title": "Weight (line 3)",
        "description": "The weight of one piece on line 3, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "mass",
        "minimum": 0.01,
        "maximum": 50000
      },
      "quantity3": {
        "title": "Quantity (line 3)",
        "description": "How many pieces of this size and weight on line 3.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000
      },
      "length4": {
        "title": "Length (line 4)",
        "description": "The length of one piece on line 4, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "width4": {
        "title": "Width (line 4)",
        "description": "The width of one piece on line 4, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "height4": {
        "title": "Height (line 4)",
        "description": "The height of one piece on line 4, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "weight4": {
        "title": "Weight (line 4)",
        "description": "The weight of one piece on line 4, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "mass",
        "minimum": 0.01,
        "maximum": 50000
      },
      "quantity4": {
        "title": "Quantity (line 4)",
        "description": "How many pieces of this size and weight on line 4.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000
      },
      "length5": {
        "title": "Length (line 5)",
        "description": "The length of one piece on line 5, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "width5": {
        "title": "Width (line 5)",
        "description": "The width of one piece on line 5, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "height5": {
        "title": "Height (line 5)",
        "description": "The height of one piece on line 5, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 20
      },
      "weight5": {
        "title": "Weight (line 5)",
        "description": "The weight of one piece on line 5, packaging included.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "mass",
        "minimum": 0.01,
        "maximum": 50000
      },
      "quantity5": {
        "title": "Quantity (line 5)",
        "description": "How many pieces of this size and weight on line 5.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000
      }
    }
  },
  "outputs": {
    "freightClass": {
      "label": "Estimated freight class",
      "description": "The class on the NMFC 13-sub density scale for the shipment density.",
      "format": "number"
    },
    "density": {
      "label": "Density",
      "description": "Total weight in pounds ÷ total volume in cubic feet.",
      "format": "number"
    },
    "densityMetric": {
      "label": "Density (metric)",
      "description": "The same density in kilograms per cubic metre.",
      "format": "quantity",
      "unit": "kg-m3"
    },
    "range": {
      "label": "Density range for this class",
      "description": "The density range of the class on the scale.",
      "format": "text"
    },
    "totalWeight": {
      "label": "Total weight",
      "description": "The weight of all pieces.",
      "format": "quantity",
      "unit": "lb"
    },
    "totalVolume": {
      "label": "Total volume",
      "description": "The volume of all pieces: length × width × height × quantity, added up.",
      "format": "quantity",
      "unit": "ft3"
    },
    "nextClass": {
      "label": "Density for the next lower class",
      "description": "The density at which the shipment would move to the next lower (usually cheaper) class.",
      "format": "number"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "lines": 1,
      "length1": 0.30479999999999996,
      "width1": 0.30479999999999996,
      "height1": 0.30479999999999996,
      "weight1": 4.9895160700000005,
      "quantity1": 1,
      "length2": 0.30479999999999996,
      "width2": 0.30479999999999996,
      "height2": 0.30479999999999996,
      "weight2": 4.9895160700000005,
      "quantity2": 1,
      "length3": 0.30479999999999996,
      "width3": 0.30479999999999996,
      "height3": 0.30479999999999996,
      "weight3": 4.9895160700000005,
      "quantity3": 1,
      "length4": 0.30479999999999996,
      "width4": 0.30479999999999996,
      "height4": 0.30479999999999996,
      "weight4": 4.9895160700000005,
      "quantity4": 1,
      "length5": 0.30479999999999996,
      "width5": 0.30479999999999996,
      "height5": 0.30479999999999996,
      "weight5": 4.9895160700000005,
      "quantity5": 1
    },
    "outputs": {
      "freightClass": 92.5,
      "density": 11,
      "densityMetric": 176.2030971135615,
      "range": "10 to under 12 lb/ft³",
      "totalWeight": 4.9895160700000005,
      "totalVolume": 0.02831684659199999,
      "nextClass": 12
    },
    "text": "At 11 pounds per cubic foot, the shipment is freight class 92.5."
  },
  "examples": [
    {
      "given": {
        "lines": 1,
        "length1": 0.30479999999999996,
        "width1": 0.30479999999999996,
        "height1": 0.30479999999999996,
        "weight1": 4.535923700000001,
        "quantity1": 1
      },
      "expect": {
        "density": 10,
        "freightClass": 92.5,
        "nextClass": 12
      },
      "source": "NMFC 13-sub density scale (Docket 2025-1): 10 lb ÷ 1 ft³ = 10 lb/ft³, in \"10 but less than 12\", class 92.5",
      "tolerance": 1e-12
    },
    {
      "given": {
        "lines": 1,
        "length1": 1.2191999999999998,
        "width1": 1.016,
        "height1": 1.2191999999999998,
        "weight1": 226.796185,
        "quantity1": 1
      },
      "expect": {
        "density": 9.375,
        "freightClass": 100
      },
      "source": "hand calculation in content.mdx: 48 × 40 × 48 ÷ 1,728 = 53.33 ft³; 500 ÷ 53.33 = 9.375 lb/ft³, class 100",
      "tolerance": 1e-12
    },
    {
      "given": {
        "lines": 2,
        "length1": 1.2191999999999998,
        "width1": 1.016,
        "height1": 1.524,
        "weight1": 362.873896,
        "quantity1": 2,
        "length2": 0.6095999999999999,
        "width2": 0.6095999999999999,
        "height2": 0.6095999999999999,
        "weight2": 22.6796185,
        "quantity2": 4
      },
      "expect": {
        "totalWeight": 816.466266,
        "density": 10.887096774193548,
        "freightClass": 92.5
      },
      "source": "hand calculation in content.mdx: 1,800 lb ÷ 165.33 ft³ = 10.89 lb/ft³, class 92.5",
      "tolerance": 1e-12
    },
    {
      "given": {
        "lines": 1,
        "length1": 0.30479999999999996,
        "width1": 0.30479999999999996,
        "height1": 0.30479999999999996,
        "weight1": 22.6796185,
        "quantity1": 1
      },
      "expect": {
        "freightClass": 50,
        "range": "50 lb/ft³ or more"
      },
      "source": "NMFC 13-sub density scale: a density of exactly 50 lb/ft³ is in \"50 or greater\", class 50"
    },
    {
      "given": {
        "lines": 1,
        "length1": 0.508,
        "width1": 0.508,
        "height1": 0.4572,
        "weight1": 11.33980925,
        "quantity1": 3
      },
      "expect": {
        "freightClass": 125,
        "range": "6 to under 8 lb/ft³",
        "nextClass": 8
      },
      "source": "NMFC 13-sub density scale (Docket 2025-1): 75 lb ÷ (3 × 7,200 in³ ÷ 1,728) = 75 ÷ 12.5 = 6 lb/ft³, in \"6 but less than 8\", class 125"
    }
  ],
  "sources": [],
  "related": [],
  "changelog": [
    {
      "date": "2026-09-29",
      "note": "The density shown is the value the class uses, so its band names the headline class (muse review)."
    }
  ]
}
