無料PXからREMへの変換

設定可能なベースフォントサイズで、ピクセルとremを相互変換します。

px(ブラウザのデフォルト値: 16)

参照表

PXREM

仕組み

REMは「root em」を意味し、ルート要素のフォントサイズを基準としています。デフォルトでは、ブラウザは16 pxを使用します。式はシンプルです: rem = px ÷ ベースpx = rem × ベース。プロジェクトが異なるルートを使用する場合は、上のベースサイズを変更してください。

よくある質問

なぜpxの代わりにremを使うのですか?

REM単位はユーザーのブラウザのフォントサイズ設定に適応し、アクセシビリティを向上させます。ユーザーがデフォルトのフォントサイズを大きくすると、固定されているピクセル値とは異なり、remベースのレイアウトは自動的に調整されます。

emとremの違いは?

EMは親要素のフォントサイズを基準としており、ネストされた要素で複合する可能性があります。REMは常にルート要素(<html>)のフォントサイズを基準としているため、より予測可能です。

どのベースを使うべきですか?

ほとんどのプロジェクトは16 pxのブラウザのデフォルト値を使用します。一部の開発者は、より簡単な計算のためにhtml { font-size: 62.5%; }(10 px)を設定します。プロジェクトに対して定義されたルートフォントサイズを使用してください。

remとは実際には何か

「Rem」はルートemの略だ。W3C CSS Values Level 3仕様では「ルート要素のfont-sizeの計算値に等しい」、すなわち<html>要素の値として定義されている。ブラウザはオーバーライドされない限り<html>16pxにデフォルト設定するため、バニラなページでは1rem = 16px0.5rem = 8px1.5rem = 24px2rem = 32pxとなる。

スタイルシートがhtml { font-size: 20px }と宣言すれば、文書の残り全体で1rem = 20pxになる。ユーザーがブラウザのデフォルトを24pxに引き上げた場合(視力の弱いユーザーに多い調整)、スタイルシートのオーバーライドがなくても1rem = 24pxになる。これがremのアクセシビリティケース全体を一文で表したものだ。

remが重要な理由:アクセシビリティケース

ブラウザはユーザーに2つの異なるスケーリングメカニズムを提供しており、それぞれユニットに対して異なる動作をする:

これがremで構築されたレイアウトはユーザーのアクセシビリティ設定を尊重し、pxで構築されたレイアウトはそうでない理由だ。WCAG 2.2 達成基準 1.4.4(テキストのリサイズ、レベルAA)はテキストをコンテンツや機能の喪失なしに少なくとも200%まで拡大できることを要求している。ブラウザズーム単体では技術的にこれをパスするが、remベースのレイアウトはデフォルトフォントサイズのメカニズム(実際に視力の弱いユーザーが日々調整するもの)を尊重するため、より明瞭にパスする。

remのきっかけとなったemの複合問題

rem以前、CSSでスケーラブルなタイポグラフィを実現する唯一の方法はルートではなく要素のfont-sizeに相対的なemだった。古典的な問題:emベースのフォントサイズを持つネスト要素は複合する。

.list { font-size: 1.2em; }
.list .list { font-size: 1.2em; } /* renders at 1.44× the grandparent */
.list .list .list { font-size: 1.2em; } /* now 1.728× */

3重ネストのリストはボディサイズのほぼ2倍に膨れ上がり、これはほぼ意図されない。remはルートに毎回アンカーすることでこれを解決する:1.2remの3つのネスト要素は、ネストの深さに関わらずすべて19.2pxだ。これが多くの最新スタイルシートがremfont-sizeを使い、コンポーネント内部の比率(ボタンのテキストに合わせるべきアイコンサイズ、ラベルと一緒にスケールするボタン内のパディング)にemを予約している理由だ。

62.5%トリック:便利な計算、アクセシビリティへの疑問

Jonathan Snookが2011年5月の記事で広めたパターン:html { font-size: 62.5% }と設定する。62.5% × 16 = 10なので、デフォルトでは1rem = 10pxとなり、便利な暗算ができる。1.6rem = 16px2.4rem = 24px4.8rem = 48px。デザイナーは各値から「16で割る」という演算を取り除けるため気に入った。

アクセシビリティの批判(当時提起され、後の文献で強化された):ルートfont-sizeを62.5%に設定すると、ユーザーがブラウザ設定で選択した値が事実上縮小される。視力の弱いユーザーがデフォルトを24pxに設定した場合、ボディテキストが15pxになってしまい、remを使う意味が失われる。現代の反論は、ルートを62.5%に設定しつつボディのfont-sizeを1.6remと明示的に宣言する(16pxに戻す)ことで、ユーザーのオーバーライドが正しくカスケードするというものだ。このトリックをまったく使わずにやや不格好な計算に甘んじるチームも多い。

remとpxのどちらを使うか:Comeauの考え方

Josh W. Comeauの記事「px or rem?」(2022年5月、2025年5月更新)がこの決断に最も有用な単一質問のヒューリスティックを提供している。質問:「この値はユーザーがブラウザのデフォルトフォントサイズを大きくしたときにスケールアップすべきか?」そうならremを、そうでなければpxを使う。

そのテストによると:

単一質問テストはコードベースの何千もの決断を通じて一貫した答えを生み出す。これが本当の勝利であり、その結果のスタイルシートはズームとフォントサイズのカスタマイズ両方においてユーザーが期待する動作をする。

Tailwind CSS 4のrem全面採用

Tailwind CSS v4.0(2025年1月)は完全なremベースのデフォルトスケールを搭載した。すべてのタイポグラフィトークン(text-xs 0.75remからtext-9xl 8rem)とすべてのスペーシングトークン(p-1 0.25rem、p-4 1rem、m-8 2rem)が最初からrem単位になっている。Tailwind 4はブラウザのデフォルト16pxを<html>ルートに意図的に残している(62.5%トリックを適用しない)ため、ユーザーのアクセシビリティ設定がクリーンにカスケードする。数千万のプロジェクトがデフォルトでremベースのデザインシステムを使用するようになり、エコシステムが収束したことの最強の証拠だ。

デフォルト16pxルートでの変換テーブル

ピクセルRem一般的な用途
8 px0.5 remベースユニットの半分、小さなスペーシング
12 px0.75 remキャプション、細かい文字
14 px0.875 remサブテキスト
16 px1 rem本文テキストのデフォルト
18 px1.125 remやや強調した本文
20 px1.25 remリードパラグラフ
24 px1.5 remH4見出し;大きなUIテキスト
32 px2 remH3見出し
48 px3 remH2 / ヒーロー見出し
64 px4 remH1 / ディスプレイ見出し

現代のツールキットにおけるremの位置づけ

remはタイプとタイプに紐付いたスペーシングに適したデフォルトだが、すべてのレイアウト問題の答えではない。現代のツールボックスにはこれらも含まれる:

それ以外すべて(本文テキスト、見出し、パディング、ボタン幅、ブレークポイント)にはremが最も抵抗の少ないパスで、最もアクセシビリティの高いデフォルトだ。

その他の質問

プロジェクトがデフォルト以外のベースフォントサイズを使用している場合は?

上のベースフォントサイズフィールドをプロジェクトのhtml { font-size: … }が解決する値に変更する。変換の計算はベースに関わらずrem = px ÷ baseだ。コードベースが18pxを使用する場合、32px1.78remになる。10px(62.5%トリック)の場合は3.2remになる。ルートfont-sizeをオーバーライドするとブラウザのデフォルトをカスタマイズしているユーザーへのアクセシビリティに影響があることに注意。62.5%トリックの議論を参照。

0.625remはなぜ正確に10pxにレンダリングされないのか?

数学的には、デフォルト16pxルートでは正確に10pxになる(0.625 × 16 = 10)。しかしブラウザはサブピクセル精度でレンダリングし、最終値を整数デバイスピクセルにスナップすることがあるため、0.625remのボーダーはモニターのDPRによってはハードコードされた10pxのボーダーとわずかに違って見えることがある。ピクセルパーフェクトな1ピクセルのヘアラインには1pxを直接使う。それ以外はremベースの値で問題ない。

同じスタイルシートでremとpxを混在させられるか?

はい、そうすべきだ。フォントサイズ設定でスケールすべきもの(タイポグラフィ、縦方向のリズム、ブレークポイント)にはremを、そうでないもの(ボーダー、アイコンの詳細、装飾的なシャドウ)にはpxを使う。Comeauの「これはスケールすべきか?」という質問が実用的なフィルターであり、答えはほぼ毎回どちらかのユニットにきれいにマッピングされる。

ビルドツールはpxをremに自動変換するか?

はい。postcss-pxtorempostcss-rem-to-responsive-pixelなどのPostCSSプラグインは、設定可能なしきい値(例:「≥ 12pxのものをすべて変換」)でビルドステップ中に作成したCSSのpx値をremに書き換えられる。既存のpx主体のコードベースの移行に役立つ。このページのようなライブコンバーターは、手作業での計算、デザイン仕様の参照、計算を手で学ぶ際に役立つ。

何かサーバーに送信されるか?

いいえ。変換は1回の割り算で、ブラウザ内でローカルに実行される純粋なJavaScriptの演算だ。入力のいかなる内容もページから出ることはなく、ロードされた後はオフラインで動作する。

関連ツール