{{ result.summaryTitle }}
{{ result.primary }}
{{ result.summaryLine }}
{{ badge.label }}
Changelog generator inputs
Use the release heading users should see in CHANGELOG.md.
ISO dates keep the generated heading clear across regions.
Choose how the release notes you paste should be parsed.
{{ semverPolicyHelp }}
Release entry is ready to paste into an existing changelog; full file adds the standard header.
{{ sourceHelp }}
{{ fileStatus || 'Drop TXT, MD, or LOG onto the textarea.' }}
Optional title context for full-file output and DOCX exports.
Paste the project repository URL when you want compare links.
Optional compare-base version for reference links.
Off omits categories with no entries.
{{ include_empty_sections ? 'Include' : 'Omit' }}
Add an empty Unreleased heading above the release entry in full-file output.
{{ include_unreleased ? 'Add' : 'Skip' }}
Leave off when repeated entries are intentional review notes.
{{ collapse_duplicates ? 'Collapse' : 'Keep' }}
Use only when the release was withdrawn after publication.
{{ yanked_release ? 'Yanked' : 'Normal' }}
{{ result.markdown }}
# Category Change Source SemVer signal Copy
No change entries parsed yet.
{{ row.index }} {{ row.category }} {{ row.change }} {{ row.source }} {{ row.semver }}
Check Status Detail Action Copy
{{ row.check }} {{ row.status }} {{ row.detail }} {{ row.action }}
Customize
Advanced
:

Release work leaves behind a technical history and a reader-facing history. The technical history explains how code moved from one state to another. The reader-facing history explains what changed for people who install, operate, test, support, or depend on the software.

A useful changelog sits between raw engineering notes and a polished announcement. It should be specific enough for someone to decide whether an upgrade matters, but concise enough that security fixes, removals, deprecations, and compatibility changes are not buried under routine maintenance. Teams often use it during release review, customer support triage, dependency upgrades, incident follow-up, and migration planning.

Commit log
A chronological engineering trail. It is valuable for maintainers, but it can include noisy, internal, or partial changes.
Release notes
Reader-facing notes for a release. They may be short, but they should explain the notable user, operator, or integrator impact.
Changelog
A versioned history of release notes, normally ordered newest first and grouped by change type.
Migration notes
Extra instructions for upgrades that change behavior, remove support, or require configuration work.

Stable sections make the document easier to scan across releases. Additions answer what is new, fixes answer what was corrected, deprecations and removals warn about upgrade work, and security entries tell readers which releases deserve extra attention. Vague catch-all sections make review harder because readers must infer whether a change affects compatibility, risk, or only internal housekeeping.

Release notes moving from source lines into changelog sections, Markdown output, and SemVer review.

Semantic Versioning and changelog writing answer related but separate questions. A version number gives a compatibility signal: patch for backward-compatible fixes, minor for backward-compatible additions or deprecations, and major for incompatible public API changes. A changelog explains human impact, including security urgency, configuration work, support notes, or migration steps that a number alone cannot carry.

Automation earns its place when it turns messy release text into a structured draft for review. Prefixes, section headings, and Conventional Commit subjects can sort entries consistently, but they cannot know whether a change is public, whether a deprecation is complete enough, or whether a security note should be intentionally vague. The final changelog still needs a maintainer to check impact, wording, and release policy.

The common mistake is treating generated release notes as proof that the release is ready. A clean draft means the notes have been organized. It does not prove that every important change was captured, that the compare range is correct, or that the version number matches the real compatibility change.

How to Use This Tool:

Start with the release identity, then choose the input shape that matches the notes you already have.

  1. Enter Version as a release number such as 2.4.0, a tag-style value such as v2.4.0, or Unreleased when the notes are not published yet. The generated heading uses this value.
  2. Set Release date for a published release. Use a full ISO date such as 2026-05-31; the Release Audit will ask for review when a published heading has a blank or non-ISO date.
  3. Choose Source format. Use Categorized entries for lines like fixed: repair export spacing, Keep a Changelog Markdown sections for pasted ### Added style blocks, or Conventional commits for subjects like feat(api): add filters.
  4. If Conventional commits is selected, choose the SemVer signal policy. Strict mode follows feat, fix, !, and BREAKING CHANGE:; release-note category mode also lets Removed, Deprecated, Security, and Changed entries influence the signal.
  5. Pick Output scope. Release entry only is ready to paste into an existing changelog; Full CHANGELOG.md adds the standard heading and can include an empty Unreleased section.
  6. Paste the release changes, drop a TXT, MD, or LOG-style file, or load the sample. Use Normalize lines if copied text has trailing spaces or mixed line endings. Files over 512 KB are rejected, so paste a smaller excerpt when needed.
  7. Review Changelog Markdown, Change Ledger, and Release Audit before copying, downloading Markdown, exporting tables, or reusing JSON. Warnings above the results point to uncategorized lines, skipped headings, duplicate handling, missing links, or date/version problems.

