1. Home
  2. Developer tools
  3. Conventional Commit Builder

Conventional Commit Builder

Write commits that changelog generators and release tools such as semantic-release can read, and that teammates can scan in git log.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use Conventional Commit Builder

  1. Choose the type, optional scope and breaking-change flag.
  2. Write the summary, body and footers.
  3. Copy the message or the git commit command.

Features

  • All standard types with their release impact
  • Header length, mood, case and full-stop checks
  • Body wrapped at 72 characters
  • BREAKING CHANGE, Closes # and Co-authored-by footers
  • Next version per SemVer 2.0, with 0.x handled

Supported formats

Input

  • Form input

You get

  • TXT
  • Copied text

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the Conventional Commit Builder is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • Checks follow common commitlint rules; your repository may configure different types or lengths.

Guide

Writing Conventional Commits and working out the next version

Conventional Commits is a small convention for commit messages that makes history readable for people and machines. Release tools such as semantic-release, release-please and changesets read it to decide the next version number and to write changelogs. This builder writes messages in the format, checks the style rules most teams use, and shows which version the change would release.

The structure

A message has a header, an optional body and optional footers, separated by blank lines. The header is type(scope): description, where the scope is optional and names the part of the code, such as api or checkout. An exclamation mark before the colon marks a breaking change. The body explains what changed and why, wrapped at 72 characters so it reads well in terminals. Footers hold structured information such as BREAKING CHANGE: notes, issue references and co-authors.

Types and what they release

feat is a new feature and releases a minor version. fix is a bug fix and perf a performance improvement, both patch releases, as is revert. docs, style, refactor, test, build, ci and chore describe changes that do not affect users directly and release nothing on their own. A breaking change of any type releases a new major version.

Breaking changes

There are two ways to mark one, and the builder uses both when you tick the option: the ! in the header, which shows up in one-line logs, and a BREAKING CHANGE: footer that explains what users must change. The footer is what changelog generators quote, so describe the migration, not just the fact.

The style checks

The builder warns when the header is longer than 72 characters, because git log, GitHub and many tools cut it off; 50 is a good target. It suggests starting the description in lower case and leaving out the final full stop, by convention. It also flags descriptions that start with “added”, “fixed” or “updates” and suggests the imperative mood, as if completing the sentence “If applied, this commit will …”.

From commit to version

Semantic Versioning 2.0 numbers releases as MAJOR.MINOR.PATCH. Enter the current version and the builder shows the next one for this commit: a feat on 1.4.2 releases 1.5.0, a fix 1.4.3, and a breaking change 2.0.0. While a project is still below 1.0.0, breaking changes bump the minor version instead, as most release tools do, because 0.x versions promise no stability.

A worked example

The Sample is a breaking feature in the auth scope. Its header is feat(auth)!: require email verification before first login, followed by a two-line body, a footer BREAKING CHANGE: the /login endpoint now returns 403 with code "email_unverified" for unverified accounts. and Closes #482. From version 1.4.2 the next version is 2.0.0, and the shell line repeats the message as a git commit command with one -m per paragraph.

Making it stick

To enforce the format, add commitlint with the conventional preset and run it in a Git hook or in CI on pull request titles. Keep the list of scopes short and documented, and let the tooling write the changelog from the history.

Checked against the current version of the Conventional Commit Builder on .

Troubleshooting

The download did not start

Look for your browser’s download bar or icon. Some browsers ask once before a site may download files; allow it and click the button again.

Frequently asked questions

Should every commit in a pull request follow the format?

If the pull request is merged with a merge commit or rebased, yes, because each commit lands in history. With squash merging, only the final squashed message matters, so many teams enforce the format on pull request titles and let individual commits be informal.

Where should the issue number go?

In a footer, such as Closes #482, rather than in the description. GitHub and GitLab close the issue when the commit reaches the default branch, and keeping it out of the header leaves the short summary readable in git log --oneline.

Does a docs or chore commit create a release?

Not with the default rules of semantic-release and similar tools: only feat (minor), fix and perf (patch) and breaking changes (major) trigger a release. Other types still appear in the history.

Should the scope be a folder or a feature?

Whatever readers recognise. Many teams use package names in a monorepo (feat(api): …) or product areas (fix(checkout): …). Keep the list short and agree on it, or tooling such as commitlint cannot enforce it.

Keep working with the result

After you download, choose “Save to Workstand” to keep the result in a folder on your computer, attach it to a project and create a follow-up task. It is saved by your browser, not uploaded.