Pricing
Plans and prices
Every plan gets the same protection. Each app sits behind our sign-in, your code gets a signed identity for everyone who visits, and it all goes in the audit log. Paid plans give you more apps, people, usage and storage.
$0per month
For trying it out, or for one small internal tool.
- 3 apps, 3 members
- JS, TypeScript and static apps
- No container apps
- 100,000 requests a month
- 50,000,000 ms of CPU time a month
- 1 GB of storage for site files, app files, key-value data and databases
- Audit log kept 3 months
- Community support
$49per workspace, per month
For a team that ships tools to the rest of the company.
- 25 apps, 25 members
- 1 container app: a Python, Go, Rust or Node server
- 2,000,000 requests a month, then $3.78 per million
- 100,000,000 ms of CPU time a month
- 10 GB of storage for site files, app files, key-value data and databases
- 3 custom domains
- Connect up to 3 Postgres databases you already have†
- Key-value storage and queues on 5 apps
- Audit log kept 3 months
- Email support
$215per workspace, per month
For a company where IT needs to see all of it.
- 200 apps, 200 members
- 4 container apps
- 20,000,000 requests a month, then $3.78 per million
- 400,000,000 ms of CPU time a month
- 100 GB of storage for site files, app files, key-value data and databases
- 5 custom domains
- Connect up to 10 Postgres databases you already have†
- Key-value storage and queues on 25 apps
- Audit log kept 12 months
- Usage insights for a year: who opens what, and which apps nobody uses
- SSO, SCIM, custom roles, publish policy, audit log export and streaming for early customers, for a limited time
- Priority email support
Contact usWe set the plan and its price up with you.
For a company that signs people in through its own identity provider.
- Everything in Business
- Higher limits set with you, custom domains included
- SSO, SCIM, custom roles, publish policy, audit log export and streaming, with no time limit
- Apps that reach your private network, and fixed outbound addresses†
- Secrets sealed under your own encryption key
- A support line
- A DPA negotiated with your company
Prices are in US dollars, per workspace, billed monthly through Stripe. Prices don't include tax. We are not registered for GST in Singapore, so we don't add GST. If that changes, or another tax becomes due, we add it at checkout and tell you first. A business that must account for tax itself under a reverse charge can enter its tax ID at checkout. Every workspace starts on Free with no card. Upgrade from its Billing tab.
On Team and Business, a month means your billing month, which starts on the day you subscribe. Usage past the allowances goes on that month's invoice. On Free, a month is the calendar month in UTC, and apps stop at the limit instead of costing more.
Paid workspaces also have a usage limit. Usage charges never go past your usage limit. If you lower it partway through an hour, that hour still counts against the higher limit. Usage is measured a little after it happens, so some can run past the limit before the apps stop, and that usage is on us. By default the limit is $0, so nothing beyond the plan's price is charged. When the allowances run out, apps pause until the next billing month. An owner can set another amount, or none, on the Billing tab. Stripe invoices usage charges early, as soon as they reach $100 in a month on Team or $400 on Business, if the usage limit is above that or there is none. You can export your data on every plan.
Compare plans
Every plan also has sign-in with passkeys, files and a database for each app, preview links, scheduled jobs, deploys from the dashboard and from GitHub Actions, MCP servers behind the same sign-in, and an agent that can deploy for you.
| Per workspace | Free | Team | Business | Enterprise |
|---|---|---|---|---|
| Price | $0 | $49 / month | $215 / month | Contact us |
| Apps | 3 | 25 | 200 | 200 |
| Members | 3 | 25 | 200 | 200 |
| Container apps | None | 1 | 4 | 4 |
| Container sizes | None | lite, basic | lite, basic, standard-1 | lite, basic, standard-1 |
| Containers per app | None | 1 | 4 | 4 |
| Container units | None | 10 | 40 | 40 |
| CPU time per request | 50 ms | 100 ms | 150 ms | 150 ms |
| Subrequests per request | 50 | 50 | 50 | 50 |
| Bypass tokens per app | 5 | 50 | 100 | 100 |
| Environment variables per app | 25 | 50 | 100 | 100 |
| Public paths per app | 3 | 10 | 10 | 10 |
| Custom domains per workspace | None | 3 | 5 | 5 |
| Pull requests' previews at once | 3 | 10 | 25 | 25 |
| Postgres connections per workspace, up to† | None | 3 | 10 | 10 |
| Apps with key-value storage | None | 5 | 25 | 25 |
| Apps with a queue | None | 5 | 25 | 25 |
| Storage: site files, app files, key-value data and databases | 1 GB | 10 GB | 100 GB | 100 GB |
| Databases, within storage | 1 GB | 2 GB | 10 GB | 10 GB |
| Key-value data, within storage | None | 10 GB | 10 GB | 10 GB |
| Image pushes per workspace per day | None | 20 GB | 100 GB | 100 GB |
| Requests included | 100,000 | 2,000,000 | 20,000,000 | Set in your contract |
| Allowances reset | Each calendar month | Each billing month | Each billing month | Each calendar month |
| Requests counted | All served, public paths too | All served, public paths too | All served, public paths too | All served, public paths too |
| Requests past that | Stops at 200,000 (2×) | $3.78 per million | $3.78 per million | Settled by contract |
| CPU time included | 50,000,000 ms, then stops | 100,000,000 ms | 400,000,000 ms | Set in your contract |
| CPU time past that | None | $0.041 per million ms | $0.041 per million ms | Settled by contract |
| Database rows read included | 50,000,000, then stops | 500,000,000 | 5,000,000,000 | Set in your contract |
| Rows read past that | None | $2.50 per billion | $2.50 per billion | Settled by contract |
| Database rows written included | 100,000, then stops | 500,000 | 5,000,000 | Set in your contract |
| Rows written past that | None | $2.25 per million | $2.25 per million | Settled by contract |
| Database storage past its limit | Stops, then suspension | $1.55 per GB-month | $1.55 per GB-month | Settled by contract |
| Default usage limit | Not charged | $0 a month | $0 a month | None |
| Invoiced early at | Not charged | $100 of usage | $400 of usage | Per contract |
| Audit log kept | 3 months | 3 months | 12 months | 12 months |
| Usage insights look back | 30 days | 90 days | 365 days | 365 days |
| App logs readable for | 1 day | 7 days | 7 days | 7 days |
| App log lines per workspace per day | 20,000 | 100,000 | 300,000 | 300,000 |
| Log drains per workspace | None | 2 | 5 | 5 |
| SSO with SAML or OIDC | None | None | Early access | Included |
| SCIM provisioning | None | None | Early access | Included |
| Custom roles | None | None | Early access | Included |
| Publish policy | None | None | Early access | Included |
| Audit log export as CSV | None | None | Early access | Included |
| Audit log streaming to a SIEM | None | None | Early access | Included |
| Audit log streams per workspace | None | None | 1 | 3 |
| Private networks and fixed outbound addresses† | None | None | None | Included |
| Your own encryption key | None | None | None | Included |
| Export | Yes | Yes | Yes | Yes |
| Support | Community | Priority email | Support line |
Early access: SSO, SCIM, custom roles, publish policy, audit log export and streaming are included on Business for early customers, for a limited time. They are Enterprise features.
† Postgres connections and private networks aren't switched on yet, on any plan. The plans above say what each one gets once they are. Write to sales@forculuslabs.tech to hear when.
Questions
What counts as a request?
Every request our edge passes to an app in your workspace, whoever sent it. That means signed-in people, bypass tokens, anonymous visitors to a public path and webhook deliveries. Requests to the dashboard and the API don't count. We also rate-limit anonymous requests to a public path, per client.
On Team and Business the count starts again each billing month. That month starts on the day you subscribe, and it's the month each invoice covers. On Free the count starts again each calendar month, in UTC. The Billing tab shows this month's count, and it's the same count your invoice uses.
What counts as CPU time?
CPU time is the time your Worker apps' own code spends running, as Cloudflare records it for each request. Public paths and webhooks count too. Time spent waiting on a fetch or a database doesn't. Container apps and static sites aren't charged for CPU time. The code in front of them is ours, and your plan covers a container's computing.
Each billing month includes 100,000,000 ms on Team and 400,000,000 ms on Business, then $0.041 per million ms. Free stops for the month at 50,000,000 ms, and its apps then answer 402 until the month ends or you upgrade.
Each plan also limits the CPU time of a single request to a Worker app: 50 ms on Free, 100 ms on Team and 150 ms on Business. Cloudflare enforces it loosely: a request may run past it, even to a few seconds, or be stopped there, so keep requests under it. The limits page says what happens to a request that's stopped. A request that runs over is still counted in full, and on Team and Business charged like any other.
Can someone run up my bill?
Anonymous requests to a public path count like any other, so a flood of them would cost you something. Three things keep it small. Each client is rate-limited on each public path. Your usage limit stops your apps once usage charges reach it. By default the limit is $0, so nothing beyond the plan's price is charged unless an owner sets another amount, or none, on the Billing tab. Usage is measured a little after it happens, so some can run past the limit before the apps stop, and that usage is on us. And we email the owners along the way: at 80% and 100% of each allowance, as usage charges pass $10, the plan's price and each multiple of it, and at 80% and 100% of the usage limit.
What happens when a Free workspace runs out of requests?
Its apps keep running up to twice the allowance, 200,000 requests in a calendar month. After that they answer 402 until the month ends or you upgrade. An upgrade takes effect straight away. We email the owners when the workspace passes the allowance, and again if its apps stop.
Only requests served on Free count. When a workspace moves to Free after a cancellation, a downgrade or a failed payment, it counts from the hour the change takes effect. What it served on the paid plan doesn't count. For a cancellation or a downgrade, the change takes effect when the paid month ends. For a failed payment, it's the end of the two weeks of retries. Starting a checkout and leaving it unfinished changes nothing.
Team and Business don't stop at their request allowance. Requests past it are metered at $3.78 per million and added to that month's invoice, up to the workspace's usage limit.
What is a container app?
Any app that isn't a JavaScript Worker or a static site: a Python, Go, Rust or Node server, with or without a Dockerfile. It runs in a container behind the same edge. Team runs one container app, with one container at the lite or basic size. basic has a quarter of a vCPU and 1 GiB of memory.
Business runs four container apps, and gives them 40 container units to share. A container uses 4 units at lite, 10 at basic and 24 at standard-1, which has half a vCPU and 4 GiB of memory. An app can run up to four containers, and each request goes to one of them. So Business runs four basic apps, or one app on four basic containers, or a standard-1 app beside smaller ones. Enterprise contracts run more and bigger, up to standard-4 with 4 vCPUs and 12 GiB of memory. Write to us if you need that.
Free runs JS, TypeScript and static apps only. If a workspace moves to Free, its container apps stop answering until it's on a paid plan again, and so do apps with key-value storage or a queue. Until then the edge returns 402 with a page saying the app needs a paid plan.
What counts toward storage?
The files your sites serve, the files your apps keep, what they keep in key-value storage, and their databases. We measure apps' files every five minutes and each database about once an hour. If a workspace goes over its storage, nothing new deploys until it's back under. Once any app keeps files of its own, every app with a place for files also answers 507 to everyone, owners and admins included, until there's room, since nothing else would stop it writing more. Delete files with forculus files rm, delete rows, or move to a bigger plan. If the workspace stays over because of its apps' files, we delete those files after 7 days on Free and 30 on Team and Business, with an email to the owners a week before. We don't if the workspace would still be over without them.
What counts as a database row?
Cloudflare counts rows for each of your apps' databases. A query counts every row it reads, including rows it scans but doesn't return, and every row and index entry it writes. Queries made while serving public paths count, and so do database exports and forculus db commands.
Free stops for the month at 50,000,000 database rows read or 100,000 written. For that cut-off we use the lowest figure Cloudflare reports, so a Free workspace is never stopped early. If we can't measure a Free workspace's rows for two hours, its apps with a database answer 402 until we can.
Team includes 500,000,000 rows read and 500,000 written each billing month, and Business ten times that. Past those, rows read cost $2.50 per billion and rows written $2.25 per million. Invoices only use Cloudflare's exact figures, never an estimate.
What happens when a workspace's databases reach the limit?
All of a workspace's databases share one limit. It's 1 GB on Free, 2 GB on Team and 10 GB on Business. We measure them every few minutes and email the owners at 80%.
Over the limit, apps with a database answer only the workspace's owners and admins, so they can delete rows through the app. Everyone else gets 507, including bypass tokens, public paths and webhooks, and nothing new deploys. If the databases keep growing, or reach 10% over, those apps answer no one. Apps without a database keep answering throughout.
To get back under, delete rows through the app or with forculus db exec, export and remove data, or upgrade. On Team and Business, storage over the limit costs $1.55 per GB-month, charged by the hour for as long as it lasts. On Free, a workspace still over after 7 days is suspended. 30 days later we delete its largest databases until it's under, and we email 7 days and 1 day before we do.
Is billing per person?
No. You pay per workspace, and each plan includes a set number of members. One person can be in several workspaces on different plans.
How do I change a plan?
On the workspace's Billing tab. The dialog tells you exactly what will happen before you confirm.
An upgrade takes effect as soon as it's paid for, and starts a new billing month. The next answer explains how it's charged.
A downgrade takes effect at your renewal, when the month you've paid for ends. Until then you keep the higher plan, the Billing tab shows the day it moves, such as "Team from 28 October", and you can undo it. The renewal invoice is at the new price. You can't downgrade while the workspace uses more than the lower plan allows in container apps, their sizes, containers or units, or database data. The message tells you what to delete first.
If the new plan keeps less of the audit log, older events are deleted 30 days after the change, so export first.
What happens when I upgrade?
You start a new billing month on the new plan straight away, at its full price, and every allowance starts again. You get a credit for the unused time on the old plan, unless you've used the old plan's allowances much faster than the month has gone by. The dialog tells you which before you confirm. The old plan's usage so far is invoiced with the upgrade, at the old plan's prices. CPU time from about the last two hours before the upgrade, and database storage over the limit in the current hour, count in the new month, because we measure them later.
How do I cancel?
In Stripe's customer portal, which you open from the Billing tab. You also update cards and find invoices there. A cancellation takes effect when the month you've paid for ends. The workspace then goes back to Free: container apps and apps with key-value storage or a queue stop, Postgres connections and log drains turn off, and everything else keeps running within Free's limits. Free keeps 3 months of the audit log, and older events are deleted 30 days after the change, so export first. The refund policy covers the rest of a month you've paid for.
What if a payment fails?
If a payment fails, we retry for up to two weeks, and Stripe emails you each time. After that the workspace moves to Free: container apps and apps with key-value storage or a queue stop, Postgres connections and log drains turn off, and everything else keeps running within Free's limits. We email the owners three days before the move, and again when it happens. Pay the invoice and the plan comes back.
How much can I push?
Each container image push counts against two daily budgets, one for the workspace and one for the person pushing. A workspace can push 20 GB a day on Team and 100 GB on Business. On any plan, each person can push 20 GB a day. Both are rolling, so a push counts for 24 hours. If a push would go over either budget, it's refused until older pushes age out. The image you already deployed keeps running.
What if I go over a limit other than requests?
You can't create anything that would take you over a limit, like a new app, member or token. The message says which limit and which plan lifts it, for example "Team allows 25 apps". Everything you already have keeps running. Storage, the database limit and Free's monthly CPU time and database rows are different: past them, apps can stop answering, as the answers above say.
A few limits affect running apps. If a workspace's databases hold more than its plan allows, its apps with a database answer 507 to everyone except owners and admins. If a workspace stores more than its plan allows and any of its apps keeps files, every app with a place for files answers 507 to everyone until there's room. A Free workspace that uses 50,000,000 ms of CPU time, reads 50,000,000 database rows or writes 100,000 in a month has its apps paused until the next month.
No plan allows more than 10 public paths per app. The edge keeps each app's public paths in memory between requests, and more wouldn't fit.
Can I take my data out?
Yes, on every plan. A workspace owner can export the workspace from its Settings page. You get one JSON file with its configuration, members, sharing, the audit log your plan keeps, and the names of its tokens, secrets and environment variables. It never includes a value. An owner can also export an app's database as SQL from the app's page in the dashboard, or with forculus db export. A static site is the files you uploaded.
What happens when I delete an app or a workspace?
A deleted app or workspace is kept for 30 days, with its data, and an owner can restore it until then. It isn't billed and doesn't count toward your plan while it's kept. After the 30 days, or when you delete it for good, deletion is immediate and permanent, so export first. Nothing is kept while anyone who owns what you delete has yet to accept our terms: see when deletion is immediate. An app's scripts, databases and containers are removed from Cloudflare right away, along with its configuration, versions, sharing, tokens, secrets and environment variables. Its files go right away too, up to 5,000 of them. An app with more has the rest deleted over the following minutes, and in any case within two days. Its entries in the workspace's audit log stay for your plan's audit retention, like every other entry.
Deleting a workspace deletes its apps the same way. Once it's deleted for good, we keep our own records of the workspace for 30 days for accounting, but you can't restore anything. Deleting a workspace on a paid plan cancels its subscription at once, with no refund for the rest of the month, and a restored one comes back on Free. The confirmation dialog says so.
While the law requires us to keep a workspace's data, you can't delete the workspace or its apps. See section 10 of the terms.
Where are my invoices?
On Team and Business, in Stripe's customer portal, which you open from the Billing tab. Stripe issues and keeps every invoice and receipt. On Enterprise, the Billing tab lists the invoices Stripe sent for your contract, each with a link to read, download and pay it.
Do you offer invoicing or annual billing?
On Enterprise. We set up a contract with you, invoiced monthly or yearly, with up to 120 days to pay each invoice. Team and Business are monthly, paid by card through Stripe. Email sales@forculuslabs.tech.
Is there a discount for open source, education or non-profits?
Tell us about the project at support@forculuslabs.tech.