Use the Advanced controls only when they change the published draft. A project name is useful for full-file output, reference compare links need a repository URL and previous version, duplicate collapsing should be turned on only when repeated entries are accidental, and Yanked release should be reserved for a release that was withdrawn after publication.

Interpreting Results:

Read the summary as a release-note health check, not as a publishing decision. The change count shows how much input was accepted, the section count shows how widely the notes were distributed, and the SemVer signal reports the strongest parsed compatibility hint under the selected policy.

A clean Markdown draft can still be incomplete. The Change Ledger and Release Audit catch misplaced categories, skipped lines, missing dates, duplicate cleanup, and version-link assumptions before the text is copied into a project repository.

Changelog result cues and review actions
Result Cue Meaning Review Action
Major SemVer signal A breaking marker or removal produced the strongest parsed signal. Confirm the release notes name the migration risk before tagging.
Minor SemVer signal An added, changed, or deprecated entry is the strongest signal under release-note category mode, or a feat entry is strongest under strict mode. Check that compatible additions and deprecation plans are described clearly.
Patch SemVer signal Fix or security evidence is strongest, with no stronger compatibility marker found. Verify that fixes are backward compatible and security wording is appropriately specific.
Release Audit status Review A version, date, parsing, duplicate, or compare-link condition needs attention. Fix the listed condition, then re-check the generated heading and links.
Uncategorized line warning A line was accepted but placed under Changed because no recognized category was found. Add a prefix such as added:, fixed:, or security: when Changed is not accurate.
Change Ledger mismatch The visible category, original source cue, or SemVer signal does not match release intent. Edit the input wording or mode before treating the Markdown as final.

The strongest false-confidence risk is a structurally tidy changelog with the wrong public impact. Compare the Markdown with the Change Ledger, then verify the Release Audit before copying the draft or reusing the JSON output.

Technical Details:

Changelog generation is a deterministic text-classification task. Each accepted line needs a section, a cleaned reader-facing sentence, a traceable cue from the input, and a release signal that can be reviewed before publication. The same pasted notes should produce the same grouping until the text, source format, or SemVer policy changes.

The governing logic is rule-based rather than formula-based. Version review depends on categories, Conventional Commit markers, breaking-change signals, date validity, and optional compare-link context. Every ledger row should explain why a line landed in a section and why it raised, or did not raise, the SemVer signal.

Transformation Core:

Input lines move through one of three parsing paths. Empty lines are ignored, simple Markdown bullets are stripped where they are part of the source format, and recognized category language is normalized to the Keep a Changelog section set.

Changelog source parsing paths and output behavior
Input Pattern Classification Rule Resulting Output
Prefixed line such as added:, fixed:, or security: The prefix maps to one supported changelog category and the rest of the line becomes the entry text. The Markdown entry appears under that section, and the ledger records the prefix cue.
Markdown heading such as ### Added The heading becomes the active category for following bullet or plain lines. Entries inherit that category until another recognized section heading appears.
Conventional Commit subject such as feat(ui): add filters The type maps to a changelog category; the optional scope is kept as part of the change text. The ledger records the parsed type, section, entry text, and SemVer signal.
Breaking marker such as feat!: or a breaking-change footer The entry is marked as breaking, regardless of its ordinary category. The strongest SemVer signal becomes Major.
Duplicate category and entry text The duplicate remains unless duplicate collapsing is enabled. Collapsed duplicates are counted in warnings and audit rows.

Category Map:

Keep a Changelog uses a small section vocabulary, so similar wording is folded into stable headings. The map is intentionally conservative: unclear lines in categorized mode become Changed with a warning rather than being silently discarded.

Recognized changelog categories and representative aliases
Section Representative Accepted Cues SemVer Category Signal
Added added, add, feat, feature, new Minor
Changed changed, update, improve, refactor, perf, docs, chore, build, ci, style, test Minor in release-note category mode
Deprecated deprecated, deprecate, deprecation Minor
Removed removed, remove, delete Major in release-note category mode
Fixed fixed, fix, bugfix, bug, patch Patch
Security security, secure, sec, vulnerability, cve Patch in release-note category mode

Rule Core:

The version signal is a review hint, not a release command. When multiple entries are present, the strongest signal wins in this order: Major, Minor, Patch, then No bump.

