# Codecov vs Supercov: reporting coverage vs measuring it > Codecov reports coverage your tools already measured; Supercov measures it, including MC/DC and assertion coverage. Gate pull requests with either, or use both. Web page: https://supercov.com/compare/codecov · Published 2026-09-25 All Supercov pages for agents: https://supercov.com/llms.txt · Full text: https://supercov.com/llms-full.txt ## What is the difference? Codecov does not measure coverage. It receives the report your coverage tool already wrote and turns it into pull-request checks, comments and history. Codecov's documentation says it ["centrally ingests"](https://docs.codecov.com/docs/supported-report-formats) XML, JSON and text reports: Cobertura, JaCoCo, LCOV, Go and more. Supercov measures. It runs your existing test command and records which lines, branches and conditions ran, for each test, and which source statements the tests' assertions check. Everything stays in the repository's `.supercov/` directory; there is no account and nothing is uploaded. So the two are not alternatives in the usual sense. You can gate pull requests with either, or measure with Supercov and report with Codecov. ## Compare what each one does | Question | Codecov | Supercov | | --- | --- | --- | | Measures coverage itself | No, it needs a report from a coverage tool | Yes, it wraps your test command | | Coverage criteria | Whatever the uploaded report contains | Lines, branches, MC/DC, per test and assertion coverage | | Gate a pull request | `codecov/project` and `codecov/patch` status checks | `runs check` floors and `runs patch` in your CI job | | Feedback on the pull request | Comments and a web dashboard | GitHub annotations, with no token and no comment | | History across commits | Kept by the service | Local runs you can compare with `diff` | | Where the data goes | Uploaded to Codecov | Stays on the machine | | Account | Free for one user on private repositories and for open source; paid per user beyond that | None | Codecov's patch check ["only measures lines adjusted in the pull request"](https://docs.codecov.com/docs/commit-status), and its project check compares overall coverage with the pull request's base. Plan details are from [Codecov's pricing page](https://about.codecov.io/pricing/) in September 2026; check it for current limits, such as uploads per month on the free plan. ## Use both: measure with Supercov, report with Codecov If your team already reviews coverage in Codecov, keep it. Supercov writes the formats Codecov reads, from the same totals its own checks use: ```sh npx supercov -- npm test npx supercov runs report --format lcov --output coverage/lcov.info ``` Then upload `coverage/lcov.info` with [Codecov's CLI](https://docs.codecov.com/docs/codecov-uploader) or GitHub Action, as you would any LCOV file. `--format cobertura` writes Cobertura XML instead. Two things do not travel. MC/DC conditions are not exported as branches, because Codecov would then show condition obligations as branch coverage, a different measurement. And LCOV hit counts are `1` or `0`: Supercov records that a line ran, not how many times. The condition detail stays in Supercov's own queries and [HTML report](https://supercov.com/docs/reports.md). ## Or gate pull requests without a hosted service Supercov can answer Codecov's two questions in the CI job itself: ```sh npx supercov -- npm test npx supercov runs patch --base origin/main --min-lines 100 --annotate github npx supercov runs check --min-lines 90 --min-branches 80 --min-mcdc 80 ``` `runs patch` checks only the lines the change added or modified, against the merge base, so commits others landed after you branched are not counted against you. Check out full history for it (`actions/checkout` with `fetch-depth: 0`). `runs check` fails the job below a floor, and it refuses to pass on a run whose tests failed. The [CLI reference](https://supercov.com/docs/cli.md) lists every flag. What you give up is the hosted part: a dashboard across repositories, trends over months and a comment on every pull request. ## What neither report tells you Line and branch coverage, in Codecov or anywhere else, says what ran. A test can run every line of a checkout function and check only the order's status, never its total. Supercov's [assertion coverage](https://supercov.com/docs/assertions.md) links source statements to the assertions that check them, and [MC/DC](https://supercov.com/docs/mcdc.md) shows a condition that never changed an outcome on its own. That is also what a coding agent needs to write the next test. It can ask Supercov which conditions are missing and which statements no assertion checks, then rerun the suite to confirm, without a hosted service in the loop. ## Which should you choose? - **Keep Codecov** if your team works from its dashboards, pull-request comments and history across many repositories. Add Supercov underneath when you want MC/DC or assertion coverage, and export its LCOV. - **Use Supercov alone** if you want coverage gates without an account or an upload, or if the main reader of the result is a coding agent. - **Use both** when people review coverage in Codecov and agents fix it with Supercov. For how Supercov fits beside test runners, mutation testing and browser tests, see [QA tools for coding agents](https://supercov.com/compare/qa-tools-for-coding-agents.md).