The workerStart read-only property of the PerformanceResourceTiming interface returns a DOMHighResTimeStamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. If the resource is not intercepted by a Service Worker the property will always return 0.

Note: This feature is available in Web Workers



In the following example, the value of the *Start and *End properties of all "resource" type events are logged.

function print_PerformanceEntries() {
  // Use getEntriesByType() to just get the "resource" events
  const p = performance.getEntriesByType("resource");
  for (let i=0; i < p.length; i++) {
function print_start_and_end_properties(perfEntry) {
  // Print timestamps of the PerformanceEntry *start and *end properties
  properties = ["connectStart", "connectEnd",
                "domainLookupStart", "domainLookupEnd",
                "redirectStart", "redirectEnd",
                "responseStart", "responseEnd",

  for (let i=0; i < properties.length; i++) {
    // check each property
    const value = perfEntry[properties[i]];
    if (properties[i] in perfEntry) {
      console.log(`${properties[i]} = ${value}`);
    } else {
      console.log(`${properties[i]} = NOT supported`);


Resource Timing Level 2
# dom-performanceresourcetiming-workerstart

Browser compatibility

BCD tables only load in the browser