Generate beautiful changelogs from your git history in seconds.
Zero dependencies. Conventional Commits aware. Works as a CLI tool and GitHub Action.
npx autochangelogThat's it. Beautiful, grouped, emoji-rich changelog from your git history.
## v2.1.0 (2026-02-19)
### ✨ Features
- **auth:** add OAuth2 support (a1b2c3d)
- **api:** new batch endpoint (e4f5g6h)
### 🐛 Bug Fixes
- **db:** fix connection pool leak (i7j8k9l)
### ⚡ Performance
- reduce bundle size by 40% (m0n1o2p)# Use directly (no install needed)
npx autochangelog
# Or install globally
npm install -g autochangelog# Changes since last tag → stdout
autochangelog
# Full changelog from all tags
autochangelog --all
# Write to file
autochangelog --all --output CHANGELOG.md
# With commit links
autochangelog --repo-url https://github.com/you/repo
# JSON output (for pipelines)
autochangelog --format json
# Changes between specific refs
autochangelog --from v1.0.0 --to v2.0.0Add to .github/workflows/changelog.yml:
name: Generate Changelog
on:
push:
tags: ['v*']
jobs:
changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history needed
- uses: jcrewfare/autochangelog@v1
id: changelog
with:
all: true
output: CHANGELOG.md
- name: Create Release
uses: softprops/action-gh-release@v1
with:
body: ${{ steps.changelog.outputs.changelog }}| Input | Description | Default |
|---|---|---|
from |
Start ref (tag/commit) | Latest tag |
to |
End ref | HEAD |
version |
Version heading | Auto-detected |
repo-url |
Repo URL for links | Auto from GitHub |
output |
Output file path | CHANGELOG.md |
format |
markdown or json |
markdown |
all |
Full changelog | false |
| Output | Description |
|---|---|
changelog |
Generated changelog content |
suggested-bump |
Suggested semver bump |
- Reads your git log (tags + commits)
- Parses Conventional Commits (
feat:,fix:,perf:, etc.) - Groups changes by type with emoji headers
- Suggests version bumps based on commit types
- Non-conventional commits go to "Other Changes" (nothing is lost)
AutoChangelog works best with Conventional Commits:
feat(scope): add new feature → ✨ Features (minor bump)
fix(scope): resolve bug → 🐛 Bug Fixes (patch bump)
perf: improve speed → ⚡ Performance (patch bump)
feat!: breaking change → ⚠️ BREAKING (major bump)
docs: update readme → 📚 Documentation
refactor: clean up code → ♻️ Refactoring
But it also handles non-conventional commits gracefully — they appear under "📝 Other Changes".
| Feature | Free | Pro ($5) |
|---|---|---|
| Conventional Commits parsing | ✅ | ✅ |
| Grouped output with emoji | ✅ | ✅ |
| Commit links | ✅ | ✅ |
| JSON output | ✅ | ✅ |
Full changelog (--all) |
✅ | ✅ |
| GitHub Action | ✅ | ✅ |
| Custom templates | ❌ | ✅ |
| Slack/Discord webhooks | ❌ | ✅ |
| JIRA/Linear ticket linking | ❌ | ✅ |
| Priority support | ❌ | ✅ |
export AUTOCHANGELOG_PRO=your-key
autochangelog --template my-template.mdAutoChangelog has no npm dependencies. It uses only Node.js built-ins (child_process, fs, path). Install is instant, no supply chain risk.
MIT © jcrewfare