Math.log()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
TheMath.log() static method returns the natural logarithm (basee) of a number. That is
In this article
Try it
function getBaseLog(x, y) { return Math.log(y) / Math.log(x);}// 2 x 2 x 2 = 8console.log(getBaseLog(2, 8));// Expected output: 3// 5 x 5 x 5 x 5 = 625console.log(getBaseLog(5, 625));// Expected output: 4Syntax
Math.log(x)Parameters
xA number greater than or equal to 0.
Return value
The natural logarithm (basee) ofx. Ifx is ±0, returns-Infinity. Ifx < 0, returnsNaN.
Description
Becauselog() is a static method ofMath, you always use it asMath.log(), rather than as a method of aMath object you created (Math is not a constructor).
If you need the natural log of 2 or 10, use the constantsMath.LN2 orMath.LN10. If you need a logarithm to base 2 or 10, useMath.log2() orMath.log10(). If you need a logarithm to other bases, useMath.log(x) / Math.log(otherBase) as in the example below; you might want to precalculate1 / Math.log(otherBase) since multiplication inMath.log(x) * constant is much faster.
Beware that positive numbers very close to 1 can suffer from loss of precision and make its natural logarithm less accurate. In this case, you may want to useMath.log1p instead.
Examples
>Using Math.log()
Math.log(-1); // NaNMath.log(-0); // -InfinityMath.log(0); // -InfinityMath.log(1); // 0Math.log(10); // 2.302585092994046Math.log(Infinity); // InfinityUsing Math.log() with a different base
The following function returns the logarithm ofy with basex (i.e.,):
function getBaseLog(x, y) { return Math.log(y) / Math.log(x);}If you rungetBaseLog(10, 1000), it returns2.9999999999999996 due to floating-point rounding, but still very close to the actual answer of 3.
Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.log> |