A software changelog lists a new feature added to a release, a contract introduces a clause that did not exist before, a terms of service page gains a new paragraph. In every one of those cases, simply adding text to the document is not enough: it also needs to signal clearly that this passage is new, and since when it has been.
The <ins> tag answers that need. It marks a passage as inserted in a revised version of the content, visibly and with a date attached, rather than blending it silently into the rest of the text as if it had always been there.
Definition
<ins> wraps text considered inserted into a document compared to an earlier version. The browser underlines it by default, which sets it visually apart from the rest of the content, but most of its value lies in its meaning: <ins> declares a tracked addition inside the history of a piece of content that keeps evolving, not a mere styling choice.
The same attributes as del
<ins> shares exactly the two optional attributes of <del>, its complementary tag. The cite attribute points to a URL that justifies the addition, a release note, a piece of news, a changelog. The datetime attribute states the date, in ISO 8601 format, on which the addition was recorded.
<p>
New in version 3.2:
<ins cite="/news/releases" datetime="2026-08-15">export reports as PDF</ins>.
</p>That symmetry is no accident: <del> and <ins> form a pair designed from the start to work together, one marking what disappears, the other marking what appears in its place.
A concrete example: terms of service that change
A revised legal document shows the tag's value well. Rather than publishing a new version with no history, or a separate note that quickly drifts out of sync with the actual text, the document itself carries the trace of its changes, readable right where they happen.
<p>
Section 7: data is kept for 12 months.
<ins cite="/terms/history" datetime="2026-07-01"
>The account holder may request early deletion at any time.</ins
>
</p>A technical changelog follows the exact same logic: every added line between <ins> and its <del> counterpart reconstructs, with no separate document, the full history of a feature or a clause.
Like <del>, <ins> is what is called a "transparent" element: it can wrap a single word inside a running paragraph or a whole block, an entire paragraph or even several, without breaking the structure of the document around it.
ins versus mark
<ins> sometimes gets confused with <mark>, another tag that highlights text. Their difference lies in the moment they speak to. <ins> speaks about time, about a dated revision of a document compared to its previous version: an addition inside a contract, a new clause. <mark> speaks about relevance in the present moment, with no notion of history at all, such as a searched term highlighted inside a search result.
| Situation | Tag to use |
|---|---|
| A clause added to a contract, with a date | <ins> paired with <del> |
| A searched term to highlight inside a result | <mark>, with no notion of revision |
| A changelog line documenting something new | <ins> with the cite and datetime attributes |
Frequently asked questions
ins always have to wrap a whole paragraph?No, <ins> can wrap a single word, a sentence or a whole block, depending on the real size of the addition. A contract gaining a single clause can wrap just that clause, without rewriting the paragraph around it.
ins be used without the cite attribute?Yes, both the cite and datetime attributes stay optional. The tag works perfectly well without them and already signals an addition by its mere presence. They add real value once the change deserves to be dated or backed by a source, which is the most frequent case in practice.
ins looks like a link, is that a problem?That is indeed a possible visual mix up, especially on a page that also contains underlined links. Good practice is to tell them apart with colour in addition to the underline, so that an addition marked with <ins> never reads as a clickable link by mistake.