Changelog Validator
Paste or upload a CHANGELOG.md file to validate it against
the AutoChangelog rule set.
Validation runs in your browser. No content is uploaded or transmitted.
File exceeds the 200 KB showcase limit. Use the CLI for large files.
Canonical validation rules
This page runs the same parse and validation rules as the CLI
autochangelog validate command. The validation engine is
AutoChangelog.Core compiled to WebAssembly — not a separate
reimplementation. Parse errors, diagnostic codes, severity levels, and
exit codes match the CLI exactly.
| Rule code | Severity | Description |
|---|---|---|
DUPLICATE_UNRELEASED | Parse error | More than one [Unreleased] heading found |
MALFORMED_HEADING | Parse error | A ## [ heading could not be parsed as a valid release or Unreleased block |
ORPHAN_SECTION | Parse error | A ### section heading appears outside any release or Unreleased block |
ORPHAN_ENTRY | Parse error | A bullet entry appears inside a block but before any section heading |
BLANK_ENTRY | Parse error | A bullet entry has no text content after the marker (- or * ) |
NO_CHANGELOG_STRUCTURE | Error | The file contains no [Unreleased] block and no versioned release blocks — not a changelog |
DUPLICATE_VERSION | Error | The same version string appears in two or more release headings |
INVALID_DATE | Error | A release date is present but is not a valid yyyy-MM-dd date |
UNKNOWN_SECTION | Error | A section heading is not in the canonical taxonomy: Added, Changed, Deprecated, Removed, Fixed, Security |
DUPLICATE_SECTION | Error | The same section heading appears more than once within a single release or Unreleased block |
EMPTY_RELEASE | Error | A versioned release block has no sections or entries; [Unreleased] is exempt |
MISSING_DATE | Warning | A release heading has no date |
NON_SEMVER_VERSION | Warning | A version identifier is not valid semver (MAJOR.MINOR.PATCH) |
VERSION_ORDER | Warning | Releases are not in descending version order (newest first) |
EMPTY_SECTION | Warning | A section heading (### Added, etc.) has no entries |
SECTION_ORDER | Warning | Sections within a block are not in canonical order: Added, Changed, Deprecated, Removed, Fixed, Security |
Default policy: dates are not required, [Unreleased] section
is not required, version order is enforced. Strict mode
(--strict) promotes all warnings to failures.
--require-unreleased is available via the CLI.
Run locally
The validator above runs the canonical validation logic in read-only mode. For CI enforcement and the full command set, use the CLI directly.
# Validate (default policy)
autochangelog validate CHANGELOG.md
# Strict mode: warnings treated as errors
autochangelog validate CHANGELOG.md --strict
# Require an [Unreleased] section
autochangelog validate CHANGELOG.md --require-unreleased
# Trace command behavior to stderr (stdout unchanged)
autochangelog validate CHANGELOG.md --verbose The CLI is available under a commercial license. See below for access.
AutoChangelog is a proprietary commercial tool. Access is through license — there is no public download path. Direct licensing arrangements are available.
Plans from $29.99 / month — see plans on pkgstore.
To discuss access, write with your use case and team context.