Linear scale a number between ranges

Map a value from one range onto another.

JavaScript Version 1.0.0 · MIT · .md

linear-scale-number-in-ranges.js
function linearScale({ value, inMin, inMax, outMin, outMax }) { return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin; }

Input & expected output

Input

{
  "value": 5,
  "inMin": 0,
  "inMax": 10,
  "outMin": 0,
  "outMax": 100
}

Expected output

50

The edge case

Input

{
  "value": 0,
  "inMin": -1,
  "inMax": 1,
  "outMin": 100,
  "outMax": 0
}

Expected output

50

Know the limits

  • Output ranges may be reversed, as the edge case shows. The lab requires inMin ≠ inMax.

The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.

Source & maintenance

Based on Linear Scale of a Number between two ranges from the original 1loc collection by Nguyen Huu Phuoc, with iamandrewluca. Copyright (c) 2020 phuoc-ng. MIT licensed.

Takes named fields as one object. Original MDX retained as inert source evidence.

Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.

Local fixture scope · Node.js 22.23.2 · reviewed October 28, 2026. No external service is required.

Keep exploring

Type two or more characters. Try “duplicate”, “webhook” or “retry”.