The HTML template element <template> is a mechanism for holding client-side content that is not to be rendered when a page is loaded but may subsequently be instantiated during runtime using JavaScript. Think of a template as a content fragment that is being stored for subsequent use in the document. The parser does process the content of the <template> element during the page load to ensure that it is valid, however.

Content categories:
Metadata content, flow content, phrasing content, script-supporting element.

Permitted content:
Metadata content, flow content, any valid HTML content that is permitted to occur within the <ol>, <dl>, <figure>, <ruby>, <object>, <video>, <audio>, <table>, <colgroup>, <thead>, <tbody>, <tfoot>, <tr>, <fieldset>, <select>, <details> elements and <menu> whose type attribute is in popup menu state.

Tag omission:
None, both the starting and ending tag are mandatory.

Permitted parent elements:
<body>, <frameset>, <head> and <colgroup> without a span attribute.

DOM interface:
HTMLTemplateElement
