Free tool · no sign-up · no token

GitHub release notes generator.

Paste a public repository and pick two releases or tags. You get release notes written from the commits and pull requests merged between them: plain language for your users, a Keep a Changelog section for CHANGELOG.md, breaking changes first and contributors thanked. Tags you never published as releases? Backfill writes each one's notes and a script that publishes them all.

Releases or tags to compare

The latest release vs the one before it, unless you pick others. Generate once and the repository's releases and tags appear here to pick from.

Try:

Public repositories only. No sign-up, no token, no AI.

Short guide

How to generate release notes from GitHub

A release's history is already on GitHub: every pull request and commit merged since the release before it. Four steps turn that into notes people read. Try it on honojs/hono v4.13.14: two dozen commits from ten contributors become a handful of fixes and one new feature.

  1. 1

    Paste the repository

    owner/repo or its github.com URL. A release URL (…/releases/tag/v2.1.0) picks that release for you.

  2. 2

    Pick two releases or tags

    Leave both on their defaults for the latest release. For an older one, pick its tag under To; the release before it is found for you. Plain tags without a release are listed too, labelled. Pick the default branch under To for what's merged but not released yet.

  3. 3

    Check what was left out

    Chores, CI, tests and merges are left out, and breaking changes come first. The Pull requests and Commits tabs show where each one went, so nothing important slips through.

  4. 4

    Copy and publish

    The release notes go into the GitHub release (Releases → Draft a new release, or Edit), the Keep a Changelog section at the top of CHANGELOG.md. Merge lines that describe one change, and add a sentence of context where it helps.

Notes are only as clear as the commits behind them. Squash-merge with pull request titles that say what changed for users, like fix(cli): show a clear error when the config is missing; the Conventional Commits guide shows how.

Short guide · backfill

Create GitHub releases from existing tags

Many projects tag every version but publish a GitHub release only now and then. Users who watch releases, and tools that read them, never hear about the versions in between. Backfill writes the missing notes from your history and publishes them in one go.

  1. 1

    Paste the repository and choose Backfill releases

    It picks the newest tags that have no GitHub release, back to your latest release, and shows them before it reads anything. Or pick the run yourself: After (not included) and Up to.

  2. 2

    Check the run

    Up to 10 consecutive version tags; each tag's notes cover the commits since the tag before it. Pre-release tags are left out unless you include them, so each stable release covers everything since the stable one before it.

  3. 3

    Read and copy the notes

    Open any tag to read its notes, copy them as Markdown or as a Keep a Changelog section. Copy all of them at once for a CHANGELOG.md that never had these versions.

  4. 4

    Run the script

    It needs the GitHub CLI signed in with write access (gh auth login). It creates the releases oldest first from the existing tags, never new ones (--verify-tag), and skips tags that already have a release, so it's safe to run twice.

Updated 15 November 2026

What the script runs
# For each tag without a release, oldest first:
gh release create "v1.2.1" --repo "owner/repo" --verify-tag \
  --title "v1.2.1" --notes-file "$NOTES/01-v1.2.1.md" --latest=false

# The newest one, if it's newer than your latest release:
gh release create "v1.4.0" --repo "owner/repo" --verify-tag \
  --title "v1.4.0" --notes-file "$NOTES/04-v1.4.0.md" --latest
  • “Latest” stays on your newest releaseGitHub makes every new release the latest unless told otherwise, so older tags get --latest=false. Only the newest tag of the run becomes Latest, and only when it's newer than your current latest release.
  • Up to 10 tags per runMore? The page names the tag to continue from; tags already written load from the cache, so the next run only reads the rest.
  • Long histories and private repositoriesRun the free GitHub Action by hand with its tag input: it creates the release for an existing tag with your workflow's own token, with no anonymous limit.

Start a backfill · GitHub Action

Compared

GitHub's button, this generator, or the Action?

Three ways to get release notes from GitHub. Use this page for any public repository and past releases; let the Action write them on every tag.

GitHub's generate release notes button, the LogPulse generator and the LogPulse GitHub Action compared
ReadsGitHub's buttonPull request titles and labelsThis generatorCommits and merged pull requestsGitHub ActionCommits and merged pull requests, or CHANGELOG.md
SetupGitHub's buttonLabels in .github/release.ymlThis generatorNoneGitHub ActionOne workflow file
Breaking changes first, with what to doGitHub's buttonThis generatorGitHub Action
Keep a Changelog sectionGitHub's buttonThis generatorGitHub Action
Plain-language notes for usersGitHub's buttonThis generatorGitHub ActionYour CHANGELOG.md's words
Contributors thankedGitHub's buttonThis generatorGitHub Action
Any repository, any past releaseGitHub's buttonOnly your own, while draftingThis generatorPublic repositoriesGitHub ActionYour own, on every tag
Private repositoriesGitHub's buttonThis generatorGitHub Action

The generator and the GitHub Action sort commits with the same rules, so what you see here is what the Action writes into your releases. Need what's changed since your last tag instead, or a date range? Use changes since the last tag.

From scripts and agents

The same notes, one call away.

A free endpoint and MCP tool with the same rules, cache and limits as this page. No key, no account.

  • One HTTP callJSON with both outputs, the pull requests and the releases to pick from, or Markdown straight away.
  • Agents ask directlyCoding agents connected to the LogPulse MCP server call github_release_notes after they tag a release.
  • Shared limits5 lookups a minute per IP address; cached releases are free.
The latest release, as release notes
curl "https://release-ripple-roadmap.lovable.app/api/public/v1/github-release-notes?repo=vitejs/vite&format=markdown"
Two releases, Keep a Changelog
curl "https://release-ripple-roadmap.lovable.app/api/public/v1/github-release-notes?repo=honojs/hono&from=v4.13.13&to=v4.13.14&format=keep-a-changelog"
Claude Code
claude mcp add --transport http logpulse https://release-ripple-roadmap.lovable.app/mcp

# then ask:
# "Write the release notes for
#  the latest honojs/hono release"

Endpoint: GET https://release-ripple-roadmap.lovable.app/api/public/v1/github-release-notes. Read the docs · Connect your agent

Questions

GitHub release notes, answered