Semantic Versioning, usually shortened to SemVer, is a convention for numbering software releases so that the version number itself tells you something about compatibility. The specification, authored by Tom Preston-Werner, defines a three-part number of the form MAJOR.MINOR.PATCH.
Each part has a defined meaning. Per the specification, you increment the MAJOR version “when you make incompatible API changes,” the MINOR version when you add backward-compatible functionality, and the PATCH version for backward-compatible bug fixes. A reader can therefore look at two version numbers and reason about whether upgrading is likely to break their code.
SemVer also fixes the meaning of a released version. The specification states that “once a versioned package has been released, the contents of that version MUST NOT be modified,” and it treats the 1.0.0 release as the point at which a public API becomes stable, while versions in the 0.y.z range are understood to allow breaking changes during early development.
This concept matters because the package managers that pull deep dependency trees, such as npm, Cargo, and pip, rely on version numbers to decide what is safe to upgrade. SemVer gives those tools, and the people using them, a shared language for expressing and respecting compatibility.