This clears up a confusion I have heard a lot. Saying Node is single threaded is true for the JavaScript, but it hides the work happening around it. Your table makes the split easy to follow, especially the four V8 threads for garbage collection and JIT work versus the separate libuv pool. The line I will remember is simple: JavaScript execution is single threaded, but the process executing it is multi threaded. That distinction makes debugging slow startups and blocked loops much easier to reason about.