W3docs

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>:

  1. Remove the <rbc> wrapper and place base characters directly inside <ruby>.
  2. Keep each <rt> immediately after the base it annotates.
  3. Drop the <rtc> grouping; if you used it for a translation layer, move that text to a separate element or a second <ruby>.
  4. 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:

ElementSupport
<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).

  • <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.

Practice

Practice
What is the correct status of the HTML rtc element today?
What is the correct status of the HTML rtc element today?
Was this page helpful?