Skip to content
Latchkey

c8 vs nyc: Which Node Coverage Tool for CI?

c8 reads native V8 coverage with no instrumentation; nyc (istanbul) instruments code for precise, configurable reports.

c8 uses Node's built-in V8 coverage to report without instrumenting source, which is fast and ESM-friendly. nyc is the istanbul CLI that instruments code for detailed, highly configurable coverage, the long-standing Node standard.

c8nyc
MethodNative V8 coverageistanbul instrumentation
SpeedFast (no instrument)Slower
ESM supportSeamlessWorks (config)
Accuracy/configGood, fewer knobsVery precise, configurable
MaturityModernEstablished standard

In CI

c8 is the faster, lower-friction choice: it reads V8's own coverage data with no build-time instrumentation and handles ESM seamlessly, which trims coverage time. nyc instruments source for very precise, configurable line/branch reporting and integrates with many setups. If speed and ESM matter, c8; if you need fine-grained istanbul reporting and config, nyc.

Coverage in CI

Set a coverage threshold to gate regressions and upload the report to your coverage service. Both add work on top of tests; faster managed runners shorten coverage-heavy runs regardless of tool.

The verdict

Want fast, ESM-friendly coverage with minimal config: c8. Need precise, highly configurable istanbul reports: nyc. For modern ESM projects c8 is often the simpler win; nyc stays strong for detailed reporting.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →