DEV Community

Donyaie Charkh
Donyaie Charkh

Posted on AI-assisted

Picking a Caster Wheel Material with a Small Decision Table in JavaScript

Every few months someone on a factory or hospital project asks the same question: "Which wheel material should we put on these carts?" The answer usually lives in somebody's head. I wanted to turn it into a few lines of code that anyone on the team can read, test and argue with.

This post walks through a tiny decision table for caster wheel materials. It is not a replacement for a supplier's datasheet, but it is a good way to make the trade-offs explicit.

The inputs that actually matter

After talking with people who sell and service casters, the same five questions came up again and again:

  1. Floor type: epoxy, tile, concrete, asphalt or something rough.
  2. Load per wheel in kilograms (total load divided by the number of wheels that will really touch the floor, usually 3 of 4).
  3. Noise sensitivity: is this a hospital corridor or a loading dock?
  4. Chemicals or water: washdown areas, oils, cleaning agents.
  5. Temperature: normal, cold rooms, or near ovens.

The decision table

const materials = [
  {
    name: "polyurethane",
    floors: ["epoxy", "tile", "concrete"],
    maxLoadPerWheel: 600,
    quiet: true,
    chemicalResistant: true,
    tempRange: [-30, 80],
  },
  {
    name: "rubber",
    floors: ["tile", "concrete", "asphalt", "rough"],
    maxLoadPerWheel: 250,
    quiet: true,
    chemicalResistant: false,
    tempRange: [-20, 70],
  },
  {
    name: "nylon",
    floors: ["concrete", "rough"],
    maxLoadPerWheel: 800,
    quiet: false,
    chemicalResistant: true,
    tempRange: [-40, 120],
  },
  {
    name: "cast iron",
    floors: ["concrete", "rough"],
    maxLoadPerWheel: 1500,
    quiet: false,
    chemicalResistant: false,
    tempRange: [-40, 300],
  },
];

function suggestMaterial({ floor, loadPerWheel, needsQuiet, wet, temp }) {
  return materials
    .filter((m) => m.floors.includes(floor))
    .filter((m) => m.maxLoadPerWheel >= loadPerWheel * 1.3) // 30% safety margin
    .filter((m) => !needsQuiet || m.quiet)
    .filter((m) => !wet || m.chemicalResistant)
    .filter((m) => temp >= m.tempRange[0] && temp <= m.tempRange[1])
    .map((m) => m.name);
}

console.log(
  suggestMaterial({ floor: "epoxy", loadPerWheel: 120, needsQuiet: true, wet: true, temp: 22 })
); // -> [ 'polyurethane' ]
Enter fullscreen mode Exit fullscreen mode

The numbers above are illustrative ranges, not ratings for a specific product. Always check the real load rating of the exact wheel you buy.

Why the safety margin is there

The * 1.3 line is the one people argue about most. Real carts hit door thresholds, cable covers and expansion joints. Each bump is a short peak load far above the static weight. A margin of 30% or more keeps the wheel from flattening or cracking the first time a trolley rolls over a step.

What the table taught us

Running real cases through the function showed a pattern:

  • On smooth indoor floors with medium loads, polyurethane almost always survives every filter. It protects the floor, stays quiet and handles cleaning chemicals. A manufacturer's range of polyurethane caster wheels is a good place to compare real diameters and load ratings.
  • In hospitals, the quiet and chemical filters remove almost everything except polyurethane and good rubber. Brakes matter there too; dedicated hospital casters with total-lock brakes are listed at https://donyaiecharkh.com/category/hospital-casters.
  • Cast iron and nylon only win where noise does not matter and loads are high.

Add maintenance to the model

A material choice is only half the story. Wheels that are never cleaned or greased fail early, whatever they are made of. If you are building an asset-tracking tool, add a lastServiced date to each cart and alert after a few months. Donyaie Charkh, an industrial caster manufacturer in Iran, published a practical guide that is easy to turn into checklist items: how to maintain industrial casters.

Wrap-up

Turning tribal knowledge into a small, testable function makes procurement conversations much shorter. Fork the table, change the numbers to match your supplier's datasheets, and add the questions your own floors and carts raise.

Top comments (1)

Collapse
 
hiredov profile image
Dov at HireDov •

Making the constraints explicit is the useful part here: floor, per-wheel load, noise, wet or chemical exposure, and temperature are much easier to challenge than “this wheel seems right.” I especially like the reminder that the code’s ranges are illustrative. One practical extension would be to make each recommendation carry its source data (exact wheel model and datasheet revision) and flag unmet inputs instead of silently returning an empty list. For a real cart, I’d also validate the assumed load distribution and shock loads at thresholds with the caster maker; the table is a great shortlist, not a substitute for their rating.