ルビ（）は、文章内の任意の文字に対しふりがなや説明、異なる読み方といった役割の本文の横に付属される文字。通常縦書きの際は文字の右側に、横書きの際は文字の上側に記されるものである。

明治時代からの日本の活版印刷用語であり、「ルビ活字」を使用し振り仮名（日本語の場合）やピン音（中国語の場合）などを表示したもの。日本で通常使用された5号活字（10.5ポイント相当）にルビを振る際、7号活字（5.25ポイント相当）を用いたが、一方、イギリスから輸入された5.5ポイント活字の呼び名が（ルビー）であったことから、この活字を「ルビ活字」とよび、それによってつけられた（振られた）文字を「ルビ」とよぶようになった。明治期つまり19世紀後半のイギリスでは活字の大きさを宝石の名前をつけてよんでいた。

 ルビの振り方 
ルビをつけることを一般的に「ルビを振る」と表現する。より専門的な業界用語として、組版では「ルビを組む」と表現する。

 総ルビ 
少年漫画のように全ての漢字にルビを振ることを「総ルビ」と呼ぶ。

 パラルビ 
難読語（滌除に「てきじょ」）、専門用語（気配に「きはい」）、複数の読みがある言葉（下手に「へた」「しもて」「げし」「したて」）、人名（東海林に「しょうじ」「とうかいりん」）・地名（左沢に「あてらざわ」）など、一部の単語だけに振ることを「パラルビ」という 。

 ルビが必要となる場合 
 漢字に読みをつける際に用いる。通常、ひらがなが用いられる。
 一般的でない読み方をする固有名詞（特に架空の人名・地名）や、あまり用いられない難読語に読みをつける。
 「女」と書いて「ひと」、「宿敵」と書いて「とも」のように、任意の文字・単語に対して別の読み方や意味を指定したい場合に用いる。文芸や音楽の歌詞などで用いられる場合がある。マンガやライトノベルなどでは、単語の本来の読みとは関係ない、作中における裏の意味を明示するために用いられることがある（義訓も参照）。
 外来語を翻訳した用語の場合に、その用語自体の読み方は一般的に自明だが元の外来語の発音を提示したい場合に用いる。この場合はカタカナが用いられる。
 その他、文書の対象年齢が低い場合など必要に応じ、総ルビを施す（少年・少女漫画など）。また、かつて（当用漢字の実施前）の日本の新聞は識字向上の一助としてルビが多かった（「今日（けふ）」など簡易な物にも振ってあり、総ルビに近い）。
 未就学児向けの絵本などにおいて、カタカナ語に、さらにひらがなでルビを振ることがある。

 ルビの実現方法 

 組版規則におけるルビ 
組版についての詳細は組版を参照。

 ルビの組み方 
一般的な組版規則において、ルビの組み方は以下に挙げるような基本的なルールがある。

 親文字との位置 
親文字とは、ルビを振る対象となる元の文字（文字群）のこと。
縦組みならば親文字の右、横組みならば上に付けるのが基本である。
ただし人物名に生没年をつけたり、漢文の書き下し文の組版をする場合には左右ないし上下の両方に付く。
親文字に対する位置は肩付き、センタリング、ジャスティファイなどのルールがある。
親文字の前後の文字が仮名もしくは空白の場合、半角分まで食い込みが可能。
前後に食い込み可能な領域がある場合、後ろにはみ出すことが優先される。
下記のことから、半角分とはつまりルビ1字に相当する。
食い込み可能な領域がない、もしくは不足する場合、前後の文字との字間を空ける。
このときも後ろを空けるのが優先される。

 ルビ文字のサイズ 
組版において、ルビは基本的に親文字の半分のサイズの文字を用いる。冒頭にあるように基本の本文サイズが10.5ポイントならば5.25ポイントであるし、本文が14級なら7級とするのがベーシックな組み方である。これには、振り仮名としては親文字となる漢字1字に対して2-3文字の仮名が振れれば多くの場合は充分、ということもある。

そのため漢字2字に対してはルビ4文字が基本であり、それを越える場合には親文字（単語）の字間を少しずつ空けるか写植以降ではルビ文字を変形加工（平体／長体という）するか、「3字ルビ」といった特殊ルビ文字を使用するなどの処理が行われる。

 グループルビとモノルビ 

漢字1文字ごとに読み仮名を振るルビをモノルビ、単語単位に振るルビをグループルビという。文字と読みの関係を学ぶ目的の文章、教科書や教材（特に低年齢用）ではモノルビが使用される。熟字訓や当て字についてはグループルビが使用される。

 モノルビの配置
次のように親字1文字に該当するルビが振られる（通常は枠は使用しないが、わかりやすいように枠を表示させている）。
 熟語ルビ（グループルビ）の配置
次のように熟語複数文字に該当するルビが振られる（通常は枠は使用しないが、わかりやすいように枠を表示させている）。
きょう おととい あさって  今日は一昨日の明後日です

 捨て仮名 
捨て仮名とは、「あ」に対する「ぁ」のように小書きで表される仮名を指す印刷用語。

和文組版において、一般的に「基本」とされる組み方では捨て仮名は使わない。そのため、仮に「自由百科事典」に「ウィキペディア」とルビを付けるとしたら、「ウイキペデイア」となる。これには小さすぎるポイント・号数の活字では却って読みづらいという問題もあり、読みを助ける意味ではこれで充分であった。

ところが、既に日本語にある単語の振り仮名であるなら一般原則がわかっている読者であるためそれほど問題とはならないのであるが、外来語に関してはそれが一般的でないために「ウィキペディア」なのか「ウイキペデイア」（という単語）なのか分からなくなる。いいかえれば、そこに教育的啓蒙的な配慮が必要かどうかという問題が生じる。

