ToolDeck

CSS単位コンバーター

px・rem・em・vw・vh・% 間で CSS 単位を変換

px16
rem1
em1
vw1.111111
vh1.777778
%100
pt12
cm0.4233331
mm4.233331
in0.1666667
こちらもどうぞ:CSS FormatterCSS Minifier

CSS 単位変換とは?

CSS 単位コンバーターは、異なる CSS 計測システム間で長さの値を変換するツールです。CSS には 12 種類以上の長さ単位が定義されており、2 つのグループに分かれています。絶対単位(px・pt・cm・in)は固定された物理的な寸法にマッピングされ、相対単位(rem・em・vw・vh・%)はフォントサイズやビューポートのサイズといったコンテキストに依存します。

ブラウザはレンダリング時にすべての CSS の長さをピクセルに変換します。1.5rem と記述すると、ブラウザはルートフォントサイズ(通常 16px)に 1.5 を掛けて 24px を算出します。50vw と記述すると、現在のビューポート幅の半分を取得します。これらの関係を理解することは、デバイスをまたいでスケールし、ブラウザで設定されたカスタムフォントサイズなどのユーザー設定を尊重するレイアウトを構築するうえで不可欠です。

W3C の CSS Values and Units Module Level 4 仕様は、すべての絶対単位間の正確な変換比率を定義しています:1in = 96px = 72pt = 2.54cm = 25.4mm。相対単位は実行時のコンテキストに依存するため、固定の比率はありません。無料の CSS 単位コンバーターを使えば、コードを一切書かずに、特定のルートフォントサイズとビューポートの寸法に基づいてこれらの関係を即座に計算できます。

CSS 単位コンバーターを使う理由

CSS 単位を手動で変換するには、比率を覚えて計算機を取り出し、計算結果を確認する手間がかかります。このツールはブラウザ内で変換を即座に実行します。

即時変換
値を入力して変換元の単位を選ぶだけで、10 種類すべての CSS 単位の結果が一度に表示されます。px から rem・px から vw・px から pt の計算をそれぞれ別に行う必要はありません。
🔒
データはプライベートに保護
すべての変換はブラウザ内でローカルに実行されます。値がサーバーに送信されたり、ログに記録されたり、保存されたりすることはありません。タブを閉じればデータは消えます。
🎯
実際のコンテキストに合わせた設定
ルートフォントサイズ、ビューポート幅、ビューポート高さ、親フォントサイズを設定できます。コンバーターはこれらの値を使って、rem・em・vw・vh・% 単位の正確な結果を算出します。
📏
すべての CSS 長さ単位に対応
px・rem・em・vw・vh・%・pt・cm・mm・in に対応しています。画面レイアウト・印刷スタイルシート・レスポンシブタイポグラフィのいずれを扱う場合でも、すべての単位をカバーしています。

CSS 単位コンバーターの使用例

フロントエンド開発
デザインファイルのピクセル値をコンポーネントライブラリ用の rem に変換します。Figma のモックアップで 24px のスペーシングが指定されている場合、ユーザーのフォントサイズ設定に合わせてレイアウトがスケールするよう 1.5rem に変換します。
バックエンド / フルスタックエンジニアリング
寸法を pt や cm で指定する PDF やメールテンプレートを生成します。CSS のピクセル値を Puppeteer や wkhtmltopdf などのツールを使ったサーバーサイドレンダリング向けの印刷用ポイントサイズに変換します。
DevOps / CI パイプライン
デザインシステムのスペーシングトークンがビルドステップ全体で一貫した単位を使用しているか検証します。16px のベースが生成された CSS で期待どおりの rem 値を生み出しているかを素早く確認できます。
QA / ビジュアルテスト
クロスブラウザテスト中に計算済みスタイルを検証します。Chrome DevTools が 14.4px の計算値を表示している場合、rem に変換してスタイルシートの期待値 0.9rem と一致するか確認できます。
データビジュアライゼーション
SVG やキャンバス要素をビューポートの寸法に対して相対的にサイズ設定します。固定ピクセルのチャート幅を vw 単位に変換することで、異なるモニター上でも一定の割合で画面を埋めるビジュアライゼーションを実現できます。
CSS の学習
異なるベースサイズを試しながら rem・em・px の関係を理解します。ルートフォントサイズを 16px から 18px に変更したとき、すべての rem 値がどのように変化するかを確認できます。

CSS 長さ単位リファレンス

CSS には 10 種類のよく使われる長さ単位が定義されています。絶対単位はピクセルへの固定された変換比率を持ちます。相対単位はコンテキストに依存します:rem はルートフォントサイズ、em は親フォントサイズ、vw と vh はブラウザのビューポートを基準とします。

単位名称デフォルトサイズ基準
pxPixel1pxFixed; 1px = 1/96 of 1in on screens
remRoot em16px (default)Relative to <html> font-size
emEmInheritedRelative to parent element font-size
vwViewport width1% of viewportRelative to browser window width
vhViewport height1% of viewportRelative to browser window height
%PercentageVariesRelative to parent property value
ptPoint1.333pxPrint unit; 1pt = 1/72 of 1in
cmCentimeter37.795pxPhysical unit; 1cm = 96px / 2.54
mmMillimeter3.7795pxPhysical unit; 1mm = 1cm / 10
inInch96pxPhysical unit; 1in = 96px (CSS spec)

絶対単位と相対単位の比較

絶対単位と相対単位のどちらを選ぶかによって、異なる画面サイズやユーザー設定に対するレイアウトの応答方法が変わります。それぞれに異なるトレードオフがあります。

絶対単位(px・pt・cm・mm・in)
絶対単位はコンテキストに関係なく同じ物理的サイズを生み出します。ボーダー・シャドウ・スケールさせたくない要素には px を使用します。印刷スタイルシートには pt を使用します。CSS 仕様では 1in = 96px と定義されていますが、実際の物理サイズはディスプレイの DPI によって異なります。
相対単位(rem・em・vw・vh・%)
相対単位は参照するコンテキストに合わせてスケールします。ユーザー設定を尊重するには、フォントサイズとスペーシングに rem を使用します。コンポーネント内部のスケーリング(要素自身のフォントサイズに対する相対的なパディング)には em を使用します。ヒーローセクションなどのビューポート全体を占めるレイアウトには vw/vh を使用します。

px から rem への変換テーブル(よく使われる値)

この表はルートフォントサイズが 16px(ブラウザのデフォルト)であることを前提としています。プロジェクトで別のベースを使用している場合は、ピクセル値をベースで割ることで rem 相当の値が求められます。

pxrempt典型的な用途
100.6257.5Small caption text
120.759Body text (compact)
140.87510.5Default body text
16112Root font-size (browser default)
181.12513.5Large body text
201.2515H4 heading
241.518H3 heading
32224H2 heading
48336H1 heading
64448Display / hero text

コード例

JavaScript・Python・CSS カスタムプロパティ・Sass で CSS 単位をプログラム的に変換する方法を示します。

JavaScript
// px to rem (given root font-size of 16px)
const pxToRem = (px, base = 16) => px / base
pxToRem(24)  // → 1.5

// rem to px
const remToPx = (rem, base = 16) => rem * base
remToPx(1.5) // → 24

// px to vw (given viewport width of 1440px)
const pxToVw = (px, viewport = 1440) => (px / viewport) * 100
pxToVw(360)  // → 25

// Dynamic calculation using getComputedStyle
const rootFontSize = parseFloat(
  getComputedStyle(document.documentElement).fontSize
) // → 16 on most browsers
Python
# CSS unit converter functions

def px_to_rem(px: float, base: float = 16) -> float:
    return px / base

def rem_to_px(rem: float, base: float = 16) -> float:
    return rem * base

def px_to_vw(px: float, viewport: float = 1440) -> float:
    return (px / viewport) * 100

def px_to_pt(px: float) -> float:
    return px * 72 / 96

print(px_to_rem(24))     # → 1.5
print(rem_to_px(2.5))    # → 40.0
print(px_to_vw(720))     # → 50.0
print(px_to_pt(16))      # → 12.0
CSS (calc & custom properties)
/* Define a base scale using rem */
:root {
  --base: 16px;       /* root font-size */
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem;  /* 8px */
  --space-4: 1rem;    /* 16px */
  --space-8: 2rem;    /* 32px */
}

