# Clamp or map a number to a range in JavaScript

Clamping a number means to restrict it to a certain range. Mapping a number to a range means to convert it from one range to another. Both operations are common in JavaScript and can be easily implemented using simple math.

## Clamp a number

In order to clamp a number, you can use `Math.max()` and `Math.min()` to find the closest value within the specified range.

```const clampNumber = (num, a, b) =>
Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));

clampNumber(2, 3, 5); // 3
clampNumber(1, -1, -5); // -1```

### Convert a number to a safe integer

A special case of clamping a number is converting it to a safe integer. You can use the `Number.MAX_SAFE_INTEGER` and `Number.MIN_SAFE_INTEGER` constants to find the closest safe value. Additionally, use `Math.round()` to convert to an integer.

```const toSafeInteger = num =>
Math.round(
Math.max(Math.min(num, Number.MAX_SAFE_INTEGER), Number.MIN_SAFE_INTEGER)
);

toSafeInteger('3.2'); // 3
toSafeInteger(Infinity); // 9007199254740991```

## Map a number to a range

Mapping a number to a range is a simple linear transformation. Provided the original and the target range, you can map between the limits of the two ranges.

```const mapNumRange = (num, inMin, inMax, outMin, outMax) =>
((num - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;

mapNumRange(5, 0, 10, 0, 100); // 50```

## More like this

• JavaScript ·

### Formatting numeric values in JavaScript

Learn common number formatting operations, such as rounding, padding, optional decimal marks, currency, seconds, bytes, and more.

• JavaScript ·

### Generate a random number or integer in a range with JavaScript

Enhance JavaScript's `Math.random()` to generate a random number or integer in a specified range.

• JavaScript ·

### Check if two numbers are approximately equal in JavaScript

Learn how to check if two numbers are approximately equal to each other in JavaScript.

• JavaScript ·

### Sum of powers in range

s the sum of the powers of all the numbers from `start` to `end` (both inclusive).

Start typing a keyphrase to see matching snippets.