上述したような教科書などの出版物では日本語の読みも含めて捨て仮名が使用されるし、近年はその他の出版物でも捨て仮名を使ったルビ組みも増加傾向にある模様である。

 ルビ字形 
ワープロソフトなどでは（一般的なデジタルフォント製品自体が対応していないので当然なのだが）ルビには通常の文字が使用される。ただし活字時代も含め、専用の組版機（写植、電算写植など）ではルビ専用の仮名文字があることは当たり前だった。OpenTypeフォント製品にはこれを装備しているものがある。

 HTMLとCSSでのルビ 
XHTML 1.1やHTML5でルビモジュールが導入され、ルビを記述できるようになった。それ以前からInternet Explorerが独自規格で先行実装しており、レンダリングが可能であったが、HTML5での記述ルールとは異なっていた。Mozilla財団が開発しているブラウザ・Mozilla FirefoxをはじめとするGeckoブラウザでも2015年5月に公開されたバージョン「Firefox38」以降は標準機能としてルビがサポートされるようになった。

HTML5での記述ルール

ルビを振りたい親字を含む全体をrubyタグで囲み、その中のrtタグをつけた箇所がルビ部分となる。rubyタグの内側でrpタグで囲った部分は、rubyタグをサポートしていない環境で表示するためのタグであり、rubyタグをサポートしている環境では非表示になる。

表意文字である<ruby>漢字<rp>（</rp><rt>かんじ</rt><rp>）</rp></ruby>にルビを振る
現在使用しているブラウザで表示した結果
表意文字である漢字（かんじ）にルビを振る
ルビに対応していないブラウザでの表示結果（例）
表意文字である漢字（かんじ）にルビを振る
ルビに対応しているブラウザでの表示結果（例）
<td> <td>かんじ<td> <td>表意文字である<td>漢字<td>にルビを振る

下ルビ（あるいは左ルビ）を使用するような場合は、rubyタグにCSS3のruby-positionのunder（縦書きのときはleft）でルビの表示位置を指定する必要がある。

上ルビと下ルビ（あるいは右ルビと左ルビ）を併用するような場合は、1つのルビタグ内にrtタグを囲む形でrtcタグでグループ化し、複数入れることで1つの親字に複数のルビを振ることができるが、位置については、rtcタグにCSS3のruby-positionのoverおよびunder（縦書きのときはrightとleft）でルビの表示位置を指定する必要がある。

 ユニコード上のルビ 
Unicode（ユニコード）での標準的なルビ表示制御文字である。ただし、HTMLのタグなどが使える環境の場合はタグによる指定に置き換えるべきである。
U+FFF9 — Interlinear annotation anchor - 親文字開始指定文字
U+FFFA — Interlinear annotation separator - ルビ開始指定文字
U+FFFB — Interlinear annotation terminator - ルビ終止指定文字
記述
表意文字である￹漢字￺かんじ￻にルビを振る
現在使用しているブラウザで表示した結果
表意文字である￹漢字￺かんじ￻にルビを振る

 JIS X 4052上のルビ 
JIS X 4052「日本語文書の組版指定交換形式（Exchange format for Japanese documents with composition markup）」でのルビの記述は、タグ付け及び特殊記号によるものである。規格上はJIS P 0138とJIS X 0201とJIS X 0208とJIS X 0213とJIS X 0221とJIS X 4051とJIS Z 8305とを適用する。

 タグ付けによる対象要素の指定 
#HTMLとCSSでのルビ指定と同じ形式である。ただし、rp要素は使わない。
グループルビ記述
表意文字である<RUBY><RB>漢字</RB><RT>かんじ</RT></RUBY>にルビを振る
現在使用しているブラウザで表示した結果
表意文字である漢字かんじにルビを振る
モノルビ記述
表意文字である<RUBY><RBC><RB>漢</RB><RB>字</RB></RBC><RTC><RT>かん</RT><RT>じ</RT></RTC></RUBY>にルビを振る
現在使用しているブラウザで表示した結果
表意文字である漢字かんじにルビを振る

 特殊記号による対象要素の指定 
ルビ文字列及び親文字列からなる親文字群は、次のように指定する。開始記号列 ＿^。終止記号列 ^＿。ルビ指定括弧は（ ）を使う。
グループルビ記述
表意文字である＿^漢字（かんじ）^＿にルビを振る
モノルビ記述
表意文字である＿^漢（かん）字（じ）^＿にルビを振る

 JIS X 4081上のルビ 
JIS X 4081「日本語電子出版検索データ構造（Retrieval data structure for Japanese electronic publication）」でのルビの記述は、表示制御記述子によるものである。規格上はJIS X 0208との組み合わせのみであるが、説明として数値文字参照表記で代用表記する。
記述
表意文字である἖漢字ἆかんじἇにルビを振る

 青空文庫上のルビ 
青空文庫でのルビの記述は、視覚障碍者読書支援協会の原文入力ルールであるルビ指定括弧《 》および親文字開始指定文字としての｜を踏襲したものである。小説家になろう・カクヨムなど、小説投稿サイトでもこのルールに従っているところが多い。『一太郎2017』のように、この形式での出力に標準対応したワープロソフトも存在する。
記述1
表意文字である｜漢字《かんじ》にルビを振る
記述2
表意文字である漢字《かんじ》にルビを振る

 pixiv上のルビ 
pixivでは、[[rb:ルビを振りたい文字 > ルビ]]という形式でルビを記述する。
記述
表意文字である[[rb:漢字 > かんじ]]にルビを振る