Obsolete tags are tags that have no support any more in HTML5 usually because they were replaced in favor of CSS and other new tags. You must not use them at all as they may not be parsed in modern desktop and mobile web browsers.  HTML validation tools identify them as errors.

Deprecated tags are tags that will be replaced in newer releases of HTML and thus will become obsolete. Validation tools will show warnings. Replace them to ensure future compatibility and modernity of your website.



  • <font>          Specified font properties.
  • <listing>      To view HTML tags without parsing them.
  • <plaintext>  Same as <listing> but with no ending tag.
  • <xmp>          Same as <listing>
  • <nextid>       Old forms.
  • <blink>         Blinks text
  • <marquee>  Automatic scrolling text
  • <nobr>         To avoid text wrapping.
  • <noembed>  Fallback for browsers not supporting <embed>.
  • <frameset>   Container of <frame> elements.
  • <frame>        Embed other HTML documents.
  • <noframe>    Fallback for browsers not supporting <frameset>
  • <bgsound>   A background sound to a page.
  • <hgroup>     To group related headers.
  • <multicol>    To allow multicolumn layout.
  • <spacer>      To create spaces.



  • <basefont>  To specify a base font face, size and color.
  • <isindex>     An old-fashion form element.
  • <dir>             Directory list similar to <ul>.
  • <center>       Centered blocks
  • <acronym>   Marks an acronym.
  • <strike>        Used to strike through text.
  • <applet>       Used to embed Java applets.
  • <tt>               Similar to <listing>.
  • <big>            To make the font bigger.


Some tags were either obsolete or deprecated until HTML4 and they were either restored or redefined. Redefinition means giving them different or extra meanings: 

  • <embed>...</embed>    Same as the current <object> element. It is restored in HTML5 without redefining its meaning.
  • <menu>...</menu>    A menu listing that is more compact than <ul>. It is restored in HTML5 without redefining its meaning.


  • <u> Was for underlining. It is redefined to mark Chinese proper nouns and misspellings in other languages.
  • <s> Was similar to the deprecated <strike>. It is redefined as non-accurate text.
  • <hr> It was used for a horizontal ruler. Now it means a change in the theme below it.
  • <i> It was used for italic text. Now it means a technical term, a phrase from another language, a brand name...etc. (A change in the mode or tune).
  • <a> It should not be used for marking anchors. It should only be used for hyperlinks. You can scroll to any element that has an id. (i.e. not only named <a> elements).

So, what should I use instead of deprecated and obsolete tags?

All obsolete and deprecated elements have alternative elements. It is noted that the W3C general trend is to keep HTML language free from styling and animation elements for the favor of CSS. Additionally, some testing tools recommend not using hidden tables for screen layouts. Always use CSS for styling.


To gain current browsers support, avoid using obsolete tags. If you want to make your website compatible with future releases of HTML avoid using deprecated elements. Redefined elements should be reviewed to avoid unpredictable results.


Other articles by the author: