diff --git a/packages/nyc-test-coverage/README.md b/packages/nyc-test-coverage/README.md
index 923be414f..07a8dab83 100644
--- a/packages/nyc-test-coverage/README.md
+++ b/packages/nyc-test-coverage/README.md
@@ -87,4 +87,9 @@ worker = await Worker.create(workflowCoverage.augmentWorkerOptions({
 afterAll(() => {
   workflowCoverage.mergeIntoGlobalCoverage();
 });
-```
\ No newline at end of file
+```
+
+## Usage with vitest
+
+This package works with [vitest](https://vitest.dev/) code coverage. Make sure you have configured vitest to use the 
+`instanbul` provider https://vitest.dev/guide/coverage.html#coverage-providers.
diff --git a/packages/nyc-test-coverage/src/globalCoverage.ts b/packages/nyc-test-coverage/src/globalCoverage.ts
index 057b914f7..ccdbd2407 100644
--- a/packages/nyc-test-coverage/src/globalCoverage.ts
+++ b/packages/nyc-test-coverage/src/globalCoverage.ts
@@ -3,6 +3,8 @@ import { CoverageMapData } from 'istanbul-lib-coverage';
 declare global {
   // eslint-disable-next-line no-var
   var __coverage__: CoverageMapData;
+  // eslint-disable-next-line no-var
+  var __VITEST_COVERAGE__: CoverageMapData;
 }
 
 export {};
diff --git a/packages/nyc-test-coverage/src/index.ts b/packages/nyc-test-coverage/src/index.ts
index b4e5b4d9e..1cbce975b 100644
--- a/packages/nyc-test-coverage/src/index.ts
+++ b/packages/nyc-test-coverage/src/index.ts
@@ -12,7 +12,7 @@ export class WorkflowCoverage {
   // Check if running through nyc or some other Istanbul-based tool.
   // If not, any `workflowCoverage()` tools are a no-op.
   private hasCoverageGlobal() {
-    return '__coverage__' in global;
+    return coverage() !== undefined;
   }
 
   /**
@@ -205,3 +205,7 @@ export class WorkflowCoverage {
     global.__coverage__ = coverageMap.data;
   }
 }
+
+function coverage() {
+  return global.__coverage__ ?? global.__VITEST_COVERAGE__;
+}