Implicit version comparison in the changelog

In my project, I also follow Keep A Changelog. I noticed that in your changelog, you do not explicitly put a link to the version changes (see the raw version) but GitHub somehow recognizes the version. E.g. if one clicks on the “Unreleased” word, it brings us to How did you achieve it?


we simply create a tag e.g. 5.1 e…g git tag -m “Release 5.1” and then push that tag before creating the release in Github.
The link behind the Unreleased in the changelog is manually put there. You get that link when you to and click on “xxx commits to master since this release”.


Thanks for answering. I follow the same workflow in my project.
I understand how it works with the GitHub Releases (

The link behind the Unreleased in the changelog is manually put there.

And that’s what I cannot see in the source of! The same question applies for the released versions: e.g. there is no manual link for version 5.1 (search for ## [5.1] – 2020-08-30 in the file). Still, if I hover the mouse over it on GitHub, I get the expected link. So if the source contained

## [5.1]( - 2020-08-30

I would understand it.

Ah, that’s indeed interesting
It seems to be auto generated from GitHub when you follow the format, see here:

That’s what I thought too. I can imagine that GitHub can interpret it, as it does with commit hashes and with issue or PR numbers. But then why doesn’t it work for my changelog?

I have no idea. Maybe your markdown is not yet formatted correctly? You should follow the Markdownlint rules.

Hah! Thanks, I forgot about this capability of Markdown. (As it’s not standardized, I never know what actually gets rendered.)