DOM Interactive

When the browser finishes parsing the HTML — and why that's not the same as the page being usable.

DOM Interactive is the point at which the browser has finished parsing the HTML document and built the DOM tree, so JavaScript can start querying and modifying it. Subresources — images, stylesheets, scripts — may still be loading.

How Witnes captures it

Witnes reads this value from PerformanceNavigationTiming.domInteractive, which is set by the browser's HTML parser the moment it reaches the end of the document. It is a browser-native timestamp and not estimated.

In practice

DOM Interactive does not mean the page is usable. JavaScript frameworks that boot after DOM Interactive (attaching event listeners, hydrating components) may take hundreds of milliseconds more before the user can actually interact. The gap between DOM Interactive and true interactivity is sometimes called the interaction dead zone.

That said, a high DOM Interactive is always a signal worth investigating — it means the parser itself was slow, which flows through to everything else.

What slows it down

  • Parser-blocking scripts<script> tags without async or defer pause HTML parsing until they download and execute.
  • Large HTML payloads — more bytes to download and parse before the end of the document is reached.
  • Slow TTFB — if the server is slow to send the HTML, DOM Interactive inherits that delay. Check TTFB first.

Further reading

PerformanceNavigationTiming.domInteractive — MDN