TopAnswers Meta
LamakCC BY-SA 4.0
Is there a list or a list of markdown options that work in TopAnswers?. I've seen in some comments that the options in this link work here, but I'm not sure if all of them work or just some of them. 

Also, I saw that @Jack added the option to use a markdown for dbfiddle (which is great!), but I know this because I read the comment, so I think it should be good to have an updated list somewhere.
Top Answer
CC0 1.0Jack Douglas
We are using [markdown-it](, which:

* Has a useful [demo] page that you linked to in the question.

* Follows the [CommonMark] spec, except that on TopAnswers we ***[don't allow HTML input at all][safe]***, so no `<br>`, `sup` etc [that you can use on SE][sehtml][^pluginforhtml][^plugin].

* Isn't otherwise a radical departure from Markdown on SE, but there are a few more gotcha's such as:

    1. Strikethrough in SE chat is `---strikethrough---` but CommonMark does not support strikethrough (however see below for our plugin support for `~~strikethrough~~`).

    1. Markdown-it doesn't collapse adjacent blockquotes into a single blockquote:
        > this is two

        > blockquotes

        > this is a single
        > blockquote with two paragraphs

    1. Various other minor details from [this official CommonMark list][cmdiffs].
* Has some very sensible optional extensions (plugins) built-in — these are not part of the CommonMark spec but we have them switched on globally:
    1. GitHub-style [strikethrough]
    1. GitHub-style [tables]
* Has extensive support for other extensions, and we can add more or even create our own[^plugin].

    * The following 'official'[^moreplugins] extensions are currently supported globally on TopAnswers:
        1. [linkify]
        1. [syntax highlighting][highlight][^syntax]
        1. [superscript][^supersub]
        1. [subscript][^supersub]
        1. [abbreviations][abbr]
        1. [definition lists][deflist]
        1. [footnotes]
        1. [emoji]
    * The following custom extensions are also currently supported globally:

        * tweaking 'fuzzy' `` links to point to ``
    * Not actually a markdown plugin presently, but may be implemented as a plugin in future, and behaves similar to a plugin now:
        * integration with [db<>fiddle], using this block level syntax:
[^pluginforhtml]: If you miss something that you can only do in with inline HTML on SE, it may be available as a plugin for markdown-it, or we can write our own.
[^plugin]: We'll need to be careful about adding non-standard syntax, but all requests for plugin support will be carefully considered — please ask here on meta for global support or with a meta question on the community site if it is site-specific like [MathML] or [Mathjax].
[^moreplugins]: There are a lot of other plugins, probably of widely varying quality and sanity, [listed on npm][npm]
[^syntax]: To chose a language for a code block, you need to use a [fenced code block]( and specify the language after the fence (e.g. `~~~none`, or the same with backticks ` ```none`)
[^supersub]: Note that spaces currently [need to be escaped]( if you want to super/subscript multiple words (demo [here](

Jack Douglas replying to David
cheers @David, I've added those notes to the answer :)
David replying to Jack Douglas
Also, [here's a wee demo showing the escaping thing]( (also a test of that URL shortener). (The latter being a subject for another day.)
David replying to Jack Douglas
I [thought it was a bug](! 😅
Jack Douglas replying to David
that useful — I didn't know you could escape the spaces. You can ~also~ ~do~ ~this~ (`~also~ ~do~ ~this~`) which isn't as good…
(p.s. Nice to see how that markdown is handled in "chat"!)
@Jack Perhaps worth noting for the record (just in case anyone else likes misusing Markdown like I do) that the `sup` and `sub` extensions:   

- don't nest; and  
- are broken by whitespace.   

The workaround for the latter is to escape the whitespace: not `^up, up, and away^` (superscript ignored), but `^up,\ up,\ and\ away^` (superscript applied).
i-one replying to Jack Douglas
Thanks, I've made minor amendment to the answer.
Jack Douglas replying to i-one
I've updated the answer here with info (you can see the changes in the history: Basically you need to use a fenced code block and specify the language. Each community can set a default language which can then be overridden with 'none'.
@Jack, how can I specify language for the code block? In SO I've used `<!-- language:lang-sql -->` for example (placed before code block). There is the need sometimes to specify language explicitly, such as `sql` or `xml` or `none`.