-
Notifications
You must be signed in to change notification settings - Fork 0
09 Links
Links are used to jump to a particular page or heading within a Wiki, they can also be used to navigate to other websites or to download files (just like links on any web page).
Markdown links can be direct (normal type) links or can be reference-style links. Reference style links do exactly the same as direct links but make the Markdown easier to read (but in turn are more complicated to implement).
This section concerns itself with direct links (these are by far the most widely used) section 9.7 covers reference-style links.
Direct links can do the following:
● | Link to an external web page (a web page that is not associated with a particular Wiki or repository) |
● | Link to another page in the same Wiki |
● | Link to headings on the current Wiki page |
● | Link to headings on a different Wiki page |
● | Link to a named element on the same Wiki page |
● | Link to a named element on a different Wiki page |
● | Download a file |
List 9.1 — Various types of links |
---|
All of these are covered in the next sections:
This is the easiest (and probably most common) type of link, there are different versions:
❶ | A straight forward (direct) link to a URL: https://google.co.uk |
❷ | A link to a URL using substitute text e.g. Google UK |
❸ | A link to a URL using substitute text and with a tooltip box that explains the link when the mouse hovers over it: e.g. Google UK |
List 9.2 — Links to an external web page |
---|
Taking each in turn:
Let’s say we want to put a link to the Google UK website on a Wiki page, at its most basic it would look like this:
This is a link to https://google.co.uk.
The Markdown for this is very easy (in fact there is no Markdown), GitHub automatically detects URLs and converts them to a web link:
Markdown and GitHub output | |
---|---|
|
|
This is a link to https://google.co.uk.
|
This is a link to https://google.co.uk. |
This is a link to https://www.google.co.uk.
|
This is a link to https://www.google.co.uk. |
This is a link to www.google.co.uk.
|
This is a link to www.google.co.uk. |
Table 9.1 — Markdown for a basic link |
The equivalent HTML for the above is:
HTML and GitHub output | |
---|---|
|
|
This is a link to <a href="https://google.co.uk">
https://google.co.uk</a>
|
This is a link to https://google.co.uk |
This is a link to <a href="https://www.google.co.uk">
https://www.google.co.uk</a>
|
This is a link to https://www.google.co.uk |
This is a link to <a href="www.google.co.uk">
www.google.co.uk</a>
|
This is a link to www.google.co.uk |
Table 9.2 — HTML for a basic link |
GitHub will render anything that starts https://
, http://
or www.
as a link.
Note
GitHub does not check the format of the link beyond the starting characters, it would think www.google was a perfectly good link (even though the domain suffix is missing), it would also think https://🌳🌳🌳🌳 is a link despite the fact the characters in it are not valid for URLs.
Links are always displayed in blue rgb(009,105,218) #0969DA
and underlined.
Links are always the same size as body text and can be emphasised with bold or italic by putting the appropriate number of asterisks before and after them (see section 6.4 and section 6.5). For example:
Markdown, HTML equivalence and GitHub output |
---|
|
This is a link to **https://google.co.uk**.
|
|
This is a link to <strong><a href="https://www.google.co.uk">https://www.google.co.uk</a></strong>
|
|
This is a link to https://google.co.uk. |
Table 9.3 — A basic link in bold |
It is possible to use substitute text which is displayed in place of the URL. Things like:
The PracticalSeries website can be accessed here.
The word here is displayed in place of the full URL, but clicking the word navigates to the URL: https://practicalseries.com.
The Markdown for this is in the form:
|
The
The Markdown for the above is:
Markdown, HTML equivalence and GitHub output |
---|
|
The PracticalSeries website can be accessed [here](https://practicalseries.com).
|
|
The PracticalSeries website can be accessed <a href="https://practicalseries.com">
here</a>
|
|
The PracticalSeries website can be accessed here. |
Table 9.4 — A basic link with substitute text |
A tooltip is a small box that opens up to display some information about the link whenever the mouse hovers over the link:
Try it by hovering the mouse over the link below:
Search engine Google.
The following figure shows the effect:
![]() |
Figure 9.2 — Link to a web page with substitute text and tooltip |
---|
The Markdown for this is in the form:
|
The
The Markdown for the above figure is:
Markdown, HTML equivalence and GitHub output |
---|
|
Search engine [Google](https://Google.co.uk "Link to Google UK").
|
|
Search engine <a href="https://google.co.uk" title="Link to Google UK">Google</a>.
|
|
Search engine Google. |
Table 9.5 — A basic link with substitute text and tooltip |
Linking to pages in the same Wiki doesn’t require a full web address (URL), GitHub accepts relative addresses💠1 (this is true for both Markdown and HTML).
Let’s say that a Wiki exists with three pages in a folder structure as follows:
![]() |
Figure 9.1 — Simple Wiki structure |
---|
Here there are three pages: Home.md
in the root directory, Page01.md
in folder 01_Page1
and Page02.md
in folder 02_Page2
. The .md
files are shown in red in the above figure.
All Wiki pages are .md
files and GitHub ignores the folder structure when navigating the Wiki folder structure for .md
(but only for .md
files, all other files must include the correct path to the file).
To link to any other page in the Wiki, all that is necessary is to include the filename, but not the extension in the link.
Thus if Page02.md
required a link to Page01.md
it would simply have the following Markdown:
Markdown, HTML equivalence and GitHub output |
---|
|
[Link to page 1](page01)
|
|
<a href="page01">Link to page 1</a>
|
|
Table 9.6 — Relative link to a page within the same Wiki |
Note
The important thing to remember is that the .md
extension must not be included in the relative link. Only use the filename that precedes the extension (it is not case sensitive).
All that is needed for a link to any other page in the Wiki is simply the filename of the page that is to be navigated to (always without the file extension💠2)
Links to other page in the Wiki can also have tooltips (in exactly the same way as links to an external page, see section 9.1.3 ), in this form:
|
For example adding a tooltip to the previous example gives (to see the effect, hover the mouse over the link at the bottom):
Markdown, HTML equivalence and GitHub output |
---|
|
[Link to page 1](page01 "GO TO PAGE 1")
|
|
<a href="page01" title="GO TO PAGE 1">Link to page 1</a>
|
|
Table 9.7 — Relative link to a page within the same Wiki with tooltip |
The Markdown and HTML forms for linking to a Wiki page are:
|
The .md
file with the following changes:
❶ |
Do not add the .md extension to the |
❷ |
Any spaces within the |
❸ | All uppercase letters are made lowercase (optional) |
List 9.3 — RRules for converting a page name to a link |
---|
For example, the page:
Would becomes the
Thus:
Markdown, HTML equivalence and GitHub output |
---|
|
[Section 8.2](08.02-block-quotes,-lists-and-alerts)
|
|
<a href="08.02-block-quotes,-lists-and-alerts">Section 8.2</a>
|
|
Note
While it is not necessary to change the name to all lowercase letters, it is best to do so, it gives consistency to the addressing.
GitHub can link to any Markdown heading on a page (the ones constructed with leading hashes, see section 6.10 ). In fact, GitHub highlights the links and allows them to be copied, these highlights are the small chains that appear when the mouse hovers over the link:
![]() |
Figure 9.3 — Heading link icon (highlighted) |
---|
To copy the link, right click and select
Clicking a link to a heading navigates up or down the page until the heading is at the top of the browser window.
Links to a heading on the same page are constructed in a similar way to the direct link using substitute text (see section 9.1.2) as follows:
|
The
Note
Just inserting the hash and the #headingName directly in the Markdown (like the direct link of section 9.1.1) will not work.
The
❶ |
There is only one hash `#` before the |
❷ | All text is converted to lowercase |
❸ | Spaces are converted to a single dash |
❹ | If multiple consecutive spaces are present, they are converted to a single dash |
❺ | Special space characters (see section 7.2) are ignored |
❻ | Any HTML tags are ignored (tags and attributes between `<>`) |
❼ | Any comments within the heading (text between ``) are ignored |
❽ | Numbers (0 to 9) are included |
❾ | All non-alphanumeric characters are ignored |
List 9.4 — Rules for converting a heading |
---|
For example, on the Wiki page: 01 Introducing the GitHub Wiki there is a heading: 1.1. What are GitHub Wiki pages?.
The Markdown for the heading is this:
Markdown and GitHub output |
---|
|
## 1.1       <!-- H2 -->What are GitHub Wiki pages?
|
|
1.1 What are GitHub Wiki pages? |
Now, this heading is a bit more complicated than the headings in section 6.10, but it works in the same way:
It starts as normal, with two hashes ##
, it is a level 2 heading. There is a chapter and section number separated by a full stop 1.1
.
Next, there are various special spacing characters:        
, these are used to space the title text from the heading number (see section 7.2). This is followed by a comment field <!-- H2 -->
that identifies the heading as a level 2 heading.
Finally, there is a question mark ?
at the end.
The link to this heading (from within the same page), would be:
Markdown, HTML equivalence and GitHub output |
---|
|
Link to [1.1 What are GitHub Wiki pages?](#11what-are-github-wiki-pages)
|
|
Link to <a href="#11what-are-github-wiki-pages">1.1 What are GitHub Wiki pages?</a>
|
|
Link to 1.1 What are GitHub Wiki pages? |
Table 9.8 — A link to a heading on the same page |
Let’s examine what has happened to the heading link:
It is preceded by a single hash #
, links only use one hash irrespective of the heading level.
The numbers 11
are the numbers in the heading 1.1
without the full stop (all non-alphanumeric characters are ignored).
All the special space characters  
&c. are ignored as is the comment field.
Thus, the numbers are immediately followed by the text of the heading in lowercase.
All the spaces between the words in the heading text are replaced with dashes -
.
Finally, the question mark at the end is missing (all non-alphanumeric characters are ignored).
So the Markdown (or HTML href
) for the link to the heading becomes:
Markdown |
---|
|
#11what-are-github-wiki-pages
|
Tooltips can also be applied to links to headings, this is exactly the same as shown in section 9.1.3 (hover the mouse over the link at the bottom to see the tooltip):
Markdown, HTML equivalence and GitHub output |
---|
|
Link to [1.1. What are GitHub Wiki pages?](#11what-are-github-wiki-pages "HEADING LINK")
|
|
Link to <a href="#11what-are-github-wiki-pages" title="HEADING LINK">1.1. What are GitHub Wiki pages?</a>
|
|
Link to 1.1. What are GitHub Wiki pages? |
Table 9.9 — A link to a heading on the same page with tooltips |
It is possible to link to any heading on a page within the same Wiki by adding the page name to the Markdown link. Links to a Hheading links to a point on a different page are constructed in a similar way to the heading link on a same page (see section 9.3), but also include the page name:
|
The
The rules for the
Using the same example of section 9.3.2 where:
The Wiki page: 01 Introducing the GitHub Wiki has the heading: 1.1. What are GitHub Wiki pages?.
The Markdown for the heading is this:
Markdown and GitHub output |
---|
|
## 1.1       <!-- H2 -->What are GitHub Wiki pages?
|
This is the same as the heading in section 9.3.2.
The heading becomes the following when coverted to a link (again see section 9.3.2), the
Markdown |
---|
|
#11what-are-github-wiki-pages
|
The
Markdown |
---|
|
01-introducing-the-github-wiki
|
Thus the whole link become:
Markdown, HTML equivalence and GitHub output |
---|
|
[1.1.What are GitHub Wiki pages?](01-introducing-the-github-wiki#11what-are-github-wiki-pages)
|
|
<a href="01-introducing-the-github-wiki#11what-are-github-wiki-pages">1.1 What are GitHub Wiki pages?</a>
|
|
Table 9.10 — A link to a heading on a different page |
Footnotes:
Note
💠1 A relative address, or relative file path, identifies the location of a file relative to the location of the current page. It is common practice for websites to use relative addressing (see section 9.8 for details).↩
Note
💠2 The relative link must not include the file extension, if the link in the example were page01.md
, the link would not work, GitHub will not find the file (I think it adds .md
to the filename and is now trying to find a file that ends .md.md
and it can’t).↩
|
|
|
|
|
The PracticalSeries of Publications — Copyright © 2025 Michael Gledhill
⬆️ Top | [email protected] | PracticalSeries of Publications | Main repository
|
|
|
|
|
Licence
The licences and other details
The Licence
Why did I choose the MIT Licence?
Permissive licences
Copyleft licence
Limiting liabilities
Which licence to use?
A note on spelling: licence or license
1 Introducing the GitHub Wiki
1.1 What are GitHub Wiki pages?
1.2 Understanding the Wiki pages
1.3 Creating a Wiki for a repository
1.3.1 Creating the first Wiki page
1.3.2 Creating additional pages
1.3.3 Editing a Wiki page
1.4 The Wiki is its own repository
1.4.1 Viewing a Wiki page history
1.4.2 How GitHub handles Wiki branche
1.4.3 The Wiki link to the main repository
1.5 Basic components of a Wiki page
1.5.1 Title bar and revision
1.5.2 Contents (pages) area
Listing pages in the order you want
1.5.3 Sidebars
1.5.4 Footers
1.6 Sidebars and footers
1.6.1 Creating a sidebar and footer
2 Cloning a Wiki
2.1 Why clone a Wiki?
2.2 How to clone a Wiki
2.3 Pushing local changes to GitHub
2.3.1 Configuring username and email
2.3.2 Modifying the local repository
2.3.3 Committing and synchronising
3 A Wiki folder structure
3.1 The default arrangement
3.2 Create a sidebar or footer locally
3.3 Page naming and Wiki limits
3.3.1 Supported file types
3.3.2 Page names and numbering
3.3.3 Rules for page numbering
3.3.4 Limits for Wiki pages
3.4 A Practical Wiki folder structure
3.4.1 Subfolder names for Wiki pages
3.4.2 Storing images and other data
4 Different sidebars and footers
4.1 How sidebars work
4.1.1 The PracticalSeries sidebar
4.2 How footers work
4.2.1 The PracticalSeries footer
5 Markdown, GitHub Markdown and HTML
5.1 Some useful Markdown sites
5.2 An overview of Markdown
5.3 How Markdown works
5.4 Markdown flavours
5.4.1 GitHub Flavoured Markdown (GFM)
5.5 HTML and Markdown
5.5.1 HTML with GFM
GFM blacklisted HTML tags
GFM whitelisted HTML tags
GFM HTML tags - the grey area
GFM whitelisted HTML attributes
5.5.2 PracticalSeries and Markdown
5.6 Markdown difference between files
6 Basic Markdown and text formatting
6.1 Body text and fonts
6.1.1 Body text responsive design
6.1.2 Body text in sidebars and footers
6.1.3 Rules for body text
6.1.4 Body text examples
6.1.5 Alignment of Body text
Left aligned text (default)
Right aligned text
Centred text
Justified text
6.1.6 Body text propertie
6.2 Paragraphs and line breaks
6.2.1 Forced line break
6.2.2 Blank line and a line break
6.2.3 Trailing space line break
6.2.4 Paragraph and line break rules
6.2.5 Paragraph and line break examples
6.3 Horizontal line
6.3.1 Rules for horizontal lines
6.4 Emphasis with bold
6.4.1 Rules for bold
6.4.2 Bold text examples
6.5 Emphasis with italics
6.5.1 Rules for italics
6.5.2 Italic text examples
6.6 Emphasis with bold and italics
6.6.1 Rules for bold and italics
6.6.2 Bold and italic text examples
6.7 Emphasis with underlining
6.7.1 Rules for underlining
6.7.2 Underlining text examples
6.8 Emphasis with strikethrough
6.8.1 Rules for strikethrough
6.8.2 Strikethrough text examples
6.9 Superscript and subscript
6.9.1 Rules for superscript and subscript
6.9.2 Superscript and subscript examples
6.10 Headings
Alternatives for heading 1 and 2
6.10.1 Headings Markdown rules
6.10.2 Heading properties
7 Special characters and escaping characters
7.1 Escape characters and codes
7.1.1 Markdown escape sequences
7.1.2 HTML escape sequences
7.1.3 Decimal and hexadecimal codes
Hexadecimal escape codes
7.2 Special space characters
7.2.1 Escape sequence restrictions
7.3 Emojis and emoticons
A note by the Author about emojis
7.4 Comments
8 Block quotes, lists and alerts
8.1 Block quotes
8.1.1 Nested block quotes
8.1.2 Adding other elements
8.1.3 Rules for block quotes
8.2 Unordered (unnumbered) lists
8.2.1 Nested unordered lists
8.2.2 Type of bullet point
8.2.3 Indents and spacing
8.2.4 Numbers in an unordered list
8.2.5 Adding paragraphs
8.2.6 Adding other elements
8.2.7 Rules for unordered lists
8.3 Ordered (numbered) lists
8.3.1 Starting at a different number
8.3.2 Nested ordered lists
8.3.3 Type of numbering
8.3.4 Indents and spacing
8.3.5 Adding paragraphs
8.3.6 Adding other elements
8.3.7 Rules for ordered lists
8.4 Mixing ordered and unordered lists
8.5 Task lists (check boxes)
8.5.1 Nested task lists
8.6 Alerts
8.6.1 Rules for alerts
9 Links
9.1 Link to an external web page
9.1.1 A direct link to a URL
9.1.2 A link using substitute text
9.1.3 A link using tooltips
9.2 Link to another page in the Wiki
9.2.1 Rules for linking to a Wiki page
9.3 Link to headings on current page
9.3.1 Converting a heading to a link
9.3.2 An example of a heading link
9.3.3 Heading link with tooltips
9.4 Link to headings on a different page
9.4.1 An example of a heading link
9.5 Link to a named element
A note by the Author
9.5.1 Link to a point on another page
9.6 Downloading a file
9.6.1 The download attribute
9.6.2 Spaces in filenames
9.6.3 Downloading a .md file
9.7 Reference style links
9.8 Relative links
9.8.1 Relative links from any Wiki page
10 Tables
10.1 Markdown tables
10.1.1 Horizontal alignment
10.1.2 Table construction
10.1.3 Vertical line breaks and alignment
10.1.4 Making columns wider
10.1.5 Other elements in a table
10.1.6 Markdown table restrictions
10.2 HTML tables
10.2.1 A basic HTML table
10.2.2 Aligning a table on a page
10.2.3 Text wrap and side-by-side tables
What this means in practice
The problem with the align attribute
How to stop text wrapping
10.2.4 Setting the width of a table column
10.2.5 Setting the height of a table row
10.2.6 Horizontal alignment
10.2.7 Vertical alignment
10.2.8 Spanning columns and rows
10.2.9 Table border
10.2.10 Giving a table a navigable name
10.2.11 Additional HTML tags
11 Images
11.1 Markdown images
11.1.1 Image size in Markdown
11.1.2 Making the image a link
11.1.3 Drag and drop image link
A note by the Author
11.2 HTML images
11.2.1 A basic HTML image
11.2.2 Image size in HTML
11.2.3 Horizontal alignment
11.2.4 Making the image a link
11.2.5 Using a table to contain an image
11.3 Forcing an image refresh
11.4 Using a spacer image
11.5 Mermaid diagrams
11.5.1 Inserting a Mermaid diagram
11.5.2 The rendered Mermaid diagram
11.5.3 Supported version of Mermaid
11.6 Interactive maps
11.7 3D models
12 Contents (collapsible) and footnotes
12.1 A basic table of contents
12.2 Understanding the space characters
12.3 Collapsible content
12.3.1 Defaulting to open
12.3.2 Markdown restrictions
12.4 Collapsible TOC
12.5 TOCs in tables
12.6 Footnotes
13 Code fragments
13.1 Inline code
13.2 Code blocks
13.2.1 Preferred mechanism
13.3 Syntax highlighting
13.3.1 Supported languages
13.4 HTML code fragments
13.4.1 Converting HTML to code
14 Mathematical formulae
14.1 An overview of LaTex
14.2 Inserting an inline formula
14.2.1 Alternative delimiter
14.3 A formula block
14.4 Some example formulae
14.5 LaTeX syntax
14.5.1 Greek lowercase
14.5.2 Greek uppercase and Hebrew
14.5.3 Mathematical constructions
14.5.4 Variable sized delimiters
14.5.5 Variable sized symbols
14.5.6 Variable sized symbols with limits
14.5.7 Standard functions
14.5.8 Operators and relational symbols
14.5.9 Arrows
14.5.10 Other symbols
14.5.11 Accents
14.5.12 Matrices
14.5.13 Cases
Aligning multiple equations
14.5.14 Text formatting
Font size
Font colour
The text command
Font restrictions
14.6 Abusing LaTeX
14.6.1 Changing font colour with LaTeX
15 Navigation bars, badges and buttons
15.1 Navigation bars
15.1.1 Navigation bar practicalities
15.2 Badges
15.2.1 Creating a badge
15.2.2 Static badge options
15.2.3 Dynamic badges
15.3 Buttons
16 PracticalSeries Wiki conventions
16.1 The PracticalSeries Wiki page
16.2 The PracticalSeries folder structure
16.2.1 The root folder and home page
16.2.2 Leading pages
16.2.3 .gitkeep files
16.2.4 Folder and Markdown file names
Wiki pages that start at a section
16.3 The page title area
16.4 The page heading area
16.4.1 Top of page marker
16.4.2 Logo image
16.4.3 Web ID badge
16.5 Main body area
16.5.1 Common page elements
End of page marker
End of section elements
16.5.2 Headings
Compensating for number widths
Appendices headings
16.5.3 Tables
Links to a table
A note on Markdown tables
16.5.4 Images
Images that open in a new tab
Double images
Links to a figure
16.5.5 Lists
Common points for all lists
Basic unordered list
Basic ordered list
Mixed ordered and unordered lists
Enhanced mixed lists
Index list
Reverse index list
Index list with text wrap
Reverse index list with text wrap
Indexed, mixed list
Reverse indexed, mixed list
Task list
Enhanced task list with observations
16.5.6 Code fragments
16.5.7 Formulae
Standard formulae
Alternate formulae
16.6 Sidebar
16.6.1 sidebar files and locations
16.6.2 Sidebar title and location badge
16.6.3 Navigation bar
16.6.4 Table of contents
Unnumbered, non-collapsible TOC
Unnumbered, collapsible TOC
Single digit, collapsible TOC
Double digit, collapsible TOC
TOCs for appendices
16.6.5 End of page link
16.7 Footer
16.7.1 Footer files and locations
16.7.2 Location badge
16.7.3 Navigation bar
16.7.4 Colophon
16.7.5 Links and contacts
17 Managing a Wiki
17.1 Revision control
17.1.1 Managing commits
17.2 Finding the first Wiki commit
17.3 Rebasing the Wiki
17.3.1 Summarising the rebase process
17.3.2 Executing the rebase process
17.4 Wikis and search engine visibility
Appendices
B Full list of all emoji characters
B.1 Emojis, a brief explanation
B.1.1 Emoji short names
B.1.2 Emoji escape codes
B.1.3 Emoji variations
B.1.4 Emoji numbers
B.2 Emojis characters by category
Smileys and emotion
People and body
Component
Animals and nature
Food and drink
Travel and places
Activities
Objects
Symbols
Flags
B.3 Emoji characters by Unicode
C Segoe UI full character set
A note by the Author
C.1 Inserting Unicode characters
C.2 Characters U+00000 to U+00FFF
C.3 Characters U+01000 to U+01FFF
C.4 Characters U+02000 to U+02FFF
C.5 Characters U+03000 to U+09FFF
C.6 Characters U+0A000 to U+0AFFF
C.7 Characters U+0B000 to U+0FFFF
C.8 Characters U+10000 to U+10FFF
C.9 Characters U+11000 to U+11FFF
C.10 Characters U+12000 to U+12FFF
C.11 Characters U+13000 to U+15FFF
C.12 Characters U+16000 to U+1CFFF
C.13 Characters U+1D000 to U+1EFFF
C.14 Characters U+1F000 to U+3FFFF
⬇️ End of page |