DEV Community

Donyaie Charkh
Donyaie Charkh

Posted on AI-assisted

A Tiny Python Helper for Sizing Casters on Carts and Racks

If you build internal tools for a warehouse, a workshop or a hospital, sooner or later someone asks a deceptively simple question: "Which casters should we order for this cart?" Getting it wrong means wheels that flat-spot in a month, bearings that seize, or a trolley nobody wants to push.

The core of the answer is arithmetic, so it fits nicely in a small, testable function. Here is a version I like to keep around.

The rule of thumb

The common shop-floor rule is:

Required capacity per caster = (equipment weight + max load) / (number of casters - 1)

Why minus one? Floors are never perfectly flat. On an uneven floor or over a threshold, one caster is often barely touching the ground, so the remaining casters carry the whole load. Dividing by n - 1 builds in that margin. Then you add a safety factor for shock loads, ramps and rough handling.

The code

from dataclasses import dataclass

@dataclass
class CasterSpec:
    capacity_per_caster_kg: float
    min_wheel_diameter_mm: int
    note: str

def size_casters(equipment_kg: float, load_kg: float, casters: int = 4,
                 rough_floor: bool = False, shock: bool = False) -> CasterSpec:
    if casters < 3:
        raise ValueError("Use at least 3 casters for a stable cart")
    total = equipment_kg + load_kg
    per_caster = total / (casters - 1)
    factor = 1.0
    if rough_floor:
        factor += 0.2
    if shock:
        factor += 0.3
    capacity = round(per_caster * factor, 1)

    # Bigger wheels roll over cracks and cables more easily.
    if capacity > 500 or rough_floor:
        diameter = 150
    elif capacity > 150:
        diameter = 125
    else:
        diameter = 100

    note = "polyurethane on smooth floors" if not rough_floor else "rubber or soft tread for rough floors"
    return CasterSpec(capacity, diameter, note)

print(size_casters(equipment_kg=60, load_kg=400, casters=4, rough_floor=True))
# CasterSpec(capacity_per_caster_kg=184.0, min_wheel_diameter_mm=150, note='rubber or soft tread for rough floors')
Enter fullscreen mode Exit fullscreen mode

Tests keep the rule honest

def test_divides_by_n_minus_one():
    spec = size_casters(0, 300, casters=4)
    assert spec.capacity_per_caster_kg == 100.0

def test_rough_floor_bumps_diameter():
    assert size_casters(0, 90, rough_floor=True).min_wheel_diameter_mm == 150
Enter fullscreen mode Exit fullscreen mode

What the function does not decide for you

Numbers are only half the job. You still have to pick:

  • Wheel material. Polyurethane rolls easily and protects finished floors; rubber is quieter and grips better on rough or wet ground.
  • Swivel vs fixed layout. Two fixed at the back and two swivel at the front tracks straight on long runs; four swivels suit tight rooms.
  • Brakes or a jack stop for anything that must stay put while people work on it.
  • Environment. Cold rooms, ovens and washdown areas each need their own materials.

For those choices, real catalogue data beats guessing. As an example, Donyaie Charkh, an industrial caster manufacturer in Iran with branches in Rasht and Tehran, publishes a practical buyer's guide for industrial wheels that walks through load, floor and mounting choices in order, and their range of refrigerator and appliance casters at https://donyaiecharkh.com/category/refrigerator-casters is a good reference for what low-profile, cold-resistant wheels look like. You can find the full catalogue on the Donyaie Charkh website.

Wrap-up

Wrap the arithmetic in a function, add two or three tests, and your "which casters?" conversations get shorter and more consistent. Then let the floor, the environment and a good catalogue decide the rest.

Top comments (0)