広告を貼ったブログを、無料のホスティングに置いて本当に大丈夫なのか。
2026年10月23日に、このブログとFXのブログをWordPressからCloudflare Pagesへ移しました。どちらも広告とアフィリエイトを載せていて、移す前にいちばん気にしたのがこの点でした。
あれから2週間ちょっと、どちらも無料プランのままで、請求は0円です。
無料枠の上限を公式ドキュメントで1つずつ確かめ、2サイトで実際にどこまで使っているかを数えました。結論は、静的なブログなら無料プランで商用利用でき、上限にはまだ遠いです。ただし、無料で済まなくなる場面が3つあり、動画の扱いだけは注意が要ります。
この記事でわかること
- Cloudflare Pages無料プランの上限(ビルド・ファイル数・サイズ・ドメイン・Functions)
- 広告やアフィリエイトを載せた商用利用が規約上できるか
- 広告ブログ2つを無料プランで回した実際の数字
- 有料プランが必要になる3つの場面と、Workersとの関係
移行そのものの手順や経緯は、WordPressからAstroへの移行記事にまとめています。この記事は、移したあとの「無料でどこまで使えるか」に絞った話です。
PARTS LIST /目次
Cloudflare Pagesの無料枠でできること(上限の一覧)
Cloudflare Pagesとは、HTMLや画像などのファイルを、Cloudflareの世界中のサーバーから配信するホスティングサービスです。
無料プランでも、静的なファイルの配信は回数も転送量も無制限です。上限があるのは「ビルドの回数」「1サイトのファイル数」「1ファイルの大きさ」と、サーバー側で動く処理(Pages Functions)の回数です。
数字は2026年11月8日時点のものです。Cloudflare Pagesの上限のページ(2026年9月5日更新)とPages Functionsの料金のページを突き合わせて書いています。
無料プランの上限一覧(ビルド・ファイル・サイズ・ドメイン)
無料プランの上限を、有料プラン(Pro)と並べます。
ビルドの回数と同時ビルドの数は、サイトごとではなくアカウント全体で数えます。サイトを5つ持っていても、月500回を5つで分け合う形です。
一方で、ファイル数とドメインの上限はプロジェクト(サイト)ごとです。
静的ファイルの配信は無料・回数無制限
HTML・CSS・画像などの静的なファイルへのアクセスは、無料プランでも課金されず、回数の上限もありません。
公式の料金ページには、静的なファイルへのリクエストは無料・有料どちらのプランでも無料かつ無制限と書かれています。記事がバズってアクセスが10倍になっても、転送量で請求が来る仕組みがそもそもありません。
静的なブログで気にする対象は、アクセスの量ではなく「ファイルの数」になります。
Pages Functionsだけは1日10万リクエストまで
無料で使えないのは、サーバー側でプログラムを動かすPages Functionsだけです。
Functionsへのリクエストは、Cloudflare Workersの無料枠(1日100,000リクエスト)と共通で数えます。Functionsで5万回、Workersで5万回使えば、その日の枠は使い切りです。数え直しはUTCの0時、日本時間だと毎朝9時です。
注意したいのは、Functionsを1つでも置くと、何も設定しなければすべてのアクセスがFunctionsを通る点です。画像やCSSへのアクセスまで枠を食うので、静的なファイルは _routes.json でFunctionsから外します。このファイルは、functions フォルダがあるサイトをPagesのビルドかwranglerで出すと自動で作られます。
無料プランで商用利用はできる?広告・アフィリエイトの扱い
広告・アフィリエイト・会社のサイトも、無料プランのまま置けます。
規約に「無料プランでは商用利用を禁止する」という条項はありません。Vercelの無料プラン(Hobby)は個人の非商用に限られ、広告やアフィリエイト中心のサイトも商用に入るとVercelのヘルプに書かれています。比べたときの差はここで出ます。
ただし、何を配信してもよいわけではありません。2023年の規約の改定で、制限の中身が「HTMLかどうか」から「動画や大きなファイルか」に変わりました。
規約に商用利用を禁じる条項はない(旧2.8条の廃止)
以前の規約には「2.8条」があり、HTML以外のファイル(画像・音声など)を大量に配信することを禁じていました。
Cloudflareは2023年5月に公式ブログでこの条項をなくすと発表し、制限をCDN(配信網)だけに向けた「サービス別の規約」へ移しました。
2023年より前(旧2.8条)
HTML以外のファイル(画像・音声など)が多すぎる使い方を、全サービス共通で禁止。画像の多いブログは読み方によってはグレーだった
2023年の改定後
制限はCDNの規約へ移り、対象は「動画や大きなファイル」に。ブログの画像やアフィリエイトの広告は対象外
広告のタグを入れたり、アフィリエイトのリンクを貼ったりするのは、HTMLの中身の話です。規約の制限とは関係がありません。
動画と大きなファイルだけは別扱い
改定後も、動画と大きなファイルの扱いだけは残っています。
CDNの規約では、動画や大きなファイルを配信するなら、Developer Platform・Images・Streamなどの有料サービスを使うよう求めています。外部に置いた動画をCDNで配信すると、利用を止められることがあります。
ここで困るのは、Pagesに置いた動画がどこに当たるのか、規約の文面から読み切れない点です。PagesはDeveloper Platformの一部ですが、無料プランが「有料サービス」に入るかどうかは書かれていません。
このブログでは、動画編集の自動化記事に4.4MBのmp4を1本、Pagesから直接配信しています。1ファイル25MiBの上限には収まりますが、規約の「動画」の扱いがはっきりしません。本数を増やすなら、動画はYouTubeかCloudflare Streamに置き、Pagesには置かない方針にしています。
広告ブログ2つを無料プランで運用した実数
2サイトとも無料プランのまま、上限のどれにも近づいていません。
2026年11月8日に、ビルドした成果物(dist フォルダ)のファイル数・大きさと、デプロイの記録を数えました。どちらもAdSenseの広告とアフィリエイトのリンクを載せた、いわゆる商用のブログです。
数字を並べると、無料枠の大きさよりも「何を気にしなくてよくなったか」が見えてきました。
411記事でもファイル数は上限の1割
いちばん上限に近いのはファイル数ですが、それでも1割ほどです。
ファイル数には、記事のHTMLだけでなく、画像・CSS・JavaScript・検索用の索引まで入ります。309記事で2,053個なので、1記事あたり6〜7個の計算です。
このペースなら、上限の2万個に届くのは3,000記事を超えたあたりです。私の書くペースだと、先に心配すべきことはほかにあります。
17日で171回デプロイしてもビルド枠は0回
デプロイは多い日で1日45回しましたが、ビルドの枠は1回も使っていません。
wranglerのログを日付ごとに数えると、デプロイは17日間で171回でした。いちばん多いのは移行した10月23日の45回で、表示を直してはデプロイ、を繰り返していました。その後も1日1〜18回ほど出しています。
月500回の枠を数えていたら、移行した週だけで100回を超えていました。それでも無料で済んでいるのは、Cloudflare側でビルドしていないからです。
私の構成では、手元のMacでAstroのビルドまで済ませ、できたファイルを wrangler pages deploy で直接アップロードしています。Cloudflare側ではビルドが走らないので、ビルドの回数として数えられません(理由は次の見出しで書きます)。
転送ルールとヘッダーの上限にも余裕がある
WordPress時代のURLを転送する _redirects も、上限の5%以下です。
動的なルールは上限が100本と小さいので、カテゴリの付け替えなどで * を使う転送を増やすときだけ気にしています。日本語URLの転送でハマった話は、移行記事の落とし穴の節に書きました。
ビルド月500回の上限を気にしなくていい使い方
月500回の上限が効くのは、GitHubなどと連携してCloudflare側にビルドさせる使い方だけです。
Cloudflare Pagesへの出し方は2つあります。どちらを選ぶかで、無料枠の中でいちばん小さい上限が、効くか効かないかが分かれます。
ブログの更新が多い人ほど、この違いが効いてきます。
Git連携のビルドとwranglerの直接アップロードの違い
Git連携はpushするたびにCloudflareがビルドし、直接アップロードは手元でビルドしたファイルを送るだけです。
公式の上限のページは、ビルドを「Gitにpushするたびに行うもの」と説明しています。直接アップロードがビルドに数えられないことは、Cloudflareのコミュニティで回答役(MVP)が答えています。ただ、公式ドキュメントにはっきり書かれた記述ではないので、将来変わる可能性はあります。
私は記事を出す処理をClaude Codeから呼ぶスクリプトにまとめているので、コマンドが1つ増える手間は感じていません。
無料枠を超えたらどうなるか
超えたときの動きは、上限によって違います。
- Functionsの1日10万リクエスト:設定が「Fail open」ならFunctionsを飛ばして静的なファイルを返します。「Fail closed」だとエラー画面(Error 1027)です。サイトごと止まるのを避けたいなら、Fail openにします
- ビルドの月500回:その月はそれ以上Git連携のビルドができない前提で考えます。直接アップロードに切り替えれば、記事は出し続けられます
- ファイル数・1ファイルの大きさ:その状態のサイトは出せません。大きなファイルはR2(Cloudflareのストレージ)に置くよう、公式の上限のページが案内しています
静的なファイルの配信だけなら、超える上限がそもそもありません。Functionsを使っていない2つのブログは、このどれにも当たらない構成です。
有料プランが必要になる3つの場面
有料にするのは、次の3つのどれかに当たったときだけで十分です。
当たったときに選ぶプランが場面ごとに違うのが、Cloudflareのややこしいところです。ファイル数とビルドはPro(月25ドル、年払いなら月20ドル相当)、Functionsの回数はWorkers Paid(月5ドル)で解決します。
flowchart TD
A["静的サイトをPagesで配信"] --> B{"Functionsを使う?"}
B -->|"いいえ"| C{"ファイルは2万個以内?"}
B -->|"はい"| D{"1日10万リクエスト以内?"}
D -->|"いいえ"| E["Workers Paid<br>月5ドル"]
D -->|"はい"| C
C -->|"いいえ"| F["Pro<br>月25ドル"]
C -->|"はい"| G{"Git連携のビルドが<br>月500回を超える?"}
G -->|"はい"| H["直接アップロードに切り替えるか<br>Proにする"]
G -->|"いいえ"| I["無料プランのままでよい"]
ファイルが2万個を超えるとき
記事数が数千本あるサイトや、画像を1記事に何十枚も置くサイトは、先にファイル数に当たります。
有料プランにすると、1サイト100,000個まで増えます。公式の上限のページによると、増やすにはプロジェクトの設定で環境変数 PAGES_WRANGLER_MAJOR_VERSION=4 を入れる必要があります。有料にしただけでは増えないので、ここは見落としやすい点です。
画像が多いだけなら、画像をR2に移してファイル数を減らす手もあります。
Functionsが1日10万リクエストを超えるとき
お問い合わせフォームや、アクセスのたびに動く処理をFunctionsで作ると、この枠に当たることがあります。
Workers Paidは月5ドルで、月1,000万リクエストまで含まれ、超えた分は100万リクエストごとに0.30ドルです(Workersの料金のページ)。1日10万リクエストを超えるほど動的な処理が多いサイトなら、月5ドルで済むのは安い部類です。
私のブログでは、ABテストの振り分けもFunctionsを使わず、ブラウザの中で済ませました。考えた経緯は静的ブログのABテストの記事に書いています。
Git連携のビルドが月500回を超えるとき
チームで1日に何十回もpushするサイトは、Git連携のビルドの枠に当たります。
同時ビルドが1つしかないので、回数より先に待ち時間が気になる人もいるはずです。Proにすると月5,000回・同時5つに増えます。
1人で書くブログなら、前の見出しで書いたとおり、直接アップロードに切り替えるだけで枠から外れます。月25ドルを払う前に、出し方を変える手を試す価値はあります。
Cloudflare PagesとWorkersの関係
いまCloudflareは、静的サイトの配信をWorkersにもまとめつつあります。
Workersには、静的なファイルを配信する機能(Workers Static Assets)が入りました。公式にはPagesからWorkersへの移行ガイドも用意されています。Pagesがなくなるという発表はありません。
料金の考え方はどちらも同じで、静的なファイルの配信は無料・無制限、プログラムが動く分だけWorkersの枠を使います。
新しい機能はWorkers側が中心
Cloudflareは、新しく作るならPagesではなくWorkersを使うよう勧めています。
Workersのベストプラクティスのページには、Pagesは引き続き動くものの、新しい機能と最適化はWorkersに集中させると書かれています。これから静的サイトを始める人は、Workersから入るのが素直です。
Cloudflare Pages
Git連携のビルド・プレビューURL・wranglerの直接アップロードと、静的サイトに要るものはそろっている。既存のサイトはそのまま動く。無料プランのファイル数は20,000個
Workers(Static Assets)
公式が新しく作るときに勧めている側。段階的なデプロイ、ログの保存(Workers Logs)、定期実行(Cron Triggers)はWorkersだけにある。無料プランのファイル数は同じく20,000個、1ファイル25MiB
ファイル数と1ファイルの大きさの上限は、Workersの無料プランでもPagesと同じです(Workersの上限のページ)。無料枠の広さで選ぶ理由はありません。
静的ブログならPagesのままで困らない理由
私が2つのブログをPagesのままにしているのは、困っていることが1つもないからです。
Functionsを使わない静的なブログでは、PagesとWorkersの差は出し方のコマンドくらいです。移行ガイドを読むと、設定ファイル(wrangler.jsonc)を書き、独自ドメインを付け替える作業が要ります。
移行のときは、DNSを付け替える前にメール用のレコードを切り離す下準備が要りました。あの神経を使う作業をもう一度やるほどの理由は、今のところ見当たりません(メールの話は移行記事に書きました)。Workersにしかない機能が欲しくなったら、そのとき考えます。
よくある質問
Cloudflare Pagesの無料枠と商用利用について、よく聞かれる質問をまとめました。上限の数字は2026年11月8日時点の公式ドキュメントに合わせています。細かい根拠は各見出しの本文もあわせて確認してください。
Q1. Cloudflare Pagesは本当に無料で使えますか?
A1. 静的なサイトなら、無料プランのまま使えます。HTMLや画像の配信は回数・転送量とも無制限で、上限はビルド月500回・1サイト20,000ファイル・1ファイル25MiBなどです。独自ドメインの登録料だけは別にかかります。
Q2. 無料プランで広告やアフィリエイトを載せてもいいですか?
A2. 載せられます。Cloudflareの規約に、無料プランの商用利用を禁じる条項はありません。制限が残っているのは、動画や大きなファイルの配信だけです。
Q3. ビルド月500回はサイトごとですか?
A3. アカウント全体の回数です。複数のサイトを持っている場合は、全サイトで500回を分け合います。独自ドメインとファイル数の上限は、サイトごとに数えます。
Q4. wranglerで直接アップロードしてもビルドの回数に数えられますか?
A4. 数えられません。月500回の枠は、Git連携でCloudflare側がビルドする場合の回数です。ただし公式ドキュメントに明記された記述ではないので、上限のページの更新は時々確かめてください。
Q5. Pages Functionsの無料枠を超えるとどうなりますか?
A5. 設定がFail openなら静的なファイルを返し、Fail closedならError 1027のエラー画面になります。枠は1日100,000リクエストで、Workersと共通です。日本時間の毎朝9時に数え直されます。
Q6. 有料のProプランにすると何が増えますか?
A6. ビルドが月5,000回・同時5つ、ファイル数が1サイト100,000個、独自ドメインが250個に増えます。料金は月25ドル(年払いなら月20ドル相当)です。Functionsの回数を増やしたい場合は、ProではなくWorkers Paid(月5ドル)が必要です。
無料枠で2つのブログを回して思うこと(まとめ)
無料プランの上限は、静的なブログにはまだ遠いところにあります。
- 静的なファイルの配信は、無料プランでも回数・転送量とも無制限
- 広告・アフィリエイトを載せた商用利用も、規約上できる
- 有料が必要になるのは、ファイル2万個超え・Functions1日10万リクエスト超え・Git連携のビルド月500回超えの3つ
- ビルドの枠は、手元でビルドして直接アップロードすれば使わない
- 動画は規約の扱いがはっきりしないので、YouTubeやStreamに置く
移す前は「無料すぎて、どこかに落とし穴があるはず」と身構えていました。実際に数えてみると、落とし穴はFunctionsと動画の2つに寄っていて、静的なブログの運営とはほぼ関係ありませんでした。
レンタルサーバーを解約したので、ブログの固定費はドメイン代だけになりました。そのぶん、記事を書くことと、記事の数字を見ることに時間を回せています。
この先ファイル数が2万個に近づくのか、それとも先に別の上限が来るのかは、記事が増えてから確かめます。
Astroなら find dist -type f | wc -l の1行で数えられます。大きいファイルが動画なら、置き場所もあわせて見直してみてください。
続きを追う:X(@Tom_Java_Tech) / RSS
途中経過は、また書きます。


