Stack Exchange sites use Markdown for questions and answers. Per the Markdown specification, intermixing HTML and Markdown markup is allowed, but not all the HTML tags are allowed, to avoid XSS.

Which HTML tags are allowed on Stack Exchange sites?

Return to FAQ index


1 Answer 1


Allowed HTML Tags

The Stack Exchange engine allows only the following safe, allowed subset of HTML tags.

Note: This table overflows to the right. Press your middle mouse button and wave your mouse left or right to scroll it, or use your laptop's trackpad (if applicable):

Tag Title and Description Preview Markdown Equivalent
<a> Anchor
Used to create hyperlinks.
Stack Exchange
[Stack Exchange](https://meta.stackexchange.com)
<b> Bold Formatting
Used to bring the contents to the reader's attention.
Stack Exchange
Renders the same as <strong>.
**this** syntax produces this <strong> text.
<blockquote> Block Quotation
Indicates that the enclosed text is an extended quotation.
Stack Exchange
> Stack Exchange
<br> Line Break
Produces a line break in text (carriage-return)
Stack Exchange
Stack Exchange
Two spaces at the end of the first line:
Stack Exchange  
Stack Exchange
<code> Inline Code
Indicates that the text is a short fragment of computer code.
Stack Exchange
`Stack Exchange`
<del> Deleted Text
A range of text that has been deleted from a document.
Stack Exchange None on SE
Description List
A description list. <dl> contains the list. Use <dt> for a Description Term and <dd> for the corresponding Description Details (description, definition, or value).
THIS IS A <dt>
THIS IS A <dd>
<em> Emphasis
Marks text that has stress emphasis.
Stack Exchange
Renders same as <i>.
*Stack Exchange*
_Stack Exchange_
Section Heading

Stack Exchange

Stack Exchange

Stack Exchange

Stack Exchange

Stack Exchange
Stack Exchange
Stack Exchange
Stack Exchange
# Stack Exchange
## Stack Exchange
### Stack Exchange
#### Stack Exchange
##### Stack Exchange
###### Stack Exchange
<hr> Defines a thematic change in the content, usually via a horizontal line.
Must be an empty line before and after the dashes:
<i> Idiomatic Text
A range of text that is set off from the normal text for some reason.
Stack Exchange
Renders same as <em>.
None, *this* syntax produces <em>
<img> Image Embed
Embeds an image into the document.
Stack Exchange Logo
![Stack Exchange Logo](https://i.sstatic.net/8ANhG.png)
<kbd> Keyboard Input
A span of inline text denoting textual user input from a keyboard, voice input, or any other text entry device.
Stack Exchange None
<li> Used to represent an item in a list (<ol> or <ul>).
  1. These
  2. are
  3. list
  4. items
- List item
+ List item
* List item
1. List item
<ol> Ordered List
An ordered list of items—typically rendered as a numbered list.
  1. Step one
  2. Step two
1. Step one
2) Step two
<p> Paragraph.

Stack Exchange

No visual changes, used to create explicit paragraphs
Stack Exchange
<pre> Preformatted Text
Preformatted text which is to be presented exactly as written.
Stack Exchange
    Stack Exchange
Stack Exchange
<s> Renders text with a strikethrough, or a line through it. Stack Exchange None
<strike> Strikethrough is deprecated, use <del> or <s> instead. N/A None
<strong> Strong Importance
Indicates that the contents have strong importance, seriousness, or urgency. Renders in bold type.
Stack Exchange
**Stack Exchange**
__Stack Exchange__
<sub> Subscript
Inline text which should be displayed as subscript.
TextStack Exchange None
<sup> Superscript
Inline text which should be displayed as superscript.
TextStack Exchange
Because <small> is not on this list, many users use <sup> as an alternative.
<ul> Unordered List
  • An item
  • Another item
  • A third item
- An item
+ Another item
* A third item
<!-- language: [...] -->
<!-- language-all: [...] -->
Language comment
Used to specify the syntax highlighting language for four-space indent and HTML code blocks or for the entire post, respectively, when used at the top of a block or the post. The former syntax is deprecated for four-space code blocks, but is still supported due to older posts using it.
Preferred way for code blocks
<!-- begin snippet -->
<!-- end snippet -->
Stack Snippet comment
Used to indicate the starting and ending points of a Stack Snippet embedded in the post.
<!-- summary: [...] --> Expanded user card summary comment
Used in user profile descriptions to specify alternate text that should be rendered in user card hover popups on posts in lieu of the text in the bio itself. Can also be used to opt out of the popup while still having a bio (by using a summary that's shorter than 6 characters).
<!-- summary: Short text here -->
Longer text here...

<!-- summary: abc -->
I have a bio, but not an expanded user card

Note that since we allow the above HTML tags, to have tags show up as text you need to escape the < character. You can do this by marking it as code (with indentation or backticks as is done below) or by using the HTML entity &lt;.

Any tags not in the above list will be stripped out of the post. Do note that the sanitizer that strips out tags may falsely recognize text between < and > characters as HTML, which may cause such text to be stripped out of the post; to prevent this, encode those characters as &lt; and &gt;.

Are HTML comments supported?

Yes and no. While they (often) do work in the way you specify, that's not because they're officially supported by the system; they just happen to get removed as invalid HTML. Technically speaking, only the above comments used for special system features (syntax highlighting languages, Stack Snippets, and user card popup summaries) are supported. This fact leads to some quirks and limitations, such as that comments cannot contain the > character even though the HTML specification permits those characters in comments.

Allowed attributes

Attributes are only allowed on <img> and <a>. Other tags with attributes will be stripped.

Allowed attributes for <img>

The following attributes are allowed on the <img> tag, in the order shown below.

Attributes must be specified in this order. You may omit attributes you do not want to specify, but specifying a later attribute before an earlier one will strip the tag.

  1. src=""
  2. width="" (1–999; plain number without any extensions like px)
  3. height="" (1–999; plain number without any extensions like px; pay attention to order warning above)
  4. alt=""
  5. title=""

Allowed attributes for <a>

Once again, attributes specified in reverse order to what is shown here will cause the tag to be stripped:

  1. href=""
    This attribute can only hold proper URL links, such as https://stackexchange.com/users/, or relative or protocol-relative URL links such as /q/3122 or //stackexchange.com/users/. They cannot hold other types of links, such as relative fragments (e.g. #3122), or protocols other than HTTP, HTTPS, or FTP (e.g. javascript, mailto, or magnet). Invalid hrefs will strip the entire <a> tag.*
  2. title=""

Important Notes

  • HTML tags unlisted above are stripped from the output. They may render in the client preview, but they will always be removed on the server.
  • The tags must be entered exactly as shown in the list. Exactly one space must be present between attributes with no spaces between the attribute name, = sign, and double quotes "".
    • Valid: <a href="...">
    • Invalid: <a href="...">
    • Invalid: <a href= "...">
  • While it is possible to make tables using Markdown syntax, we do not support the HTML <table> element.

* On Stack Overflow for Teams sites, mailto links are allowed.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .