Cloudflare Pages vs ship.page: an honest comparison
Cloudflare Pages is one of the most generous free static hosts: unlimited free requests to static files, free custom domains and no expiry, once you have a Cloudflare account. ship.page skips the account: drop an HTML file up to 10 MB or a ZIP up to 25 MB and the link is live in seconds. Free ship.page links last 30 days, or 90 after a free claim.
Competitor facts verified against Cloudflare Pages in October 2026. Where they win, we say so.
Side by side
| Cloudflare Pages | ship.page | |
|---|---|---|
| Account required | Yes, a Cloudflare account | No: one drag-drop or one curl, link in seconds |
| Git | Optional: connect a repository for builds, or upload in the dashboard | None: upload the file, ZIP or folder as it is |
| Upload limits | Drag and drop: a folder or ZIP of up to 1,000 files, 25 MiB each. Wrangler CLI: 20,000 files | HTML 10 MB; ZIP 25 MB with 100 files (100 MB unpacked). Pro: 100 MB ZIPs, up to 10,000 files |
| Builds | 500 a month on free, 1 at a time, 20 minutes each | None: you upload the built output and it's live in seconds |
| URL | your-project.pages.dev, fixed once the project exists | An unguessable random subdomain |
| Link lifetime | No expiry | 30 days, or 90 after a free claim; no expiry on Pro ($4/mo) |
| Custom domains | Free, up to 100 per project | Not offered; Team ($19/mo) adds a vanity subdomain |
| Password protection | Through Cloudflare Access: free for up to 50 users, but signup asks for a payment method | Pro ($4/mo): set a password when you deploy or later |
| Search engines | Indexable, like any public website | noindex, nofollow on every drop, always |
| Price | Free | Free; Pro $4/mo, Team $19/mo |
Where Cloudflare Pages wins
- Unlimited free requests to static files, served from Cloudflare's network.
- Free custom domains, up to 100 per project. ship.page has no custom domains; Team ($19/mo) adds a vanity subdomain.
- No expiry and room to grow: up to 20,000 files per site, Git builds, and Workers when you need server code.
- Search engines can index it. ship.page serves every drop noindex.
Where ship.page wins
- No account. Cloudflare needs one before the first upload; ship.page gives you a link from one drag-drop or one curl.
- A single HTML file works as it is. Cloudflare documents drag and drop for a folder or a ZIP.
- Password protection is one setting on Pro ($4/mo). On Pages it means setting up Cloudflare Access, whose free plan still asks for a payment method.
- One curl from a script or an AI agent, with no API token to create.
The short version
Want a permanent site on your own domain and fine with an account? Cloudflare Pages is hard to beat on free, though Cloudflare now suggests Workers for new projects.
Want a link right now, from a file, a script or an agent, without signing up? Use ship.page.
Questions
Is Cloudflare Pages being shut down?
Cloudflare hasn't announced an end date. Since April 2025 it has said Pages will keep being supported while its new investment goes into Workers, and its docs now tell new projects to start with Workers.
Can I upload to Cloudflare Pages without Git?
Yes, with a Cloudflare account. The dashboard takes a dragged folder or ZIP of up to 1,000 files at 25 MiB each, and the Wrangler CLI up to 20,000 files.
Is Cloudflare Pages free?
Yes. The free plan includes unlimited requests to static files, 500 builds a month and up to 100 custom domains per project.
How long do Cloudflare Pages sites stay up?
Cloudflare sets no expiry. Free ship.page links last 30 days, or 90 after you claim them into a free account, and Pro ($4/mo) removes the expiry.
Keep reading
- Free static site and HTML hosting compared: all seven hosts in one table
- GitHub Pages vs ship.page
- Netlify Drop vs ship.page
Judge it in ten seconds
Drop the file here, or keep it in the terminal — either way the URL is live for 30 days.
Drop your page here — get a live link
.zip, folder, or single .html — free, no account, live for 30 days.
or one curl command
curl -X POST https://ship.page/deploy \
-H "content-type: text/html" \
--data-binary @index.html