SemVer signal rules for changelog categories and Conventional Commit input
Evidence Release-Note Category Mode Conventional Strict Mode Reader Meaning
Breaking marker or breaking-change footer Major Major Compatibility review and migration wording are required.
Removed entry Major No bump unless the commit marker itself is breaking, feat, or fix Removal often needs a migration note even when strict commit policy does not raise the signal.
Added, Changed, or Deprecated entry Minor Minor only for feat Readers should see new capability or planned removal clearly.
Fixed or Security entry Patch Patch only for fix Readers should see the compatible correction or security fix.
Documentation, build, CI, chore, style, test, refactor, or performance type Mapped by generated category No bump unless breaking The entry may still belong in notes, but strict mode does not raise the signal.

Validation Boundaries:

Release metadata is checked separately from text classification because a well-grouped changelog can still have an unsafe heading or broken compare context.

Changelog validation checks and boundaries
Check Ready Condition Review Condition
Version heading A version value or Unreleased is available. Blank input falls back to an Unreleased heading and raises a warning.
Version semantics The version is full MAJOR.MINOR.PATCH syntax, with optional prerelease or build metadata, or it is Unreleased. Short labels such as 2.4 need review before publication.
Release date Published releases use YYYY-MM-DD; Unreleased notes do not need a date. Blank or non-ISO dates on published releases are flagged.
Reference links Compare links are requested with a repository URL and release version. Missing repository context keeps links from being reliable.
Plain source files TXT, MD, or LOG-style files under 512 KB can be loaded into the release-change field. Larger or non-text files should be replaced with a pasted excerpt.

Release headings accept a supplied version or Unreleased. Published versions use a date in the heading, yanked releases add [YANKED], and full changelog output can add the standard top heading plus an optional empty Unreleased section.

Reference compare links are appended only when link output is requested and the needed repository context is present. A previous version creates a comparison range; a blank previous version turns the current version into a release-tag link.

Privacy Notes:

Release notes often contain unreleased product details, security context, customer-impact wording, or internal issue language. Treat pasted text as draft release material until it has been reviewed for public wording and disclosure timing.

  • Changelog Markdown, the Change Ledger, the Release Audit, and JSON are generated in the browser from the text you enter.
  • Dropped TXT, MD, or LOG-style files are read into the release-change field so you can inspect the content before using the output.
  • Copied or downloaded output should be reviewed before it is committed, attached to a release, or shared with customers.

Worked Examples:

Category-prefixed maintenance release. Input such as fixed: Preserve blank lines in copied release notes and security: Redact token values in audit downloads should produce Fixed and Security sections. The summary should show a Patch SemVer signal, and the Release Audit should still be checked for date and version readiness.

Conventional Commit feature release. With feat(exports): add Markdown download, fix(parser): keep scoped commits, and docs: refresh examples, Conventional Commit strict mode should classify the feature as Added, the fix as Fixed, and the docs entry as Changed with no bump effect. The strongest signal should be Minor.

Markdown section import. A pasted block headed ### Deprecated with bullets underneath should keep those bullets in the Deprecated section until a new recognized heading appears. A later ### Internal heading is not a supported changelog section, so lines beneath it need review or a supported heading.

Breaking release review. A subject such as perf!: remove legacy cache should raise a Major signal even though perf alone has no strict SemVer bump. The generated Markdown may look ready, but the release still needs migration wording and a deliberate version decision.

Troubleshooting an unclear paste. A line like Updated export buttons has no category prefix and no commit shape. In categorized mode it is accepted as Changed with a warning. Rewriting it as changed: Update export button labels removes the ambiguity and makes the Change Ledger easier to review.

FAQ:

Why did a line go into Changed?

A non-empty line without a recognized category prefix, Markdown section heading, or Conventional Commit shape is accepted as Changed. Add a prefix such as added:, fixed:, or security: when another section is more accurate.

Why does strict Conventional Commit mode ignore docs or chore for the SemVer signal?

Strict mode gives SemVer weight to feat, fix, breaking markers, and breaking-change footers. Other types can still appear in the changelog, but they do not raise the signal unless they mark a breaking change.

Can the draft use Unreleased?

Yes. Set the version to Unreleased. The heading becomes an Unreleased section, and the date check is treated as ready because unreleased notes do not need a publication date.

What should I do when a text file fails to load?

Use a TXT, MD, or LOG-style source under the file-size limit, paste the relevant excerpt, or remove binary content before trying again.

Does the SemVer signal choose my final release number?

No. It reports the strongest parsed signal under the selected policy. The final version still depends on the real compatibility impact and project release rules.

Glossary:

Changelog
A versioned record of notable changes intended for people who use, operate, or maintain the software.
Keep a Changelog
A common changelog format with sections such as Added, Changed, Deprecated, Removed, Fixed, and Security.
Conventional Commit
A commit subject with a type, optional scope, optional breaking marker, and description.
SemVer signal
A Major, Minor, Patch, or No bump hint inferred from parsed release evidence.
Unreleased
A changelog section for changes that have been recorded but not assigned to a published version.
Yanked release
A release that was published and later withdrawn, marked in the heading with [YANKED].

References: