Linear scale of a number between two ranges

The arrow-function form of the same mapping.

JavaScript Version 1.0.0 · MIT · .md

linear-scale-of-a-number-between-two-ranges.js
function scale({ value, from, to }) { return ((value - from[0]) * (to[1] - to[0])) / (from[1] - from[0]) + to[0]; }

Input & expected output

Input

{
  "value": 0.5,
  "from": [
    0,
    1
  ],
  "to": [
    0,
    255
  ]
}

Expected output

127.5

The edge case

Input

{
  "value": 2,
  "from": [
    0,
    1
  ],
  "to": [
    0,
    10
  ]
}

Expected output

20

Know the limits

  • Values outside the input range extrapolate, as the edge case shows.

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 value, from and to ranges 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”.