Web/JavaScript/Reference/Global objects/Number/MAX SAFE INTEGER

From Get docs


The Number.MAX_SAFE_INTEGER constant represents the maximum safe integer in JavaScript (253 - 1).

For larger integers, consider using BigInt.


Property attributes of Number.MAX_SAFE_INTEGER
Writable no
Enumerable no
Configurable no


Description

The MAX_SAFE_INTEGER constant has a value of 9007199254740991 (9,007,199,254,740,991 or ~9 quadrillion). The reasoning behind that number is that JavaScript uses double-precision floating-point format numbers as specified in IEEE 754 and can only safely represent integers between -(253 - 1) and 253 - 1.

Safe in this context refers to the ability to represent integers exactly and to correctly compare them. For example, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 will evaluate to true, which is mathematically incorrect. See Number.isSafeInteger() for more information.

This field does not exist in old browsers. Using it without checking its existence, such as Math.max(Number.MAX_SAFE_INTEGER, 2), will yield undesired results such as NaN.

Because MAX_SAFE_INTEGER is a static property of Number, you always use it as Number.MAX_SAFE_INTEGER, rather than as a property of a Number object you created.

Polyfill

if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}

Examples

Return value of MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER; // 9007199254740991

Numbers higher than safe integer

This returns 2 because in floating points, the value is actually the decimal trailing "1" except for in subnormal precision cases such as zero.

Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2

Specifications

Specification
ECMAScript (ECMA-262)The definition of 'Number.MAX_SAFE_INTEGER' in that specification.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
MAX_SAFE_INTEGER Chrome

Full support 34

Edge

Full support 12

Firefox

Full support 31

IE

No support No

Opera

Full support 21

Safari

Full support 9

WebView Android

Full support ≤37

Chrome Android

Full support 34

Firefox Android

Full support 31

Opera Android

Full support 21

Safari iOS

Full support 9

Samsung Internet Android

Full support 2.0

nodejs

Full support 0.12

Legend

Full support  
Full support
No support  
No support


See also