必要なツールを、すぐ使えるように

CSS clamp()ジェネレーター

小さい画面と大きい画面で使うサイズを2つ決めるだけで、その間を途切れなくつなぐclamp()の式を作れます。グラフの2つの点をドラッグしたり数値を入力したりすると式がすぐに変わり、縦のカーソルを動かすと、その画面幅で実際に何pxになるかをプレビューと実寸の見本で確認できます。rem・px出力と、画面幅(vw)・コンテナ幅(cqi)の基準を選べるほか、文字サイズに使うときに拡大しても2倍まで大きくなるかや、同じ比率の見出しの段階(タイプスケール)もあわせて計算します。

最終更新 2026-10-22計算はブラウザ内だけで処理
例
プロパティ
出力単位
基準

サイズの傾斜グラフ

点をドラッグすると、2つの画面の幅とサイズが変わります(←→で幅を10px、↑↓でサイズを1px、Shiftを押すとさらに大きく変更)。空いた場所をクリックするか、下のつまみをドラッグすると、その幅での値を確認できます。点線は、clamp()が上下を切り詰める前の直線です。

小さい画面(左の点)
大きい画面(右の点)
単位
remとpxを換算するときに使います。htmlの文字サイズを変更していなければ16pxです。

    実際の画面でプレビュー

    拡大チェック(文字サイズに使う場合)WCAG 1.4.4は、文字を200%まで拡大できることを求めています。

      最大拡大(500%)で届く倍率200%拡大時の倍率2倍の基準2倍に届かないウィンドウ幅

      同じ比率で段階を作る(タイプスケール)上で作った値が0段階です。1段階上がるごとに、小さい画面のサイズには左の比率を、大きい画面のサイズには右の比率を掛けます。

        
            

        最終更新 2026-10-22入力値は保存しません

        ROBERINの基準必要なツールを、
        すぐ使えるように。
        • ひと目で分かる画面入力と結果の位置をはっきり分けます。
        • 結果が先主要な結果を先に示し、過程は必要なときだけ。
        • 求めない登録や不要な入力なしですぐ使えます。

        2つの画面サイズを決めるだけのclamp()ジェネレーター

        CSS clamp()ジェネレーターは、小さい画面と大きい画面で使いたいサイズを2つ入力すると、その間を途切れなくつなぐclamp()の式を作ります。たとえば、画面幅360pxで16px、1280pxで20pxにしたい本文なら、font-size: clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem);になります。360pxより狭い画面では16pxのまま、1280pxより広い画面では20pxのままで、その間は画面幅に比例して大きくなります。

        上のサイズ傾斜グラフで2つの点をドラッグすると式がすぐに変わり、縦のカーソルを動かすと、その画面幅で実際に何pxになるかを確認できます。右側のプレビューはその幅の画面を縮小して表示し、ブラウザが実際に計算した値を実寸の見本として描きます。出力単位はremとpx、基準は画面幅(vw)とコンテナ幅(cqi)から選べます。文字サイズとして使うときに拡大しても2倍まで大きくなるかを調べる拡大チェックと、同じ比率で見出しの段階を作るタイプスケールも、あわせて計算します。

        なぜclamp()でサイズをつなぐのか

        メディアクエリでサイズを切り替えると、決めた幅でちょうど値が跳ね上がります。767pxで16pxだった見出しが、768pxになると突然28pxになる、といった具合です。その境界の前後にある端末では、画面に対して文字が大きすぎたり小さすぎたりしやすく、境界を増やすほど管理する規則も増えます。clamp()なら、最小値と最大値の間を直線でつなぎ、1つの規則であらゆる幅に対応できます。

        • スマホでは小さく、デスクトップでは大きく見せたい見出し: ファーストビューの見出しのように、サイズ差が大きい文字に向いています。ただし、最大が最小の2.5倍を超える場合は、必ず拡大チェックを確認してください(下の「拡大とアクセシビリティ」)。
        • 画面に応じて伸び縮みする間隔: カード同士のgapや、セクション間の余白など、狭い画面では詰め、広い画面ではゆったり取りたい値に使います。
        • 本文の幅と内側の余白: 文章を入れる箱のwidthやpaddingを、画面に合わせて広げつつ、決めたサイズで止めたいときに使います。
        • デザイン案が2枚しかないとき: モバイル案とデスクトップ案の値しかなく、その間の画面が空白になっている場合は、2つの値をそのまま入力して間を埋めます。
        • コンポーネントの置き場所によってサイズが違うとき: 同じカードがサイドバーと本文の両方で使われる場合は、画面幅よりカード自身の幅を基準にするほうが適切です。その場合は、基準をコンテナ(cqi)に切り替えます。

        使い方

        1. 上の例のバーから近い用途をクリックするか、小さい画面と大きい画面の画面幅・サイズを入力します。グラフの2つの点をドラッグしても、同じ欄が変わります。
        2. プロパティ(font-size・gap・padding・width)、出力単位(rem・px)、基準(画面幅vw・コンテナcqi)を選びます。文字サイズにはrem出力をおすすめします。
        3. グラフの縦のカーソルをドラッグするか、画面幅ごとの値の欄をクリックして、スマホ・タブレット・ノートPC・モニターでのサイズを確認します。「画面幅を動かす」を押すと、ウィンドウを広げたり狭めたりしたときのように見本が動きます。
        4. 文字サイズに使う場合は、拡大チェックで500%拡大の範囲内に2倍へ届くかを確認します。基準を満たさないときは、案内された最大値・最小値に直します。
        5. 「宣言をコピー」でCSSを1行、「式だけコピー」でclamp()の部分だけ、「変数をコピー」でタイプスケール全体を取り出せます。「リンクをコピー」は、現在の設定をURLに含めます。

        計算方法: 傾き・切片・vw係数

        2つの点(小さい画面の幅 w₁、サイズ s₁)と(大きい画面の幅 w₂、サイズ s₂)を結ぶ直線を求め、その直線をCSSが解釈できる単位に直します。

        • 傾き = (s₂ − s₁) ÷ (w₂ − w₁)。画面幅が1px変わるごとに、サイズがどれだけ変わるかを表します。
        • vw係数 = 傾き × 100。1vwは画面幅の1%なので、100を掛けるとvw単位になります。
        • 切片 = s₁ − 傾き × w₁。画面幅が0のときの値で、式の固定部分です。remで出力するときは、ルート文字サイズ(通常は16px)で割ります。

        360pxで16px、1280pxで20pxなら、傾きは4 ÷ 920 = 0.004348、vw係数は0.4348vw、切片は16 − 0.004348 × 360 = 14.4348px = 0.9022remです。両側に最小値と最大値を置くと、clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem)になります。この式が画面幅ごとに返す値は次のとおりです。

        画面幅値区間
        320px16px最小値で固定
        360px16px最小値で固定(境界)
        768px17.77px幅に応じて拡大
        1024px18.89px幅に応じて拡大
        1280px20px最大値で固定(境界)
        1920px20px最大値で固定

        仕様では、clamp(MIN, VAL, MAX)はmax(MIN, min(VAL, MAX))と同じ意味だと定められています。そのため、真ん中の式が範囲を外れた時点で、外側の値がその場所を引き継ぎます。グラフの点線が切り詰める前の真ん中の式で、太い線が実際に使われる値です。大きい画面のサイズを小さい画面より小さく入力すると、画面が広いほど小さくなる式になり、このツールは最小値・最大値の位置を小さい値・大きい値の順に入れ替えて出力します。

        よく使う値

        例のバーにある値を、画面幅360px → 1280px、ルート文字サイズ16pxで計算した式です。出発点として使い、実際のデザインに合わせて調整してください。

        用途小さい画面 → 大きい画面式(rem)
        本文の文字16 → 20pxclamp(1rem, 0.9022rem + 0.4348vw, 1.25rem)
        小見出し20 → 28pxclamp(1.25rem, 1.0543rem + 0.8696vw, 1.75rem)
        見出し28 → 48pxclamp(1.75rem, 1.2609rem + 2.1739vw, 3rem)
        大見出し(拡大基準を満たさない)32 → 96pxclamp(2rem, 0.4348rem + 6.9565vw, 6rem)
        カード間隔(gap)24 → 64pxclamp(1.5rem, 0.5217rem + 4.3478vw, 4rem)
        内側余白(padding)16 → 32pxclamp(1rem, 0.6087rem + 1.7391vw, 2rem)
        本文幅(width)320 → 720pxclamp(20rem, 10.2174rem + 43.4783vw, 45rem)

        pxとrem、どちらで出力するか

        ブラウザで文字を大きくする方法は2つあります。ページ全体の拡大(Ctrl・⌘ と +)は、すべてを大きくする代わりに、CSSが見る画面幅を狭めます。設定のフォントサイズは、remの基準であるルート文字サイズだけを変えます。pxで書いた境界値はフォントサイズ設定に従わず、vwの分はどちらの方法でも変わりません。本文の例(16 → 20px、360 → 1280px)で計算すると、次のようになります。

        状況ウィンドウ幅360pxウィンドウ幅1280px
        標準(100%)16px20px
        ページ拡大200%(pxもremも同じ)32px (2倍)34.43px (1.72倍)
        フォントサイズ設定を32px、rem出力32px (2倍)34.43px (1.72倍)
        フォントサイズ設定を32px、px出力16px (1倍)20px (1倍)

        rem出力にすると、フォントサイズ設定がページ拡大とまったく同じ比率で文字を大きくします。境界値と切片がそろって2倍になり、vwの分だけが変わらないためです。px出力では、設定を変えても文字が変わらないので、大きなフォントを使っている利用者には何の変化もありません。文字サイズにはrem、枠線のように設定に従わせたくない値にはpxを使うのが無難です。サイトがhtml { font-size: 62.5%; }でルートを10pxに変えている場合は、ルート文字サイズの欄に10を入力すると、rem値が正しくなります。

        画面幅(vw)とコンテナ幅(cqi)

        vwはブラウザの画面幅が基準なので、同じ画面の中でカードが狭いサイドバーに移っても、値は変わりません。コンテナ単位のcqiは、最も近いコンテナの内側の幅(横書きでは幅)の1%です。親要素にcontainer-type: inline-size;を指定し、このツールの基準をコンテナに切り替えると、グラフの横軸がコンテナ幅になり、式のvwの位置にcqiが入ります。

        • CSS Containment 3は、適切なコンテナが見つからない場合、cqiをsmall viewportのサイズを基準に計算すると定めています。親にcontainer-typeを指定し忘れると、画面幅基準に近い動きになり、ミスに気づきにくくなります。
        • CSS Values 4によると、ビューポート単位はスクロールバーがないものとして計算されます(overflow: scrollのようにスクロールバーが常に表示される場合は例外)。スクロールバーが場所を占める環境では、100vwが実際の本文幅より広くなり、横方向のはみ出しが起きることがあります。幅の指定にはcqiや%のほうが安全です。
        • コンテナ単位は、Chrome 105、Firefox 110、Safari 16から対応しています(下のブラウザ対応表を参照)。

        拡大とアクセシビリティ: 2倍まで大きくなるか

        WCAG 2.2の達成基準1.4.4(テキストのサイズ変更)は、支援技術なしで文字を200%まで拡大しても、内容や機能が損なわれないことを求めています。W3Cは、ビューポート単位だけで文字サイズを決め、拡大しても大きくならない場合を、失敗事例F94として別に挙げています。拡大するとCSSの画面幅が狭くなり、vwの分が小さくなるため、clamp()で作った文字は拡大率ほどには大きくなりません。

        Maxwell Barvian(Smashing Magazine、2023)は、最新のブラウザの最大拡大が500%であることを踏まえ、最大サイズが最小サイズの2.5倍以下であれば、どのウィンドウ幅でも500%以内に2倍へ届くとまとめました。このツールは、その規則に加えて、ウィンドウ幅320~3840pxを実際に計算し、最も不利なウィンドウ幅を探します。小さい画面を360px・16px、大きい画面を1280pxに固定して、最大サイズだけを変えると、次のようになります。

        最大サイズ (最大 ÷ 最小)200%拡大時の最低倍率500%拡大で届く最低倍率判定
        20px (1.25)1.72倍4倍合格
        24px (1.5)1.54倍3.33倍合格
        32px (2)1.3倍2.5倍合格
        40px (2.5)1.17倍2倍合格(ぎりぎり)
        48px (3)1.07倍1.67倍不合格
        64px (4)0.92倍1.25倍不合格

        200%拡大だけで見ると、最大 ÷ 最小が1.25の本文の例でも、1280pxのウィンドウでは1.72倍にとどまります。そのウィンドウ幅で2倍にするには、239%まで拡大する必要があります。200%拡大でちょうど2倍になることを求めるチェックに通す必要がある場合は、vwの分をさらに減らすか、文字サイズはremだけにして、間隔や余白にだけclamp()を使う方法を検討してください。64pxの行のように傾きが大きいと、200%拡大でかえって文字が小さくなるウィンドウ幅も生じます。

        タイプスケール: 同じ比率で見出しの段階を作る

        タイプスケールは、本文のサイズに一定の比率を繰り返し掛けて、見出しの段階を作る方法です。Utopia(James Gilyead・Trys Mudford、2020)は、小さい画面と大きい画面で別々の比率を使い、段階ごとにclamp()でつなぐ方式を紹介しました。大きい画面の比率を大きくすると、広い画面では見出しの段階差が広がり、狭い画面では段階が詰まります。このツールは、上で作った値を0段階として、--step-1、--step--1のようなCSS変数を作ります。

        名前比率5段階の倍率16pxの5段階
        短2度1.0671.38倍22.1px
        長2度1.1251.8倍28.8px
        短3度1.22.49倍39.8px
        長3度1.253.05倍48.8px
        完全4度1.3334.21倍67.3px
        増4度1.4145.65倍90.4px
        完全5度1.57.59倍121.5px
        黄金比1.61811.09倍177.4px

        小さい画面の比率と大きい画面の比率の差が大きいほど、上の段階の「最大 ÷ 最小」が急速に大きくなります。本文16 → 20pxに1.2と1.25を使うと、5段階は39.81 → 61.04pxで1.53倍となり、拡大基準の範囲内です。一方、1.2と1.5を使うと、5段階は39.81 → 151.88pxで3.8倍となり、基準を超えます。段階の一覧の右側にある表示は、段階ごとに拡大チェックを計算し直した結果です。

        ブラウザ対応

        機能ChromeFirefoxSafari
        clamp()797513.1
        コンテナ単位(cqiなど)10511016
        ビューポート単位(vwなど)20196

        MDNは、clamp()を2020年7月から主要なブラウザで広く使える機能(Baseline Widely available)に分類しています。CSS Values 4のドラフトには、最小値や最大値の位置にnoneを書く構文も定義されていますが、MDNの互換性データにはこの構文の対応項目がまだないため、このツールでは使いません。

        よくある間違い

        • vw係数に100を掛け忘れる: 傾きの0.004348をそのまま0.004348vwと書くと、変化が100分の1になり、ほぼ固定値になります。
        • clamp()の中には必ずcalc()が必要だと思い込む: clamp()の3つの位置には、すでに足し算・引き算の式を書けるので、clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem)で十分です。calc()で囲んでも結果は同じです。
        • ルート文字サイズが違うサイトに、rem式をそのまま貼る: ルートが10pxのサイトでは、1remは10pxです。ルート文字サイズの欄をそのサイトの値に変えて、作り直してください。
        • 最小値と最大値の順序を入れ替えて書く: clamp()は、最小値が最大値より大きいと最小値を使います。手で直しているうちに2つの値を入れ替えると、画面幅に関係なく1つの値に固定されます。
        • 文字サイズをvwだけで決める: font-size: 5vwは拡大しても大きくならず、WCAGの失敗事例F94に該当します。remの切片を持つclamp()に変えて、拡大チェックを確認してください。
        • 幅に100vwを使う: スクロールバーが場所を占める環境では、横スクロールが発生します。widthの最大値や真ん中の式には、%やcqiの利用を検討してください。
        • 行間をpxで固定する: 文字サイズだけが大きくなって行間はそのままなので、行が重なります。line-height: 1.5のように、単位のない値を使ってください。

        制限と注意点

        • 2つの点を結ぶ直線を1本だけ作ります。区間ごとに傾きを変えるには、clamp()をメディアクエリやコンテナクエリと組み合わせて、複数使う必要があります。
        • 拡大チェックは、ChromeやFirefoxのように、拡大するとCSSの画面幅が倍率の分だけ狭くなる方式で計算しています。Smashing Magazineの記事も、Safariは拡大の方式が異なる場合があると書いています。最終的な判断は、実際のページを拡大して確認してください。
        • フォントサイズ設定の計算は、htmlの文字サイズが%かremで指定されているか、指定されていないことを前提にしています。htmlにpxで文字サイズを固定しているサイトでは、remも設定に従いません。
        • コンテナ基準を選ぶと、プレビュー画面全体をコンテナとみなして計算します。実際のコンテナの内側の余白や枠線によって、値は変わります。
        • 式の数値は小数第4位まで表示します(第5位を四捨五入)。1920pxの画面でも、差は0.01pxより小さくなります。
        • プレビューのフォントは、この端末の標準フォントです。ブラウザの最小フォントサイズの設定が有効になっていると、小さい値がそのサイズまで引き上げられることがあります。

        基準日 W3C CSS Values and Units Level 4(Working Draft 2024-03-12)、CSS Containment Level 3(Working Draft 2022-08-18)、WCAG 2.2 Understanding 1.4.4とF94、MDN互換性データ(browser-compat-data 8.1.6、2026-10-15)は、2026-10-21に原文で確認しました。表の数値は、このツールの計算コアで求めたものです。

        出典

        よくある質問

        clamp()の式にある3つの値は、それぞれ何ですか?

        clamp(最小値, 真ん中の式, 最大値)では、真ん中の式が画面幅に応じて変わる値で、両側の値がその式を超えられない下限・上限です。CSS Values 4は、これをmax(最小値, min(真ん中の式, 最大値))と同じ意味だと定めています。このツールは、真ん中の式を「切片 + 係数vw」の形で作り、2つの画面で決めたサイズを正確に通るようにします。

        vw係数と切片はどのように計算しますか?

        傾き = (大きい画面のサイズ − 小さい画面のサイズ) ÷ (大きい画面の幅 − 小さい画面の幅)で、vw係数は傾き × 100、切片は小さい画面のサイズ − 傾き × 小さい画面の幅です。360pxで16px、1280pxで20pxなら、傾きは0.004348、係数は0.4348vw、切片は14.4348px(0.9022rem)です。

        出力はremとpxのどちらがよいですか?

        文字サイズにはremをおすすめします。remはブラウザのフォントサイズ設定に従って大きくなりますが、pxはそのままです。rem出力なら、フォントサイズを2倍にした結果が200%拡大と同じ倍率になります。枠線のように、設定に従わせたくない値にはpxを使っても構いません。

        clamp()で作った文字サイズは、アクセシビリティの基準を満たしますか?

        常に満たすとは限りません。WCAG 1.4.4は文字を200%まで拡大できることを求めていますが、拡大するとCSSの画面幅が狭くなり、vwの分が小さくなります。Barvian(Smashing Magazine、2023)は、最大サイズが最小サイズの2.5倍以下なら、500%拡大の範囲内で2倍に届くとまとめています。拡大チェックの欄で、最も不利なウィンドウ幅での倍率を確認してください。

        画面幅(vw)ではなくコンテナ幅(cqi)は、どんなときに使いますか?

        同じカードやコンポーネントが、広い本文と狭いサイドバーの両方に置かれるときに使います。親要素にcontainer-type: inline-sizeを指定する必要があり、適切なコンテナがない場合、cqiはsmall viewportのサイズを基準に計算されます。コンテナ単位は、Chrome 105、Firefox 110、Safari 16から対応しています。

        大きい画面でかえって小さくなる値も作れますか?

        作れます。大きい画面のサイズを小さい画面のサイズより小さく入力すると、係数が負の式になり、このツールが最小値・最大値の位置を小さい値・大きい値の順に入れ替えて出力します。2つのサイズが同じ場合は、clamp()を使わず値を1つだけ出力します。

        タイプスケールの2つの比率は、どう選べばよいですか?

        小さい画面の比率は段階差を小さく、大きい画面の比率は少し大きくすることが多いです。Utopiaが紹介する方式のように、1.2(短3度)と1.25(長3度)から始めると、本文16 → 20pxの5段階は39.81 → 61.04pxになります。2つの比率の差が大きいほど、上の段階が拡大基準を超えやすくなるので、段階の横にあるチェック表示を確認してください。

        コピーした式が、実際のサイトで違って見えるときは、何を確認すればよいですか?

        まず、サイトのルート文字サイズが、このツールのルート文字サイズの欄と同じかを確認します。次に、ほかの規則が同じプロパティを上書きしていないか、コンテナ基準なら親にcontainer-typeがあるかを、開発者ツールで確認します。ブラウザの最小フォントサイズの設定が有効だと、小さい値がそのサイズまで引き上げられることがあります。