HTML <rtc> Tag
The HTML <rtc> element is obsolete and removed from the spec. Learn why, and the modern ruby markup using <ruby>, <rt> and <rp> that replaces it.
The HTML <rtc> (Ruby Text Container) element grouped one or more <rt> elements to attach a second layer of annotations — such as a translation or an alternative reading — to ruby base text inside a <ruby> container.
Important:
<rtc>is obsolete. It was removed from the HTML Living Standard along with the<rbc>and<rb>elements. Modern browsers no longer support the "complex ruby" model it was part of, and they may ignore the tag or render it unpredictably. Do not use<rtc>in new pages. This page documents it for historical reference and shows the modern replacement below.
Why it was removed
<rtc> belonged to an older, more complex ruby model that also relied on <rbc> (ruby base container) and <rb> (ruby base). That model let authors stack two annotation layers — for example a phonetic reading and a translation — over a single base. In practice it was implemented inconsistently across browsers and was hard to author, so the spec was simplified. Today the <ruby>, <rt>, and <rp> elements (plus a little CSS) cover the cases that matter.
The modern replacement
For standard East Asian ruby — a base character with a pronunciation guide above it — you only need <ruby>, <rt> for the annotation, and <rp> as a fallback for browsers without ruby rendering.
Example: ruby without <rtc>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<ruby>
旧<rp>(</rp><rt>jiù</rt><rp>)</rp>
金<rp>(</rp><rt>jīn</rt><rp>)</rp>
山<rp>(</rp><rt>shān</rt><rp>)</rp>
</ruby>
</body>
</html>The <rp> parentheses are hidden by browsers that render ruby, and shown as plain text by browsers that don't — so 旧(jiù)金(jīn)山(shān) stays readable everywhere.
Controlling ruby with CSS
You can adjust where the annotation appears and how it aligns using CSS instead of extra container elements:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
ruby {
ruby-position: over; /* place reading above the base (under, inter-character, alternate also valid) */
ruby-align: center; /* distribute the annotation: start, center, space-between, space-around */
}
</style>
</head>
<body>
<ruby>漢<rt>kan</rt>字<rt>ji</rt></ruby>
</body>
</html>If you genuinely need a second annotation layer (the use case <rtc> was meant for), the most reliable approach today is two stacked <ruby> elements or styling with ruby-position, since the complex-ruby model is no longer interoperable.
Migration path
To update legacy markup that uses <rtc>:
- Remove the
<rbc>wrapper and place base characters directly inside<ruby>. - Keep each
<rt>immediately after the base it annotates. - Drop the
<rtc>grouping; if you used it for a translation layer, move that text to a separate element or a second<ruby>. - Add
<rp>fallback parentheses for non-ruby browsers.
Browser support
<rtc> has been removed from the specification and is not part of modern ruby support. Treat it as unsupported in new work. The replacement elements have solid support:
| Element | Support |
|---|---|
<ruby> | All modern browsers |
<rt> | All modern browsers |
<rp> | All modern browsers |
<rtc> | Obsolete — removed, do not rely on it |
The CSS ruby-position and ruby-align properties are supported in current versions of Chrome, Edge, Firefox, and Safari (vendor behavior for some ruby-align keywords still varies).
Related elements
<ruby>— the ruby annotation container<rt>— the ruby text (pronunciation/annotation)<rp>— fallback parentheses for non-ruby browsers
<rtc> formerly supported the Global Attributes and Event Attributes.