If you want to build a personal blog, landing page, docs site, or portfolio without renting a VPS, Cloudflare Pages is a very strong option.
The biggest attraction is this: for a purely static website, Cloudflare allows static asset requests to be free and unlimited. But that needs to be understood correctly. It does not mean everything in Pages is unlimited. It specifically applies to requests for static assets.
Quick conclusion
If you only need a static blog:
- Cloudflare Pages is a strong fit because deployment is simple and HTTPS/CDN are built in
- for a purely static site, requests to static assets are free and unlimited
- the free plan still has other platform limits such as monthly deploys and file count per site
- once you add server-side logic or Functions, it is no longer the same “static free unlimited” case
What is a static website?
In simple terms, a static website is a site whose final content already exists as files such as:
htmlcssjs- images
- fonts
When a visitor opens the page, the system only needs to return those files. It does not need to run backend code to render the page again for every request.
For a static blog post, that usually means:
- an HTML file for the article
- CSS for styling
- JS for small interactions if needed
- image assets
How is a static website different from a dynamic one?
The core difference is when the page gets produced.
Static website
- pages are built ahead of time
- when a request arrives, the system serves files directly
- great for blogs, docs, landing pages, and portfolios
Dynamic website
- content may be rendered when the request arrives
- usually involves backend logic, databases, sessions, or per-user rendering
- better for dashboards, admin panels, and highly personalized apps
Simple examples:
- a Markdown blog built into HTML files: static
- an admin page loading user-specific data after login: dynamic
Why is Cloudflare Pages a good fit for a static blog?
Because the platform matches the static-site workflow very well:
- direct GitHub/GitLab integration
- push code and deploy automatically
- built-in HTTPS
- global CDN
- preview deployments for branches and pull requests
If your blog builds into an output directory like:
distbuildout
then Pages is usually a very clean hosting target.
What does “free and unlimited” actually mean here?
According to current Cloudflare documentation as of June 16, 2026:
- requests to static assets on Pages are free and unlimited
- but the Pages Free plan still has other platform limits
This distinction matters.
If your site only serves:
- prebuilt HTML
- CSS
- JS
- images
- fonts
then that traffic is not counted the same way as Functions requests.
But that does not mean everything in Pages is unlimited.
The practical limits you still need to know
On the Pages Free plan, the most relevant limits are usually:
500 deploys / month- up to
20,000 filesper site
For a normal static blog, these limits are often generous enough. But you can still hit them if:
- your build generates too many tiny files
- the site contains too many individual assets
- you deploy excessively often every day
So the more accurate statement is:
- host a static blog with free and unlimited static traffic
not:
- Cloudflare Pages Free is completely unlimited
When is your site still considered purely static?
A site is still clearly static if:
- articles are written ahead of time and built in advance
- category, tag, and article pages are generated before deployment
- no server render is needed for each visitor
- there is no backend API just to show the core content
Very suitable examples:
- Markdown blogs
- docs sites
- personal portfolios
- product landing pages
When does it stop being the “static free unlimited” case?
Once you add things like:
- Pages Functions
- SSR
- API routes
- request-time runtime logic
then requests may go through compute instead of simply returning static files. At that point, you need to think in Workers/Functions quotas rather than the static asset model.
In short:
- only serving static files -> strong fit for Pages Free
- runtime logic -> dynamic limits start to matter
A simple workflow for building a static blog with Cloudflare Pages
A typical flow looks like this:
- write the blog with a static site generator or a framework that exports static files
- build the site into an output directory
- push the code to GitHub
- connect the repo to Cloudflare Pages
- define the build command and output directory
- deploy
This is common with tools like:
- Astro
- Hugo
- Eleventy
- Next.js static export
Example of a static blog build output
After a build, the structure might look like this:
dist/
index.html
blog/
post-1/
index.html
post-2/
index.html
assets/
app.css
app.js
hero.webp
Cloudflare Pages only needs that output directory to serve the site publicly.
Is Cloudflare Pages setup difficult?
Not really, as long as the project already builds locally.
You usually only need to:
- create a GitHub repository
- push your source code
- open Cloudflare Pages
- choose
Create a project - connect the repository
- enter:
Build commandBuild output directory
Example:
Build command: npm run build
Build output directory: out
or:
Build command: npm run build
Build output directory: dist
depending on the framework.
What kind of blogs fit Cloudflare Pages Free best?
Cloudflare Pages Free is a strong match when your blog:
- is mostly static content
- has few dynamic features
- does not need a separate dashboard on the same hosting flow
- does not need backend rendering for article pages
That is why it is commonly used for:
- personal tech blogs
- changelog sites
- product docs
- small service websites
Common misunderstandings
1. Assuming every blog is static
Not necessarily.
If your blog heavily depends on:
- server-side search
- per-user auth
- self-hosted comments through a custom backend
- an admin system tightly coupled into the same app
then it is no longer a lightweight static site in the same sense.
2. Assuming unlimited requests means everything is unlimited
That is the common mistake:
- static asset requests are free and unlimited
- deploys, file count, and dynamic compute still have separate limits
3. Assuming Cloudflare expertise is required
For a static blog, not really.
At a basic level, you only need to understand:
- how to build the site
- where the output directory is
- how to connect the repo
- how to deploy
That is enough to get started.
Should you choose Cloudflare Pages for a new blog?
Yes, if your goals are:
- low cost
- fast deployment
- mostly read-only content traffic
- no server operations
It is especially suitable for technical blogs, docs, tutorials, and personal sites.
A short checklist before deploying
Before choosing Pages for your blog, check:
- does the site build into a complete static output?
- does the content need request-time rendering?
- does the output contain too many small files?
- do you really need Functions, or only static hosting?
- are the build command and output directory already clear?
Conclusion
Cloudflare Pages is a very strong option for a static blog because:
- deployment is simple
- CDN and HTTPS are built in
- requests to static assets are free and unlimited
But to say it precisely, the “unlimited” part only applies to requests for static assets on a purely static website. The free plan still has other limits such as deploy count and file count.
If your blog is mostly prebuilt content and does not need runtime backend logic, this is one of the cleanest ways to host it with almost no operating cost.