Complete List of HTML/xHTML Tags, With Guide to Proper Semantic Use

Comprehensive list of HTML tags with their semantically appropriate uses

I haven’t listed absolutely every HTML tag ever, as some of them are too obscure to be worth mentioning.

TagWhat it isWhen to use it
<a>Anchor (most commonly a link)Vital. Use to create links in content. Use the title attribute whenever the contents of the <a>…</a> pair do not accurately describe what you’ll get from selecting the link. Title attribute often displays as a tooltip in visual browsers, which may be a helpful usability aid.
<abbr>Defines an abbreviationWorks in a similar way to <dfn> and <acronym>, using a title attribute (displays a tooltip in standard visual browsers). e.g. <abbr title=”Hypertext markup language”>HTML</abbr>
<ACRONYM>Defines an acronymWorks in a similar way to <abbr> and <dfn>, using a title attribute (displays a tooltip in standard visual browsers).
<ADDRESS>Used for marking up a physical (e.g. mailing) addressNot commonly used. Recommend looking into microformats, which allow for more detail and interoperability.
<APPLET>Inserts a Java appletThe old way to insert a Java app. Use <object> instead today.
<AREA>Hotspot in image mapAvoid image maps where possible. Occasionally necessary.
<BASE>Specifies the base location of the document.Use only when necessary. Adjusts any relative links and paths within the document.
<BASEFONT>Sets default font sizeDisplay info – never use it
<BIG>Larger textDisplay info – never use it
<BLINK>Makes text blinkYou go to hell if you use this
<BLOCKQUOTE>Large quoted block of textUse for any quoted text that constitutes one or more paragraphs (note: should contain <p> tags as well). Use <q> for quotations within a paragraph. Often used in conjunction with <cite> to cite the quotation’s source.
<BODY>Document bodyEssential (unless you’re using frames)
<BR>Line breakThis is arguably display information. Still in common use, but use with restraint.
<B>Bold textDisplay info – never use it
<BUTTON>Used for a standard clickable button within a formOften better than <input type=”button” /> or <input type=”submit” />, as it allows you to assign different styles based on the HTML element alone, whereas differentiating style based on the type of input is less well supported.
<CAPTION>Caption for a table: describes the table’s contentsThe correct way to assign a title to a table
<CENTER>Centred blockDisplay info – never use it. Use <div> or some other block-level tag with the style text-align:center instead
<CITE>Defines a citationDefines the source of a quotation (in conjunction with content in <q> or <blockquote> pairs).
<CODE>Defines an extract of codeNot commonly used. Similar to <pre> tag, but collapses consecutive white spaces and line breaks in the source.
<COL>Identifies a particular column in a tableCan be very useful. e.g. <col class=”namecol”> can be applied to each first column in a series of tables, then the width of each column may be set to be equal in the stylesheet, overriding the table’s natural tendency to adjust its own column widths to fit its contents.
<DFN>Definition of a termWorks in a similar way to <abbr> and <acronym>, using a title attribute (displays a tooltip in standard visual browsers).
<DIR>Directory listNow deprecated. Use a standard <ul> or other list instead.
<DIV>DivisionSpecifies a logical division within a document. Use it to separate or identify chunks of content that are not otherwise distinguished naturally using other tags.

One of the most common HTML tags.

