Headings get an ID made from their text: lowercase, spaces become hyphens, and most punctuation is dropped. "## Rate limits (API)" becomes #rate-limits-api. Link to it with a # and the ID.
All ways to write it
Link to a heading in the same file by its ID.GitHub Flavored Markdown[Install](#install)
A heading in another file.GitHub Flavored Markdown[Limits](./api.md#rate-limits)
A custom anchor anywhere in the text.Needs HTML<a id="custom-anchor"></a>
Example
You type
Jump to [known issues](#known-issues).
## Known issues
Footnotes may not convert on import.You get
Questions
What ID does a heading with duplicates get?
On GitHub the second heading with the same text gets -1 appended, the third -2, and so on.
Can I set my own heading ID?
Pandoc, kramdown and some static site tools accept ## Heading {#my-id}. GitHub does not; put an <a id="my-id"></a> before the heading instead.
Link to a section in Confluence
Confluence builds its own anchors for headings, and its Anchor macro sets one anywhere on a page. When you export with Markdown Exporter, links between pages become relative .md links you can follow in Git or Obsidian.