/* Fluid typography: scales between 1rem (16px) and 2.5rem (40px) */
h1 {
  font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Viewport-relative hero height */
.hero {
  height: calc(100vh - 4rem); /* full viewport minus 64px header */
}

/* Percentage-based grid */
.sidebar { width: 25%; }     /* 360px on 1440px screen */
.content { width: 75%; }     /* 1080px on 1440px screen */
SCSS (mixin)
// Reusable px-to-rem function in Sass
@use "sass:math";

$base-font-size: 16px !default;

@function rem($px) {
  @return math.div($px, $base-font-size) * 1rem;
}

// Usage
.card {
  padding: rem(24px);       // → 1.5rem
  margin-bottom: rem(32px); // → 2rem
  border-radius: rem(8px);  // → 0.5rem
  font-size: rem(14px);     // → 0.875rem
}

よくある質問

ブラウザのデフォルトルートフォントサイズは何ですか?
主要なブラウザ(Chrome・Firefox・Safari・Edge)のルートフォントサイズはすべてデフォルトで 16px です。これはユーザーやスタイルシートが html 要素の font-size を上書きしない限り、1rem = 16px を意味します。アクセシビリティのためにブラウザ設定でこの値を大きくするユーザーもいます。これが、テキストには px よりも rem がより良いデフォルトである理由です。
px を rem に変換するにはどうすればよいですか?
ピクセル値をルートフォントサイズで割ります。デフォルトの 16px ベースでは:24px / 16 = 1.5rem です。プロジェクトで html { font-size: 10px } を設定している場合(よくあるリセット)、24px / 10 = 2.4rem になります。計算式は常に:rem = px / ルートフォントサイズ です。
rem と em の違いは何ですか?
rem はルート要素(html タグ)のフォントサイズを基準とし、em は現在の要素の親フォントサイズを基準とします。これにより rem はページ全体で一貫したサイズを生み出しますが、em はネストされると複合します。2em の親の中にある 2em はルートサイズの 4 倍になります。グローバルなスペーシングとフォントサイズには rem を使用し、コンポーネント自身のテキストに対して相対的にスケールさせたい場合には em を使用してください。
vw や vh 単位はいつ使うべきですか?
ブラウザウィンドウの幅に合わせてスケールさせる要素(全幅のヒーローセクションや fluid タイポグラフィ(vw を使った clamp)など)には vw を使用します。フルスクリーンセクションやビューポートの高さに合わせたレイアウトには vh を使用します。モバイルブラウザではアドレスバーがビューポートの高さを変えるため、vh の使用には注意が必要です。この問題は新しい dvh(dynamic viewport height)単位で解決されています。
同じプロパティで異なる CSS 単位を混在させることはできますか?
はい。CSS の calc() 関数を使うと、1 つの式で任意の単位を組み合わせることができます。例えば width: calc(100vw - 2rem) は完全なビューポート幅からデフォルトベースで 32px を引きます。clamp() でも単位を混在させることができます:font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem) は 16px から 40px の間でスケールする fluid タイポグラフィを実現します。
CSS での 1pt は何ピクセルですか?
CSS では 1pt = インチの 1/72 であり、1 インチ = 96px なので、1pt = 96/72 ≒ 1.333px です。この比率は画面 DPI に関係なく CSS 仕様で固定されています。ポイントは主に印刷スタイルシートと PDF 生成に使用されます。画面デザインには px または rem が適しています。
62.5% フォントサイズリセットはまだ良い慣行ですか?
html { font-size: 62.5% } を設定すると 1rem = 10px になり、頭の中での計算が簡単になります(24px = 2.4rem)。ただし、body 要素にフォントサイズを明示的に設定する必要があり、デフォルトの 16px ベースを前提としているサードパーティコンポーネントで問題が生じる可能性があります。現代的なアプローチは 16px デフォルトをそのまま使い、変換処理には Sass 関数または PostCSS プラグインを使用することです。