HTML Elements
A reference of the HTML elements (113 current, 32 obsolete or deprecated, as of October 2026) drawn from the MDN HTML element reference and the WHATWG HTML Living Standard. Each record captures the element's tag name, a concise description of its purpose, the HTML content categories it belongs to (such as flow, phrasing, metadata, sectioning, embedded, or interactive), whether it is a void element (self-closing, with no end tag), and whether it is deprecated in modern HTML.
Quick fetch
Stable URL. CORS-enabled. No auth.
curl https://staticdata.dev/v1/html-elements.json
Or use as a typed import:
import { htmlElements } from "https://staticdata.dev/v1/html-elements.ts"
Formats
- JSON 35.4 KB
/v1/html-elements.json
min: 28.5 KB · /v1/html-elements.min.json
- CSV 19.7 KB
/v1/html-elements.csv
- TypeScript 35.6 KB
/v1/html-elements.ts
export const htmlElements
type HtmlElement = (typeof htmlElements)[number]
Schema
Each record in the dataset has the following shape.
| Field | Type | Description | Example |
|---|---|---|---|
| tag | string | The element's tag name (lowercase, no angle brackets) | div |
| description | string | Short description of the element's purpose | The generic container for flow content. |
| categories | string[] | HTML content categories the element belongs to | ["flow","phrasing"] |
| void | boolean | True if the element is a void (self-closing) element with no end tag | false |
| deprecated | boolean | True if the element is deprecated or obsolete in modern HTML | false |
Preview
First 10 records.
| tag | description | void | deprecated |
|---|---|---|---|
| a | Defines a hyperlink, which is used to link from one page to another. | false | false |
| abbr | Represents an abbreviation or acronym; the optional title attribute can provide an expansion or description for the abbreviation. | false | false |
| address | Indicates that the enclosed HTML provides contact information for a person or people, or for an organization. | false | false |
| area | Defines an area inside an image map that has predefined clickable areas. | true | false |
| article | Represents a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable. | false | false |
| aside | Represents a portion of a document whose content is only indirectly related to the document's main content. | false | false |
| audio | Embeds sound content in documents. It may contain one or more audio sources, represented using the src attribute or the source element. | false | false |
| b | Draws the reader's attention to the element's contents, which are not otherwise granted special importance. | false | false |
| base | Specifies the base URL to use for all relative URLs in a document. | true | false |
| bdi | Tells the browser's bidirectional algorithm to treat the text it contains in isolation from its surrounding text. | false | false |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/html-elements.json | jq '.[0]' import type { HtmlElement } from "https://staticdata.dev/v1/html-elements.ts";
const res = await fetch("https://staticdata.dev/v1/html-elements.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const htmlElements: HtmlElement[] = await res.json();
console.log(htmlElements[0]); import urllib.request, json
with urllib.request.urlopen("https://staticdata.dev/v1/html-elements.min.json") as r:
htmlElements = json.load(r)
print(htmlElements[0]) package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://staticdata.dev/v1/html-elements.min.json")
if err != nil { panic(err) }
defer resp.Body.Close()
var data []map[string]any
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
panic(err)
}
fmt.Println(data[0])
} use serde_json::Value;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let body = ureq::get("https://staticdata.dev/v1/html-elements.min.json").call()?.into_string()?;
let data: Vec<Value> = serde_json::from_str(&body)?;
println!("{:?}", data.first());
Ok(())
} Sources and methodology
This dataset covers the elements defined in the WHATWG HTML Living Standard (excluding the foreign svg and math elements), plus well-known obsolete and deprecated elements documented on MDN for historical completeness. The 113 current (non-deprecated) elements as of October 2026 span document structure (html, head, body), metadata (meta, link, title, base), sectioning (article, section, nav, aside, header, footer), text-level semantics (a, em, strong, code, etc.), embedded content (img, video, audio, iframe, canvas), tables, forms, and Web Components primitives (template, slot). Categories follow the element index of the HTML standard; conditional categories (e.g. img is interactive only with usemap) are included.
Content categories follow the WHATWG model: flow (most elements that can appear in the document body), phrasing (inline-level text elements), metadata (elements that go in head and set up document configuration), sectioning (elements that define document outline sections), embedded (elements that import external resources), heading (the h1–h6 elements), and interactive (elements that are inherently interactive). An element can belong to multiple categories simultaneously.
Void elements (br, hr, img, input, meta, link, area, base, col, embed, source, track, wbr, and several obsolete ones) cannot have child nodes and must not have an end tag in HTML syntax. Deprecated elements are included for reference — they may still be encountered in legacy markup but should not be used in new code. MDN notes the recommended modern replacement in each deprecated element’s description.
Versioning
URLs under /v1/ are stable: field names and types will not change in a way
that breaks consumers. Values can be corrected or records added when the upstream source
changes; schema-incompatible updates ship under a new version path. See the
html-elements changelog for this dataset's history.
Related datasets
More Web datasets
- aria-attributes
- aria-roles
- character-encodings
- csp-directives
- credit-card-types
- dns-record-types
- dom-events
- emoji
- emoji-shortcodes
- html-attributes
- input-types
- http-auth-schemes
- http-cache-directives
- http-content-codings
- http-headers
- http-methods
- http-versions
- iframe-sandbox-tokens
- ip-protocol-numbers
- keyboard-event-codes
- link-relations
- media-type-suffixes
- mime-types
- oauth-grant-types
- ports
- referrer-policies
- ip-special-blocks
- svg-elements
- tcp-flags
- tlds
- tls-cipher-suites
- tls-versions
- uri-schemes
- well-known-uris