Code coverage that keeps your code private.

Upload coverage reports from CI and get PR comments, status checks, and line annotations. Free for public repos; simple per‑repo pricing for private repos.

  • See untested paths with line, branch, and patch coverage plus complexity/CRAP.
  • Protect merges with coverage and complexity status checks in GitHub.
  • Keep code private; only coverage reports are uploaded.

Setup faster than a standup meeting

In-app view of a active repository using OtterWise

View line-coverage inside GitHub

With our first-party Chrome Extension, you can see code coverage results directly within your GitHub on a per-line level for pull requests, files, commits. Without giving up code privacy.

Treemap coverage

Coverage clarity for the whole repo

Treemap tiles sit side by side so you can spot hot spots instantly. Size reflects lines of code; color reflects coverage. The bigger and warmer the block, the higher the risk.

Uncovered lines by path
Jobs
47.8% coverage
app/Jobs
Uncovered lines: 1,842
Coverage: 47.8%
Gain if covered: +6.2%
Http
44.7% coverage
app/Http
Uncovered lines: 1,214
Coverage: 44.7%
Gain if covered: +5.8%
Transformers
4%
app/Transformers
Uncovered lines: 889
Coverage: 4.0%
Gain if covered: +9.46%
User.tsx
1.2%
ui/User.tsx
Uncovered lines: 326
Coverage: 1.2%
Gain if covered: +4.1%
API
78.6%
app/Api
Uncovered lines: 188
Coverage: 78.6%
Gain if covered: +1.2%
Traits
58.1%
app/Traits
Uncovered lines: 274
Coverage: 58.1%
Gain if covered: +2.0%
Console
42.4% coverage
app/Console
Uncovered lines: 522
Coverage: 42.4%
Gain if covered: +3.8%
Coverage scale (red to green)
A graph visualising Code Coverage change and who caused the increase in coverage

Track trends, spot wins, find gaps

See how coverage changes across every branch. Celebrate the devs boosting your numbers, identify code that's skating by uncovered, and spot patterns before they become problems. Visual graphs that actually tell you something useful.

Cycle time intelligence

See the long tail before it slows releases

Org-wide cycle time percentiles show where work is stuck, while time-to-merge trends reveal if the whole organization is speeding up or drifting. Share one view, align every repo, and ship with confidence.

Percentiles highlight fast paths and the slowest outliers
Time-to-merge trendline for every repo in one org-wide view
Instantly spot teams that are lacking behind
Org-wide cycle time reporting
Average time to merge (days)
Feb Apr Jun Aug Oct Dec Feb

Median (p50)

0.9d

Half of PRs merge in under a day

p75

4.6d

Most PRs still land within the week

p90

18.8d

Long tail visibility for the slowest 10%

Long tail pressure Outliers: 12%
p50 p75 p90+
All repositories included
A preview of GitHub status checks on PRs, preventing uncovered code to be deployed

Block bad code before it ships

Status checks that automatically fail PRs when coverage drops or complexity spikes. Set your own quality thresholds and let automation enforce them. No more "looks good to me" merges that introduce untested code.

API request example for OtterWise

Unlock Your Code Coverage Data with API access

Take control of your Code Coverage data with our user-friendly API. With relaxed rate limiting and inclusion in all plans, accessing your data has never been easier. Exactly as it should be.

Compliance made easy

We never access source code; we only store coverage metrics and minimal service data to run OtterWise.
Read about our code privacy efforts here.

Invite your entire team

All plans (including free) offer unlimited collaborators at no extra charge. You can invite your entire engineering department, designers, PMs, and stakeholders.

Track progress, anywhere

The dashboard contains various coverage graphs to measure progress, and you can even add them to your own dashboard with our API to share with your team outside OtterWise.

Onboarding assistance

All paid plans include priority chat support, and we can help you get running even if you have no CI pipeline yet.

Tailored to your workflow

OtterWise is built for any use case. You can configure which files to ignore, when to fail CI, how to calculate coverage, and much more.

Proactive risk identification

