How to highlight text in markdown

Updated

To highlight text in markdown, wrap it in double equals signs in apps that support the extension (==like this==), or use the HTML <mark> tag where raw HTML is allowed:

Obsidian, Typora, Pandoc: ==highlighted text==
GitHub, GitLab, most blogs: <mark>highlighted text</mark>

Neither form is in CommonMark or GitHub Flavored Markdown, so there is no highlight syntax that works everywhere. The == form is the de facto extension; <mark> is the HTML element that the extension compiles to, and it works wherever raw HTML survives. In chat apps there is nothing, and the fallback is bold.

Does markdown have a highlight syntax?

No. CommonMark defines emphasis (*, _), code spans and nothing else for inline styling, and GFM adds only strikethrough. Highlighting exists as an extension that a handful of parsers added independently, all using ==text== because it mirrors ~~strike~~ and **bold**. The HTML it produces is <mark>text</mark>, which browsers render with a yellow background by default. Where neither the extension nor HTML is available, the text simply shows the equals signs.

Which apps support ==highlight==?

Note-taking apps and converters do; code hosts and chat apps do not:

App==text==<mark>Notes
ObsidianYesYesSix colours by adding an emoji after the opening == (Obsidian syntax)
TyporaYes, after enabling it in Preferences > MarkdownYesOff by default (Typora reference)
PandocYes, with the mark extensionYes==text== becomes <mark> in HTML output (Pandoc manual)
iA Writer, Bear, UlyssesYesVariesMarkdown Extra-style editors
MkDocs (pymdownx.mark), Python-MarkdownYes, with the extensionYesMust be enabled in config
Jekyll (kramdown)NoYesRaw HTML passes through
Hugo (Goldmark)No by defaultYesGoldmark has no mark extension built in
DocusaurusNoYes (as JSX <mark>)MDX treats HTML as JSX
GitHubNoYesmark is on the sanitiser allowlist
GitLabNoYesSame sanitiser family as GitHub
NotionNoNoHighlight via the toolbar or /color instead (Notion basics)
SlackNoNoNo highlight in mrkdwn (Slack formatting)
DiscordNoNoNot in Markdown Text 101
RedditNoNoHTML tags are not rendered

On GitHub, ==text== renders as literal equals signs with no error, which is the most common way people discover the gap. Markdown Extra itself (the PHP implementation) does not define ==; the syntax spread through editors that extended Markdown Extra, which is why "Markdown Extra highlight" turns up in searches.

How do you highlight text on GitHub?

Use the <mark> tag. GitHub's HTML sanitiser keeps mark (along with ins, del, sup, sub, kbd and abbr), and the browser's default style gives it a yellow background:

The build fails if <mark>NODE_ENV</mark> is unset.

Two limits. There is no colour choice, because style attributes are stripped, so every highlight is the browser default. And <mark> does not render inside code spans or code blocks, where it prints as text; in those places use a comment or a # <-- here marker instead. For a line-level highlight in a README, a GitHub alert (> [!IMPORTANT]) gives a coloured box with an icon and is the idiomatic choice; the alerts guide covers the five types. The colour text guide explains why style and <font> do not work on GitHub.

How do you highlight in Obsidian?

With ==text==, and optionally with a colour emoji right after the opening marker. Obsidian's syntax docs list six: ๐Ÿ”ด red, ๐ŸŸ  orange, ๐ŸŸก yellow, ๐ŸŸข green, ๐Ÿ”ต blue and ๐ŸŸฃ purple. Without an emoji the highlight uses the theme's default colour:

This is ==important== and this is ==๐ŸŸข approved==.

The emoji travels with the text, so the file still reads correctly in another app (the circle emoji remains visible, the == print literally). Obsidian also renders <mark>, so for notes that are published to GitHub from a vault, <mark> is the form that highlights in both places.

What is the alternative when highlight is not supported?

Bold is the portable fallback, and a structural element is often better than any inline style:

GoalPortable alternativeWorks in
Draw the eye to a phrase**bold**Everywhere
Mark a change or addition<ins>text</ins> or **+ text**GitHub, GitLab, HTML-tolerant renderers
Flag a whole line or paragraph> [!IMPORTANT] alert or > **Note:** quoteGitHub, GitLab, Obsidian; plain quote elsewhere
Call out a value in text`code span`Everywhere
Highlight in Slack or Discord*bold* (Slack) / **bold** (Discord), or an emoji markerChat apps

Underline is not a good substitute: it looks like a link in every renderer and has its own compatibility problems, covered in the underline guide. Italics are too quiet to read as a highlight. If the point is to show a diff, a fenced code block with the diff language renders added lines green and removed lines red on GitHub, which is a real highlight for code.

How do you show literal equals signs without highlighting?

Escape the first one in apps that support highlight: \==not highlighted==. In a code span (`==`) they are always literal. On GitHub and everywhere else without the extension nothing needs escaping, because == has no meaning. A single = never triggers highlight in any parser, and a line of === under text is a setext H1, not a highlight; see the headings guide.

Should you use highlight in documentation?

Sparingly. A highlight in a README reads as a yellow marker on a printed page: it is effective once and noise the third time. Reserve it for a single value or term per section that the reader must not miss, prefer an alert for a whole sentence, and avoid it in text that will be pasted into chat apps or Notion, where it is lost. For the full list of inline styles and their compatibility see the bold and italic guide and the markdown cheat sheet.

Keep going