Skip to content
100% local

CODEOWNERS validator

Check a CODEOWNERS file for invalid patterns, missing owners and rules that can never take effect.

Input
Paths to check (one per line)
Output

CODEOWNERS validator

Paste the contents of a CODEOWNERS file and this tool checks it the way a reviewer would, line by line. It flags patterns that can't be parsed, usernames and teams that are written incorrectly, malformed email addresses, and rules that quietly duplicate or shadow one another — including a rule buried above a later catch-all pattern that has silently taken over every path it used to own.

Pick the platform your repository uses — GitHub, GitLab or Bitbucket — since GitLab's optional section headers ("[Frontend]") aren't recognized on the other two, and a file written for one platform can silently do nothing on another. Turn on "Report paths without an owner" to call out any tested path that no rule covers, "Sort path results by rule order" to group the second field's results by which line decided them instead of the order you pasted them in, and "Show rule count per owner" to see who owns the most of the file at a glance.

Paste a list of file paths into the second field to test them against the rules: CODEOWNERS uses the same "last matching rule wins" logic as .gitignore, so the tool reports exactly which line and which owner apply to each path — not just whether a pattern looks valid. Both Windows and Unix line endings are handled the same way, and the report stays a valid, commented CODEOWNERS file you can read straight from the output.

Everything runs locally in your browser. Your file and the paths you test are never uploaded anywhere, which matters for a file that can list private team and repository structure. Copy the annotated result, download it as a .txt file, or send it back to the input to fix an issue and check again.

FAQ

What counts as a rule that "can never take effect"?
Two cases: an exact duplicate of an earlier pattern (the later line always wins, so the earlier one is dead weight), and a broad catch-all pattern like "*" placed after a more specific rule, which silently overrides everything above it.
How does the tool decide which owner applies to a path?
The same way GitHub, GitLab and Bitbucket do: it walks the rules in file order and the last pattern that matches a given path wins, even if an earlier, more specific-looking rule also matched.
Why does the platform choice matter if the syntax looks the same?
Most of CODEOWNERS syntax is shared, but GitLab-only features like section headers are simply inert text on GitHub and Bitbucket — the tool flags them so you notice before a review requirement quietly fails to apply.
Does it check that the usernames or teams actually exist?
No — it only checks that they are well formed (valid characters, one "/" for a team, a real-looking email). Confirming a username or team still exists in your organization requires checking against GitHub, GitLab or Bitbucket itself.
Is my CODEOWNERS file uploaded anywhere?
No. Validation runs entirely in your browser — the file and any paths you test never leave your device.