Date.now()
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.
The Date.now() static method returns the number of milliseconds elapsed since the epoch, which is defined as the midnight at the beginning of January 1, 1970, UTC.
Try it
// This example takes 2 seconds to run
const start = Date.now();
console.log("starting timer...");
// Expected output: "starting timer..."
setTimeout(() => {
const ms = Date.now() - start;
console.log(`seconds elapsed = ${Math.floor(ms / 1000)}`);
// Expected output: "seconds elapsed = 2"
}, 2000);
Syntax
Date.now()
Parameters
None.
Return value
A number representing the timestamp, in milliseconds, of the current time.
Description
Reduced time precision
To offer protection against timing attacks and fingerprinting, the precision of Date.now() may be reduced depending on browser settings.
The timestamp is always an integer number of milliseconds, so its resolution is limited to 1 ms in all contexts. This already satisfies certain basic security and privacy needs.
In Firefox, the privacy.reduceTimerPrecision preference is enabled by default. With default settings, the timestamp has 1 ms resolution. If privacy.resistFingerprinting is enabled, the rounding interval is 16.667 ms or the interval configured by privacy.resistFingerprinting.reduceTimerPrecision.microseconds, whichever is larger. The final output is rounded to an integer.
For example, these are possible values in Firefox:
// Reduced time precision (1 ms) with default settings Date.now(); // Might be: // 1519211809934 // 1519211810363 // 1519211811671 // … // Reduced time precision with `privacy.resistFingerprinting` enabled Date.now(); // Might be: // 1519129853489 // 1519129853506 // 1519129853522 // …
Examples
Measuring time elapsed
You can use Date.now() to get the current time in milliseconds, then subtract a previous time to find out how much time elapsed between the two calls.
const start = Date.now();
doSomeLongRunningProcess();
console.log(`Time elapsed: ${Date.now() - start} ms`);
For more complex scenarios, you may want to use the performance API instead.
Specifications
| Specification |
|---|
| ECMAScript® 2027 Language Specification # sec-date.now |
Browser compatibility
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
now |
1 |
12 |
1 |
10.5 |
4 |
18 |
4 |
14 |
4 |
1.0 |
4.4 |
4 |
1.0.0 |
1.0 |
0.10.0 |
See also
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now