With per-line Code Coverage, type coverage, and much more, OtterWise will enhance the reliability of your codebase.

Works With Your Favourite Tools

Works with any CI that can run tests and upload coverage reports; official guides for GitHub Actions and ChipperCI; others via the bash uploader. Use it with JavaScript, Go, Ruby, .NET, PHP and any other language.

...plus any CI that can run the uploader
Start shipping with confidence

No credit card required for public repos.

Frequently Asked Questions

Should you have any questions not covered here, you can always reach out to [email protected] or on Twitter @getOtterwise and we will do our best to help you out.

We do not access, store or modify your code.

In fact, by default, our servers are not able to access repository code.

By utilizing GitHub annotations and downloadable coverage files, we can offer all the functionality expected of a Code Coverage service, without ever accessing source code.

Your organization can opt-in to permit code access, which will let team members temporarily grant access to render Code Coverage per-line inside OtterWise when enabled.

You can read more about our code privacy efforts here.

OtterWise is language and framework-agnostic, it can be used with any coding language. The only requirement is that your code is hosted on GitHub.com and that your test framework is capable of outputting a Coverage Clover XML or LCOV file.

Most test frameworks have this capability, for example PHPUnit has it built in (requires PCOV or XDebug), and in JavaScript you can get it through istanbuljs/nyc. We have guides as you set up your repository, to help you get started.

We have no minimum commitment. You can cancel anytime through your account, and we will stop billing you immediately, you will continue having access to your service until the end of your billing cycle.

At the end of your billing cycle, we will downgrade you to the free plan and automatically adjust the service accordingly, such as disabling private repositories that exceed the free plan limit. You will still have access to your data.

Public repositories are free forever and you can invite unlimited collaborators, and submit unlimited builds (coverage data) to us. We only charge for private repositories.

Yes! you have 2 trial options:

  • Public repositories are free forever.
  • Private repositories get a 7-day trial and billing starts after the trial.

Yes absolutely. Inside your organization billing page you can click the "Switch to yearly / monthly" and "Update plan" which will instantly switch you to your selection, and prorate accordingly. You can also reach out to us at [email protected] and we will get it sorted for you.

Yes, we offer a no-questions-asked refund policy. Please reach out to us at [email protected] and we will get it sorted for you.

Yes, we only permit logging in through your source code provider (GitHub). Employees removed from your GitHub organization are automatically removed from the respective OtterWise organization.

Yes! Project coverage (coverage across entire repository not just patch) is included in all plans. This gives you a comprehensive view of your codebase's overall test coverage, helping you track quality metrics across your entire project.

Yes! Patch coverage (coverage of the pull request / commit diff) is included in all plans. This shows you exactly which lines in your changes are covered by tests, making it easier to ensure quality before merging.

GitHub today, plus any CI that can run the uploader.

OtterWise tracks line coverage, branch coverage, patch coverage, type coverage, complexity, and CRAP.

Free plans include 6 months of data history, while Pro plans offer unlimited data retention. This means you can view historical reports, track coverage trends, and analyze quality improvements over time.

Yes! We believe in data portability. You can export your coverage reports, metrics, and historical data through our API or by contacting support. We provide multiple export formats for your convenience.

Security is our top priority. We use industry-standard encryption, secure authentication through GitHub, and follow best practices for data protection. Your code privacy is guaranteed with our opt-in code access model.

OtterWise provides comprehensive reporting including weekly/monthly digests, leaderboards, coverage trends, and detailed analytics. Pro plans include enhanced reporting with more detailed insights.

Yes! All plans include unlimited collaborators/team members. You can invite your entire team, manage access through GitHub organizations, and collaborate on coverage improvements with features like PR comments and annotations.

OtterWise is framework-agnostic and supports any testing framework that can output Clover XML or LCOV coverage reports. This includes PHPUnit, Jest, Cypress, RSpec, PyTest, and most other popular testing frameworks across all programming languages.

No, coverage reports only.

Ship better code faster with confidence_

PR comments, status checks, line annotations, and trends without code access. Free for public repos; per-repo pricing for private repos.