A worked example, rendered from real sample data. Sign in to run the tool on your own input.
feature/user-auth
Feature/UserAuth
fix/login_bug
main
hotfix/urgent fix═══ Summary ═══
Branches checked: 5
Convention: conventional (type/kebab-description)
Pattern: ^(?:feat|fix|chore|docs|refactor|test|perf|build|ci|style|revert|hotfix|release|feature|bugfix)/[a-z0-9]+(?:-[a-z0-9]+)*$
Max length: 60
✗ 2 of 5 pass — 3 need renaming
ℹ Names are checked against git's own ref rules and the convention you picked. Nothing is read from a remote.
═══ Results ═══
✓ feature/user-auth
✗ Feature/UserAuth
• does not match the conventional (type/kebab-description) pattern
• contains uppercase letters — case-insensitive filesystems can collide on these
Suggested: feat/user-auth
✗ fix/login_bug
• does not match the conventional (type/kebab-description) pattern
• uses underscores; hyphens are the usual separator
Suggested: fix/login-bug
✓ main (protected branch, convention not enforced)
✗ hotfix/urgent fix
• git refuses this name: it contains a character git forbids in a ref: space ~ ^ : ? * [ \
• does not match the conventional (type/kebab-description) pattern
Suggested: hotfix/urgent-fix
═══ Rules applied ═══
• Must match: ^(?:feat|fix|chore|docs|refactor|test|perf|build|ci|style|revert|hotfix|release|feature|bugfix)/[a-z0-9]+(?:-[a-z0-9]+)*$
• Must satisfy git check-ref-format: no space ~ ^ : ? * [ \, no "..", no "@{", no trailing ".lock"
• At most 60 characters
• Lowercase with hyphens, so case-insensitive filesystems cannot collide
• Exempt: main, master, develop, dev, staging, production, release
═══ CI check you can commit ═══
name: Branch name
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
check:
r
…
Validate branch names against naming conventions and patterns with suggestions. Part of the DevTools Surf developer suite. Browse more tools in the DevOps / CI-CD collection.