<DL>Definition listContains one or more definition-term / definition-description pairs.
<DT>Definition termUsed as part of a <dt></dt><dd></dd> pair within a definition list (<dl></dl>)
<DD>Definition description
<EM>EmphasisCommonly used in place of the old <i> (italics) tag to indicate emphasis (but less than <strong>)
<FONT>Font settingsDisplay info – never use it
<FORM>Input formEssential for data input
<H1>Level 1 headerAim to have one H1 on each page, containing a description of what the page is about.
<H2>Level 2 headerDefines a section of the page
<H3>Level 3 headerDefines a sub-section of the page (should always follow an H2 in the logical hierarchy)
<H4>Level 4 headerEtc. Less commonly used
<H5>Level 5 headerLess commonly used. Only complex academic documents will break down to this level of detail.
<H6>Level 6 headerLess commonly used
<HEAD>Document headEssential. Contains information about a page that does not constitute content to be communicated as part of the page.
<HR>Horizontal ruleDisplay info with no semantic value – never use it. “Horizontal”, by definition, is a visual attribute.
<HTML> Core element of every web page.
<IMG >Show an imageVital. Always use the alt or longdesc attributes when the image has content value
<INPUT>Input fields within formsVital. (I prefer to use <button> for buttons and submit buttons though)
<ISINDEX>Old type of search inputNot really used any more. Use <form> instead.
<I>Italicised textDisplay info – never use it
<KBD>Keyboard inputDisplay info – never use it
<LINK>Defines a relationship to another documentCommonly used to reference external stylesheets, but has other minor uses
<LI>List itemSpecifies an item in an unordered or ordered list (<ul> or <ol>)
<MAP>Client-side imagemapMay have occasional value, but only use when absolutely necessary
<MARQUEE>Makes text scroll across the screenSee <blink>
<MENU>Menu item listDeprecated. Do not use. Use other standard list types instead.
<META>Meta-informationUseful way to insert relevant information into the <head> section of the page that does not need to be displayed.
<OL>Ordered listType of list where the order of elements has some meaning. Generally rendered with item numbers (best managed with CSS).
<OPTION>Selection list optionVital for options within a drop-down control.
<PARAM>Parameter for Java appletUsed in conjunction with an <object> or <applet> tag to pass additional setting information at runtime.
<PRE>Preformatted textRenders text in a pre-formatted style, preserving line breaks and all spaces present in the source. May be useful. (This one’s a paradox, as it is strictly display info that applies only to visual browsing, but it’s still so commonly used and useful that I’m hesitant to advise against using it.)
<P>ParagraphOnly use to denote a paragraph of text. Never use for spacing alone.
<Q>Short quotationUse for inline quotations (whereas <blockquote> should be used for quotations of a paragraph or more). Often used in conjunction with <cite> to cite the quotation’s source.
<SAMP>Denotes sample output textSimilar to the <code> tag. Rarely used. Avoid.
<SCRIPT>Inline script (e.g. JavaScript)It’s better to have all scripts as separate files than to write inline or in the <head> section, however still has its uses.
<SELECT>Selection listA drop-down selector for a form.
<SMALL>Smaller textDisplay info – never use it
<SPAN>An inline span within textUse to apply meaning (and style) to a span of text that goes with the flow of content (whereas a <div> tag is block-level and breaks the flow)
<Strikeout> Display info – never use it
<STRONG>Strong emphasisUse this instead of the old <b> tag.
<STYLE>CSS style settingsNormally used in <head> section of a page. Try to use external stylesheets, to enable you to apply different styles for different output media.
<SUB>Subscript textArguably display info – recommend using alternative tags (e.g. <cite>). May be required in some academic uses, e.g. Chemical formulas.
<SUP>Superscript text
<TABLE>TableUse for repeated data that has a naturally tabular form. Never use for layout purposes.
<TD>Table data cellA cell containing actual data. If a cell actually contains a descriptor or identifier for a row or column, use a <th> (table header) tag, not a <td>. This usually applies to column headers (within a <thead>), column footers (within a <tfoot>), as well as row headers (usually the first cell in a row in the <tbody>).
<TEXTAREA>Multi-line text input area in a formEssential
<TH>Table column or row header cellMay appear in a <thead> (to denote a column header cell), <tbody> (to denote a row header), and in <tfoot> (to denote a column foot cell, e.g. a total)
<TBODY>Indicates the main body of a data tableIt is always worth using this tag, as well as using <thead> and <tfoot> where appropriate.

Note that it is permissible to have more than one <tbody>, <thead>, and <tfoot> in the same table.

<THEAD>The head section of a tableThe place to put column header cells (<th>)
<TFOOT>The foot section of a tableGood place to put e.g. summary data, such as totals. Note that it goes before the <tbody> tag!
<TITLE>Document titleEssential
<TR>Table rowEssential with tables
<TT>“Teletype” – simulates typewriter outputSimilar to <pre>, except that it collapses white space like normal HTML (whereas <pre> leaves all consecutive white space intact). Avoid if possible
<UL>Unordered listEssential. Use for lists where the order or items has no particular importance.
<U>Underline textDisplay info – never use it
<VAR>Variable in computer codeObscure tag, may only be useful in academic documents. Avoid.
Better WordPress Content
About the author

Ben Hunt

Ben has over 20 years' experience in web design and marketing, and is one of the most influential figures on the subject of effective web design. He has written a bunch of books and spoken at multiple conferences internationally.In 2015, Ben created Open-Source Marketing, which promises to turn the practice of marketing upside down.. Find out more at