Anchors

A link's #fragment must name an anchor of the document it points to; without a file, of the document it is in. Every heading defines one, both ## Heading and a line underlined with === or ---, and so does an HTML element with an id, or a name, which keeps its value as written. Each heading's anchor is derived the way GitHub derives it:

  1. The heading is reduced to the text it renders: a link keeps its text, an image and HTML tags disappear, emphasis loses its *, _ and ~~ (an _ inside a word, as in snake_case, stays), inline code keeps its text as written and loses the backticks, and an entity such as & becomes the character it stands for.
  2. The text is lowercased.
  3. Letters and digits of any script, - and _ are kept; a space becomes -; everything else is dropped.
  4. A heading whose anchor is already taken gets -1, the next -2, and so on.
HeadingAnchor
## Where do I look?where-do-i-look
## The `lang` cookiethe-lang-cookie
## Zażółć gęślązażółć-gęślą
## A → Ba--b
a second ## Codecode-1
Setup over -----setup
## See [the guide](a.md)see-the-guide
## **Bold** and _it_bold-and-it

Headings and elements inside code blocks or inline code define nothing. A fragment is compared lowercased, as GitHub compares it. Fragments of links to files that are not Markdown are not checked.

Settings

Appearance

ThemeColours of every page

Reading

Code blocksLines longer than the block
TablesCells wider than the page

Accessibility

Text sizeEvery page, in proportion
LinksLinks inside the text
MotionAnimations and smooth scrolling
ScrollbarsCode blocks, tables and other scrolling areas