TLDR reference
HTML tags
A searchable reference to the HTML elements, each with a one-line meaning and a flag for whether it is still legit or obsolete. Type to search, or filter by purpose. Everything runs in your browser.
114 shown
-
<html>
CurrentThe root element that wraps the whole document.
-
<head>
CurrentHolds metadata about the document, not shown on the page.
-
<title>
CurrentThe page title shown in the tab and search results.
-
<base>
CurrentSets a base URL and default target for all relative links.
-
<link>
CurrentLinks external resources such as stylesheets and icons.
-
<meta>
CurrentCarries metadata: charset, viewport, description, and more.
-
<style>
CurrentEmbeds CSS directly in the document.
-
<body>
CurrentContains all the visible content of the page.
-
<header>
CurrentIntroductory content or navigation for its nearest section.
-
<footer>
CurrentFooter content for its nearest section: author, links, copyright.
-
<main>
CurrentThe dominant, unique content of the document. Only one per page.
-
<nav>
CurrentA block of major navigation links.
-
<section>
CurrentA standalone thematic grouping, usually with a heading.
-
<article>
CurrentA self-contained piece such as a post, card, or comment.
-
<aside>
CurrentContent tangential to the main content, like a sidebar.
-
<h1-h6>
CurrentSection headings from most (h1) to least (h6) important.
-
<hgroup>
CurrentGroups a heading with related taglines or subheadings.
-
<address>
CurrentContact information for its nearest article or body.
-
<p>
CurrentA paragraph of text.
-
<div>
CurrentA generic block container with no meaning, for styling and layout.
-
<hr>
CurrentA thematic break, rendered as a horizontal rule.
-
<pre>
CurrentPreformatted text that keeps its whitespace and line breaks.
-
<blockquote>
CurrentA block quotation from another source.
-
<ol>
CurrentAn ordered (numbered) list.
-
<ul>
CurrentAn unordered (bulleted) list.
-
<li>
CurrentAn item within an ordered or unordered list.
-
<dl>
CurrentA description list of term/description pairs.
-
<dt>
CurrentA term being defined in a description list.
-
<dd>
CurrentThe description of the preceding term.
-
<figure>
CurrentSelf-contained content such as an image with a caption.
-
<figcaption>
CurrentA caption for its parent figure.
-
<center>
ObsoleteCentred a block of content. Use CSS instead.
-
<dir>
ObsoleteAn old directory list. Replaced by ul.
-
<a>
CurrentA hyperlink to another page, file, or location.
-
<span>
CurrentA generic inline container with no meaning, for styling.
-
<strong>
CurrentText with strong importance, typically bold.
-
<em>
CurrentStressed emphasis, typically italic.
-
<b>
CurrentBold text drawn to attention without extra importance.
-
<i>
CurrentItalic text set apart, such as a term or foreign phrase.
-
<u>
CurrentA non-textual underline, such as a spelling-error mark.
-
<s>
CurrentText that is no longer accurate or relevant (strikethrough).
-
<small>
CurrentSide comments such as fine print.
-
<mark>
CurrentHighlighted text for reference or relevance.
-
<abbr>
CurrentAn abbreviation, with the full form in its title.
-
<cite>
CurrentThe title of a cited creative work.
-
<q>
CurrentA short inline quotation.
-
<code>
CurrentA fragment of computer code.
-
<kbd>
CurrentUser keyboard input.
-
<samp>
CurrentSample output from a program.
-
<var>
CurrentA variable in maths or programming.
-
<sub>
CurrentSubscript text.
-
<sup>
CurrentSuperscript text.
-
<time>
CurrentA machine-readable date or time.
-
<br>
CurrentA line break within text.
-
<wbr>
CurrentAn optional line-break opportunity.
-
<del>
CurrentText removed from the document.
-
<ins>
CurrentText added to the document.
-
<bdi>
CurrentIsolates text whose direction may differ, for bidirectional text.
-
<font>
ObsoleteSet text font, size, and colour. Use CSS instead.
-
<big>
ObsoleteMade text one size larger. Use CSS instead.
-
<strike>
ObsoleteStruck-through text. Replaced by s or del.
-
<tt>
ObsoleteTeletype monospace text. Replaced by code or CSS.
-
<acronym>
ObsoleteAn acronym. Replaced by abbr.
-
<blink>
ObsoleteMade text blink. Never standardised; avoid.
-
<form>
CurrentA section that collects and submits user input.
-
<input>
CurrentA data-entry field; the type attribute sets its kind.
-
<textarea>
CurrentA multi-line text input.
-
<button>
CurrentA clickable button.
-
<select>
CurrentA drop-down list of options.
-
<option>
CurrentAn option within a select or datalist.
-
<optgroup>
CurrentA labelled group of options in a select.
-
<label>
CurrentA caption tied to a form control.
-
<fieldset>
CurrentGroups related form controls together.
-
<legend>
CurrentA caption for a fieldset.
-
<datalist>
CurrentA list of suggested values for an input.
-
<output>
CurrentThe result of a calculation or user action.
-
<progress>
CurrentA progress bar for a task.
-
<meter>
CurrentA scalar measurement within a known range, like a gauge.
-
<table>
CurrentTabular data in rows and columns.
-
<caption>
CurrentA title for a table.
-
<thead>
CurrentThe header row group of a table.
-
<tbody>
CurrentThe body row group of a table.
-
<tfoot>
CurrentThe footer row group of a table.
-
<tr>
CurrentA row in a table.
-
<th>
CurrentA header cell in a table.
-
<td>
CurrentA data cell in a table.
-
<colgroup>
CurrentA group of columns for shared styling.
-
<col>
CurrentA single column within a colgroup.
-
<img>
CurrentAn image.
-
<picture>
CurrentMultiple image sources for art direction and formats.
-
<source>
CurrentOne media source for picture, audio, or video.
-
<audio>
CurrentEmbedded sound content.
-
<video>
CurrentEmbedded video content.
-
<track>
CurrentCaptions or subtitles for audio and video.
-
<iframe>
CurrentAn inline frame embedding another document.
-
<embed>
CurrentAn external application or interactive content.
-
<object>
CurrentAn external resource such as a PDF or plugin.
-
<canvas>
CurrentA drawing surface for graphics via JavaScript.
-
<svg>
CurrentInline scalable vector graphics.
-
<map>
CurrentAn image map of clickable areas.
-
<area>
CurrentA clickable region within an image map.
-
<frame>
ObsoleteA pane in a frameset. Removed from HTML.
-
<frameset>
ObsoleteA grid of frames. Removed from HTML; use iframe or CSS.
-
<applet>
ObsoleteAn embedded Java applet. Removed from HTML.
-
<marquee>
ObsoleteScrolling text. Never standardised; use CSS animation.
-
<details>
CurrentA disclosure widget that expands to show more.
-
<summary>
CurrentThe visible label for a details element.
-
<dialog>
CurrentA modal or non-modal dialog box.
-
<menu>
CurrentA semantic list of commands or a toolbar.
-
<script>
CurrentEmbeds or links executable JavaScript.
-
<noscript>
CurrentFallback content when scripts are disabled.
-
<template>
CurrentInert markup to be cloned by JavaScript.
-
<slot>
CurrentA placeholder inside a web component for injected content.
-
<data>
CurrentLinks content to a machine-readable value.
No tags match your search.
How it works
A searchable reference to the HTML elements, each with a one-line meaning and a flag for whether it is still legit or obsolete. HTML has well over a hundred tags and they are easy to mix up, so this groups them by what they do - document metadata, page structure, text, forms, tables, media, and interactive widgets - and lets you type to find one by name or by purpose. Searching "quote", "list", or "video" jumps straight to the relevant elements.
Each card names the element, explains what it is for in plain language, and marks it Current or Obsolete so you can tell at a glance whether to reach for it or avoid it. The obsolete entries, such as center, font, and marquee, are kept on purpose: you still meet them in old code and need to know what to replace them with. Everything is static and runs in your browser, so the lookup is instant and works offline once the page has loaded.
Example. Searching "section" surfaces the structural elements - section, article, aside, nav, header, footer - that give a page meaning beyond a sea of divs. Filtering by purpose and spotting the red Obsolete badge on center or font tells you to reach for CSS instead.
FAQ
What does it mean for an HTML tag to be obsolete?
An obsolete (or deprecated) tag is one the HTML standard no longer endorses, usually because it controlled presentation that now belongs in CSS, such as font and center, or because it was superseded by a better element, such as acronym giving way to abbr. Browsers often still render obsolete tags for backwards compatibility, but you should not use them in new pages: they may behave inconsistently, hurt accessibility, and can stop working at any time. This reference flags them so you know what to replace.
What is the difference between a semantic and a non-semantic element?
A semantic element describes the meaning of its content - article, nav, figure, and time all tell the browser, search engines, and assistive technology what the content is. Non-semantic elements like div and span carry no meaning and exist purely as containers for styling and layout. Using semantic tags where they fit improves accessibility and SEO at no cost, so the rule of thumb is to reach for a meaningful element first and fall back to div or span only when nothing more specific applies.
Why are b and i still allowed when they look like styling?
They survived because HTML5 redefined them with subtle meanings rather than pure presentation. b marks text to be stylistically offset without extra importance, such as keywords or a product name, while strong means genuine importance. Likewise i marks text set apart, such as a technical term or a foreign phrase, while em means stressed emphasis. They are not obsolete, but when the text really is important or emphasised, strong and em are the more meaningful choices.
Do I still need to close every tag?
Most elements need both an opening and closing tag, and closing them all is the safe, readable habit. A handful are void elements that have no content and never take a closing tag, such as img, br, input, hr, and meta. HTML also technically allows some closing tags to be omitted in certain places, but relying on that makes markup fragile, so writing explicit, well-nested tags is the convention this reference assumes.