Flat / Cloudflare Pages alternative

Share your files with a reader built in.

Use Flat to share a report and its supporting files at one link, with previews for supported documents and original downloads. You can also publish finished websites. Cloudflare Pages supports direct uploads too, with free static requests and tools for building web apps.

Upload in your browser or publish with the CLI. Start free.

Choose by what you need to share

A report with files to download

Upload your PDF and spreadsheet together. Flat gives visitors a file browser where they can choose a document, read a supported preview, and download the original. You do not need to build a page that lists the files.

A root index.html opens as your website instead. Use that for an exported HTML report or a site you have already built.

Browse a file collection · See document previews

A website with builds or backend code

Keep Cloudflare Pages if you rely on its Git builds, branch previews, or Pages Functions. Flat does not replace that build pipeline or runtime.

You can use Flat for a client report while keeping your website on Pages. If all you need is a static website on your own domain, compare the free allowances below before moving it.

Pages Git integration · Pages Functions

Flat vs Cloudflare Pages

We checked Cloudflare's official docs on . Each row links to the relevant source.

Publish without Git

Flat
Upload individual files in your browser, or publish a folder with the CLI. Build your website before uploading it.
Cloudflare Pages
Direct Upload accepts a folder or ZIP in the dashboard, or a folder through Wrangler. You need a Cloudflare account and a Pages project. Source

Share documents together

Flat
Upload several files for visitors to browse together. Supported documents get reading previews, and visitors can download the originals.
Cloudflare Pages
Serves the files you deploy at their paths. You supply the website pages or viewer code that presents those files to visitors. Source

Keep version links

Flat
Each upload has its own link. Point a named address or your domain to a new upload through the CLI or API when you want one address for updates.
Cloudflare Pages
Hash-based preview URLs keep individual deployments accessible. Branch aliases point to the latest deployment for that branch. Source

Restrict visitor access

Flat
Set a shared visitor password through the CLI or API. Visitors enter it before opening the upload or downloading its files.
Cloudflare Pages
Use Cloudflare Access policies to protect preview deployments. The preview access switch alone does not protect the production Pages address or custom domains. Source

Publish from Git

Flat
Run your build locally or in your own CI, then publish the output with the CLI or API. Flat does not build from a connected repository.
Cloudflare Pages
Connect GitHub or GitLab for automatic builds and deployments on push, with branch previews for review. Source

Run server-side code

Flat
Hosts finished files. Browser JavaScript can call an external service, but Flat does not run your backend code.
Cloudflare Pages
Pages Functions run server-side code on the Workers runtime for tasks such as authentication and form handling. Source

Cloudflare Pages includes free static requests

Pages charges nothing for static asset requests that do not invoke Functions, on both free and paid plans. Flat has storage and monthly transfer allowances. For a busy static website, Pages can cost less.

Flat plans

Free includes 5 MiB per upload, 1 GiB of storage, and 5 GiB of monthly transfer. Signed-in uploads have no set expiry. Named onflat.page addresses and visitor passwords are included.

Starter is €9 a month for 100 MiB per upload, 50 GiB of storage, 100 GiB of monthly transfer, and 1 custom domain.

All Flat plans and allowances

Cloudflare Pages allowances

The Free plan allows 500 builds a month and 100 custom domains per project. Each asset can be up to 25 MiB. Dashboard drag-and-drop accepts up to 1,000 files; Wrangler Direct Upload supports up to 20,000.

Functions use Workers pricing. On Free, Pages Functions and Workers share a quota of 100,000 requests a day. Requests that only serve static assets do not use that quota.

Pages request pricing · Plan limits · Upload limits

Flat's per-upload allowance covers the whole set of files. Cloudflare's 25 MiB limit applies to each asset. Flat's document preview limits apply separately. Larger hosting plans do not increase them. Files without a preview remain available to download.

Try Flat with a document.

Choose a PDF or a few files to share together. Open the returned link to check what your visitors see. Browser uploads are public. If you are signed out, enter your email and sign in within one hour to keep the upload online.

Checking your upload limits... · Public · Limits

Drop your files here

or choose files from your device.

Select files

For a website with folders and nested assets, use the CLI below. Extract ZIP archives first.

Move a copy of your static site first

Publish your build output

Run your existing build and find its output folder, such as ./dist. Keep index.html at the root. With Node.js 20 or newer, publish that folder:

npx -y @getflat/cli deploy ./dist

Open the returned link and check your pages and downloads. Run npx -y @getflat/cli login within one hour to keep a signed-out upload.

Flat CLI setup

Check Pages-specific behavior

Flat does not apply _redirects or _headers rules, run Pages Functions, or use your Cloudflare Access policies. Reconfigure access in Flat and keep any required backend on a service that runs it.

Pages routes unmatched paths to your single-page app when there is no root 404.html. Flat has no automatic SPA fallback. Check a direct link to each nested page before moving.

Once the copy works, connect your domain to Flat. Your pages.dev addresses stay with Cloudflare.

Pages routing behavior · Flat password settings

Before you switch

Do I need Git to use Cloudflare Pages?

No. Direct Upload supports a folder or ZIP through the dashboard, or a folder through Wrangler. You do not need to switch to Flat to avoid Git. A Direct Upload project cannot later switch to Git integration; Cloudflare requires a new project for that. Read the Direct Upload guide.

Can I move a Pages Functions app to Flat?

You can publish its static files, but Flat will not run the Functions. Keep the backend elsewhere and update the frontend to call it, or keep the app on Cloudflare. A static export must work without server-side rendering.

Can I keep my custom domain?

Yes, if you own it. Publish a copy on Flat, check the pages and access settings, then follow the custom domain instructions to change DNS. Cloudflare-issued pages.dev URLs cannot move to Flat.

Can Cloudflare Pages host a PDF too?

Yes. Pages can serve a PDF at its file path, and browsers with PDF support can display it. Flat adds a generated file browser for collections and reading previews for supported Office documents. Flat's generated viewers keep Flat branding and cannot be embedded in an iframe.

Share a report with its supporting files.

Upload them together and check the preview before sending the link.

Try your files