This is an implementation report for the HTML Ruby Markup Extensions specification.
This specification (re)introduces the <rb> and <rtc> ruby sub-elements,
and defines the corresponding processing model and semantics for ruby,
taking these new sub-elements into account.
It extends the HTML specification.
Aspects of the HTML specification not modified nor extended by HTML Ruby Markup Extensions are presumed to be sufficiently tested, and are not reported about here. Only those aspects that are directly covered by HTML Ruby Markup Extensions are reported on here.
The proposed test suite contains 84 tests for mandatory requirements established by HTML Ruby Markup Extensions. Specifically:
<rb>, interleaved and tabular markup)
<rtc> element.
<rb>, <rt>, <rtc>, and <rp> elements represent
when used outside of <ruby>.
All tests except the last four seek to confirm that various patterns of markup
get processed as specified
with the segmentation of ruby structure as well as the pairing of annotations with bases
being performed as expected,
including in the presence of <rp> or inter-element whitespace.
The last four check that when used in isolation,
the <rb>, <rt>, <rtc>, and <rp> elements have the expected semantics
(representing their children for the first 3, representing nothing for the last one).
The tests focus on making sure appropriate semantics are conveyed, and do not test any specific layout: that is the purview of CSS-RUBY, to be tested separately.
This report was prepared on the basis of testing 4 HTML user agents:
All but two tests pertaining to ruby base markup and <rb> pass in two implementations: Firefox and Kindle.
Of the remaining two, one passes only in a single implementation (Firefox),
and one fails in Kindle but does pass in the three browser implementations: Chrome, Firefox and Safari.
All tests pertaining to the <rtc> element pass in one implementation: Firefox.
All tests pertaining to
what the <rb>, <rt>, <rtc>, and <rp> represent
when used outside of the <ruby>
pass in three implementations: Chrome, Firefox, Safari;
all but one also pass in Kindle.
The tests are considered exhaustive with no known or suspected bugs at the time of publication. If you find any errors, would like to contribute additional tests, or have other feedback, please report it on the web-platform-tests project or to the public GitHub repository for the specification.
A continuously updated version of the test suite is available.
The tests are semi-automated: they are written with automated fail conditions in the form of mismatch reftests, to catch known and predicted failures. The pass condition, to be evaluated manually, is described in each test. See the test suite's README for more details.
As such, automated test failures are indicative of something being wrong with the implementation, but automated passing tests could be false positives, signaling either a correct implementation or failing in a novel way. For this report, every reported passing test was verified manually.
Note: For reasons unknown to the tester, if Kindle Previewer can resolve the reference files used by the reftests when loading the test file, it switches to a different parser which does not have the same characteristics as the one reported on in this report. Since we are evaluating the test results manually anyway, we are not relying on the user-agent doing anything with the reference files, so this provides a simple work around: deleting the reference files or moving them to a different location before opening the test files in Kindle Previewer. If this step is skipped, the results reported in this document will not be reproduced.
The following table gives the results as of 6 March 2026.
| Testcase | Chrome | Firefox | Safari | Kindle |
|---|---|---|---|---|
Tests for ruby base markup patterns variations (with or without <rb>, interleaved and tabular)
| ||||
| html-ruby-001.html | PASS | PASS | PASS | PASS |
| html-ruby-002.html | PASS | PASS | PASS | PASS |
| html-ruby-003.html | PASS | PASS | PASS | PASS |
| html-ruby-004.html | PASS | PASS | PASS | PASS |
| html-ruby-005.html | FAIL | PASS | FAIL | PASS |
| html-ruby-006.html | FAIL | PASS | FAIL | PASS |
| html-ruby-007.html | FAIL | PASS | FAIL | PASS |
| html-ruby-008.html | PASS | PASS | PASS | PASS |
| html-ruby-009.html | FAIL | PASS | FAIL | PASS |
| html-ruby-010.html | FAIL | PASS | FAIL | PASS |
| html-ruby-011.html | PASS | PASS | PASS | PASS |
| html-ruby-012.html | PASS | PASS | PASS | PASS |
| html-ruby-013.html | FAIL | PASS | FAIL | PASS |
| html-ruby-014.html | FAIL | PASS | FAIL | PASS |
| html-ruby-015.html | PASS | PASS | PASS | FAIL |
| html-ruby-016.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-101.html | PASS | PASS | PASS | PASS |
| html-ruby-102.html | PASS | PASS | PASS | PASS |
| html-ruby-103.html | PASS | PASS | PASS | PASS |
| html-ruby-104.html | PASS | PASS | PASS | PASS |
| html-ruby-105.html | FAIL | PASS | FAIL | PASS |
| html-ruby-106.html | FAIL | PASS | FAIL | PASS |
| html-ruby-107.html | FAIL | PASS | FAIL | PASS |
| html-ruby-108.html | PASS | PASS | PASS | PASS |
| html-ruby-109.html | FAIL | PASS | FAIL | PASS |
| html-ruby-110.html | FAIL | PASS | FAIL | PASS |
| html-ruby-111.html | PASS | PASS | PASS | PASS |
| html-ruby-112.html | PASS | PASS | PASS | PASS |
| html-ruby-201.html | PASS | PASS | PASS | PASS |
| html-ruby-202.html | PASS | PASS | PASS | PASS |
| html-ruby-203.html | PASS | PASS | PASS | PASS |
| html-ruby-204.html | PASS | PASS | PASS | PASS |
| html-ruby-205.html | FAIL | PASS | FAIL | PASS |
| html-ruby-206.html | FAIL | PASS | FAIL | PASS |
| html-ruby-207.html | FAIL | PASS | FAIL | PASS |
| html-ruby-208.html | PASS | PASS | PASS | PASS |
| html-ruby-209.html | FAIL | PASS | FAIL | PASS |
| html-ruby-210.html | FAIL | PASS | FAIL | PASS |
| html-ruby-211.html | PASS | PASS | PASS | PASS |
| html-ruby-212.html | PASS | PASS | PASS | PASS |
Tests for <rtc>
| ||||
| html-ruby-301.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-302.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-303.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-304.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-305.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-306.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-307.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-308.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-309.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-310.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-311.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-312.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-313.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-314.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-315.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-316.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-401.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-402.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-403.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-404.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-405.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-406.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-407.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-408.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-409.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-410.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-411.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-412.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-413.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-414.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-415.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-416.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-501.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-502.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-503.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-504.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-601.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-602.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-603.html | FAIL | PASS | FAIL | FAIL |
| html-ruby-604.html | FAIL | PASS | FAIL | FAIL |
Tests for what <rb>, <rt>, <rtc>, and <rp> represent when used outside of the <ruby>
| ||||
| html-ruby-701.html | PASS | PASS | PASS | PASS |
| html-ruby-702.html | PASS | PASS | PASS | PASS |
| html-ruby-703.html | PASS | PASS | PASS | PASS |
| html-ruby-704.html | PASS | PASS | PASS | FAIL |