From ff6e90427f0e05e9c9468364b3a99c96860c2721 Mon Sep 17 00:00:00 2001 From: Brendan Irvine-Broque Date: Thu, 22 Oct 2026 17:30:26 -0700 Subject: [PATCH 1/2] [Developer Platform] Document per-resource pricing --- .../docs/ai-gateway/reference/limits.mdx | 2 +- .../docs/ai-gateway/reference/pricing.mdx | 8 +++ .../ai-search/platform/limits-pricing.mdx | 8 ++- .../cloudflare-for-platforms/artifacts.mdx | 10 ++++ .../docs/cloudflare-for-platforms/d1.mdx | 10 ++++ .../docs/cloudflare-for-platforms/r2.mdx | 10 ++++ src/content/docs/d1/index.mdx | 2 +- src/content/docs/d1/platform/limits.mdx | 44 +++++++------- src/content/docs/d1/platform/pricing.mdx | 1 + src/content/docs/kv/platform/limits.mdx | 2 +- src/content/docs/kv/platform/pricing.mdx | 16 ++++-- src/content/docs/queues/platform/limits.mdx | 4 +- src/content/docs/queues/platform/pricing.mdx | 1 + src/content/docs/r2/platform/limits.mdx | 4 +- src/content/docs/r2/pricing.mdx | 57 ++++++++++--------- .../docs/vectorize/platform/limits.mdx | 2 +- .../docs/vectorize/platform/pricing.mdx | 7 ++- src/content/partials/d1/faq-limits.mdx | 2 +- src/content/partials/d1/faq-pricing.mdx | 6 ++ .../partials/vectorize/vectorize-pricing.mdx | 9 +-- src/content/partials/workers/d1-pricing.mdx | 17 ++++-- src/content/partials/workers/kv_pricing.mdx | 25 ++++---- .../partials/workers/queues_pricing.mdx | 7 ++- 23 files changed, 162 insertions(+), 92 deletions(-) create mode 100644 src/content/docs/cloudflare-for-platforms/artifacts.mdx create mode 100644 src/content/docs/cloudflare-for-platforms/d1.mdx create mode 100644 src/content/docs/cloudflare-for-platforms/r2.mdx diff --git a/src/content/docs/ai-gateway/reference/limits.mdx b/src/content/docs/ai-gateway/reference/limits.mdx index 3ee754588f5..cb6e6c00f98 100644 --- a/src/content/docs/ai-gateway/reference/limits.mdx +++ b/src/content/docs/ai-gateway/reference/limits.mdx @@ -20,7 +20,7 @@ The following limits apply to gateway configurations, logs, and related features | [Cache TTL](/ai-gateway/features/caching/#cache-ttl-cf-aig-cache-ttl) | 1 month | | [Custom metadata](/ai-gateway/observability/custom-metadata/) | 5 entries per request | | Gateways free plan | 10 per account | -| Gateways paid plan | 20 per account | +| Gateways paid plan | Unlimited, with a default limit of 20 per account. Each gateway above 20 costs [$0.10 per month](/ai-gateway/reference/pricing/#gateways). | | Gateway name length | 64 characters | | [Unified Billing](/ai-gateway/features/unified-billing/) request rate | 200 requests per 60 seconds per gateway 1 | diff --git a/src/content/docs/ai-gateway/reference/pricing.mdx b/src/content/docs/ai-gateway/reference/pricing.mdx index bdb46e075d8..ac10667cf1f 100644 --- a/src/content/docs/ai-gateway/reference/pricing.mdx +++ b/src/content/docs/ai-gateway/reference/pricing.mdx @@ -14,6 +14,14 @@ AI Gateway's core features available today are offered for free, and all it take You can monitor your usage in the AI Gateway dashboard. +## Gateways + +| Resource | Workers Free | Workers Paid | +| --- | --- | --- | +| Gateways per account | 10 | Unlimited, with a default limit of 20. First 20 included + $0.10 per additional gateway per month. | + +Refer to [AI Gateway limits](/ai-gateway/reference/limits/#gateway-limits) for gateway creation limits and how to request a limit increase. Other usage charges apply separately. + ## Logs AI Gateway stores logs in either Workers Logs or Legacy Logs, depending on when your account created its first gateway. diff --git a/src/content/docs/ai-search/platform/limits-pricing.mdx b/src/content/docs/ai-search/platform/limits-pricing.mdx index 08c3872e03f..0af9bf9d77b 100644 --- a/src/content/docs/ai-search/platform/limits-pricing.mdx +++ b/src/content/docs/ai-search/platform/limits-pricing.mdx @@ -14,7 +14,7 @@ The following limits apply based on your [Workers plan](/workers/platform/pricin | Limit | Workers Free | Workers Paid | | -------------------------------------------- | --------------------------------------- | --------------------------------------- | -| AI Search instances per account | 100 | 5,000 | +| AI Search instances per account | 100 | Unlimited, with a default limit of 5,000. Each instance above 5,000 costs [$0.10 per month](#pricing). | | Namespaces per account | 100 | 100 | | Files per instance | 100,000 | 1M or 500K for hybrid search | | Pages per crawl, `discover` parse type | 100,000 | 100,000 | @@ -48,6 +48,12 @@ Every account receives the following included usage each month: - 1,000 semantic queries - 1,000 full-text queries +| Resource | Workers Free | Workers Paid | +| --- | --- | --- | +| AI Search instances per account | 100 | Unlimited, with a default limit of 5,000. First 5,000 included + $0.10 per additional instance per month. | + +The instance allowance counts instances across all namespaces in your account. Namespaces group instances and do not incur an additional resource charge. To create more than the default limit, complete the [Limit Increase Request Form](https://forms.gle/wnizxrEUW33Y15CT8). + Usage beyond the included amounts is billed at these rates: | Usage | Price | diff --git a/src/content/docs/cloudflare-for-platforms/artifacts.mdx b/src/content/docs/cloudflare-for-platforms/artifacts.mdx new file mode 100644 index 00000000000..04f3c33b044 --- /dev/null +++ b/src/content/docs/cloudflare-for-platforms/artifacts.mdx @@ -0,0 +1,10 @@ +--- +title: Artifacts (git storage) +description: Store and manage versioned files for your platform with Artifacts. +pcx_content_type: navigation +external_link: /artifacts/ +sidebar: + order: 4 +products: + - cloudflare-for-platforms +--- diff --git a/src/content/docs/cloudflare-for-platforms/d1.mdx b/src/content/docs/cloudflare-for-platforms/d1.mdx new file mode 100644 index 00000000000..3517dfe43ed --- /dev/null +++ b/src/content/docs/cloudflare-for-platforms/d1.mdx @@ -0,0 +1,10 @@ +--- +title: D1 (SQL DB) +description: Create and manage SQL databases for your platform with D1. +pcx_content_type: navigation +external_link: /d1/ +sidebar: + order: 2 +products: + - cloudflare-for-platforms +--- diff --git a/src/content/docs/cloudflare-for-platforms/r2.mdx b/src/content/docs/cloudflare-for-platforms/r2.mdx new file mode 100644 index 00000000000..5cdb2372027 --- /dev/null +++ b/src/content/docs/cloudflare-for-platforms/r2.mdx @@ -0,0 +1,10 @@ +--- +title: R2 (Object Storage) +description: Store and manage objects for your platform with R2. +pcx_content_type: navigation +external_link: /r2/ +sidebar: + order: 3 +products: + - cloudflare-for-platforms +--- diff --git a/src/content/docs/d1/index.mdx b/src/content/docs/d1/index.mdx index 2ef2bf7c207..fa934190213 100644 --- a/src/content/docs/d1/index.mdx +++ b/src/content/docs/d1/index.mdx @@ -32,7 +32,7 @@ Create new serverless SQL databases to query from your Workers and Pages project D1 is Cloudflare's managed, serverless database with SQLite's SQL semantics, built-in disaster recovery, and Worker and HTTP API access. -D1 allows you to create thousands of databases at no extra cost for isolation, perfect for scaling out application vibe-coding platforms. D1 pricing is based only on query and storage costs. +D1 supports separate databases for users, tenants, or projects. The Workers Paid plan includes 100,000 databases. Additional databases cost $0.10 per database per month, alongside [query and storage charges](/d1/platform/pricing/). Create your first D1 database by [following the Get started guide](/d1/get-started/), learn how to [import data into a database](/d1/best-practices/import-export-data/), and how to [interact with your database](/d1/worker-api/) directly from [Workers](/workers/) or [Pages](/pages/functions/bindings/#d1-databases). diff --git a/src/content/docs/d1/platform/limits.mdx b/src/content/docs/d1/platform/limits.mdx index 4c61da8679f..744e2306dc5 100644 --- a/src/content/docs/d1/platform/limits.mdx +++ b/src/content/docs/d1/platform/limits.mdx @@ -10,38 +10,36 @@ products: import { Render } from "~/components"; -| Feature | Limit | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | -| Databases per account | 50,000 (Workers Paid) [^1] / 10 (Free) | -| Maximum database size | 10 GB (Workers Paid) / 500 MB (Free) | -| Maximum storage per account | 1 TB (Workers Paid) [^2] / 5 GB (Free) | -| [Time Travel](/d1/reference/time-travel/) duration (point-in-time recovery) | 30 days (Workers Paid) / 7 days (Free) | -| Maximum Time Travel restore operations | 10 restores per 10 minutes (per database) | +| Feature | Limit | +| ----------------------------------------------------------------------------------------------- | ------------------------------------------------- | +| Databases per account | Workers Paid: 1,000,000. The first 100,000 databases are included. Each database above 100,000 costs [$0.10 per month](/d1/platform/pricing/#billing-metrics). Free: 10. | +| Maximum database size | 10 GB (Workers Paid) / 500 MB (Free) | +| Maximum storage per account | 1 TB (Workers Paid) [^1] / 5 GB (Free) | +| [Time Travel](/d1/reference/time-travel/) duration (point-in-time recovery) | 30 days (Workers Paid) / 7 days (Free) | +| Maximum Time Travel restore operations | 10 restores per 10 minutes (per database) | | Queries per Worker invocation (read [subrequest limits](/workers/platform/limits/#subrequests)) | 1000 (Workers Paid) / 50 (Free) | -| Maximum number of columns per table | 100 | -| Maximum number of rows per table | Unlimited (excluding per-database storage limits) | -| Maximum string, `BLOB` or table row size | 2,000,000 bytes (2 MB) | -| Maximum SQL statement length | 100,000 bytes (100 KB) | -| Maximum bound parameters per query | 100 | -| Maximum arguments per SQL function | 32 | -| Maximum characters (bytes) in a `LIKE` or `GLOB` pattern | 50 bytes | -| Maximum bindings per Workers script | Approximately 5,000 [^3] | -| Maximum SQL query duration | 30 seconds [^4] | -| Maximum file import (`d1 execute`) size | 5 GB [^5] | +| Maximum number of columns per table | 100 | +| Maximum number of rows per table | Unlimited (excluding per-database storage limits) | +| Maximum string, `BLOB` or table row size | 2,000,000 bytes (2 MB) | +| Maximum SQL statement length | 100,000 bytes (100 KB) | +| Maximum bound parameters per query | 100 | +| Maximum arguments per SQL function | 32 | +| Maximum characters (bytes) in a `LIKE` or `GLOB` pattern | 50 bytes | +| Maximum bindings per Workers script | Approximately 5,000 [^2] | +| Maximum SQL query duration | 30 seconds [^3] | +| Maximum file import (`d1 execute`) size | 5 GB [^4] | :::note[Batch limits] Limits for individual queries (listed above) apply to each individual statement contained within a batch statement. For example, the maximum SQL statement length of 100 KB applies to each statement inside a `db.batch()`. ::: -[^1]: The maximum number of databases per account can be increased by request on Workers Paid and Enterprise plans, with support for millions to tens-of-millions of databases (or more) per account. Refer to the guidance on limit increases on this page to request an increase. +[^1]: The maximum storage per account can be increased by request on Workers Paid and Enterprise plans. Refer to the guidance on limit increases on this page to request an increase. -[^2]: The maximum storage per account can be increased by request on Workers Paid and Enterprise plans. Refer to the guidance on limit increases on this page to request an increase. +[^2]: A single Worker script can have up to 1 MB of script metadata. A binding is defined as a binding to a resource, such as a D1 database, KV namespace, [environmental variable](/workers/configuration/environment-variables/), or secret. Each resource binding is approximately 150-bytes, however environmental variables and secrets are controlled by the size of the value you provide. Excluding environmental variables, you can bind up to \~5,000 D1 databases to a single Worker script. -[^3]: A single Worker script can have up to 1 MB of script metadata. A binding is defined as a binding to a resource, such as a D1 database, KV namespace, [environmental variable](/workers/configuration/environment-variables/), or secret. Each resource binding is approximately 150-bytes, however environmental variables and secrets are controlled by the size of the value you provide. Excluding environmental variables, you can bind up to \~5,000 D1 databases to a single Worker script. +[^3]: Requests to Cloudflare API must resolve in 30 seconds. Therefore, this duration limit also applies to the entire batch call. -[^4]: Requests to Cloudflare API must resolve in 30 seconds. Therefore, this duration limit also applies to the entire batch call. - -[^5]: The imported file is uploaded to R2. Refer to [R2 upload limit](/r2/platform/limits). +[^4]: The imported file is uploaded to R2. Refer to [R2 upload limit](/r2/platform/limits). Cloudflare also offers other storage solutions such as [Workers KV](/kv/api/), [Durable Objects](/durable-objects/), and [R2](/r2/get-started/). Each product has different advantages and limits. Refer to [Choose a data or storage product](/workers/platform/storage-options/) to review which storage option is right for your use case. diff --git a/src/content/docs/d1/platform/pricing.mdx b/src/content/docs/d1/platform/pricing.mdx index d41fcbb651b..1f90a01105a 100644 --- a/src/content/docs/d1/platform/pricing.mdx +++ b/src/content/docs/d1/platform/pricing.mdx @@ -15,6 +15,7 @@ D1 bills based on: - **Usage**: Queries you run against D1 will count as rows read, rows written, or both (for transactions or batches). - **Scale-to-zero**: You are not billed for hours or capacity units. If you are not running queries against your database, you are not billed for compute. - **Storage**: You are only billed for storage above the included [limits](/d1/platform/limits/) of your plan. +- **Databases**: The Workers Paid plan includes 100,000 databases per account. Each additional database costs $0.10 per month. ## Billing metrics diff --git a/src/content/docs/kv/platform/limits.mdx b/src/content/docs/kv/platform/limits.mdx index 4decd7f541e..4cd6a0ee9f1 100644 --- a/src/content/docs/kv/platform/limits.mdx +++ b/src/content/docs/kv/platform/limits.mdx @@ -18,7 +18,7 @@ import { Render } from "~/components"; | Writes to different keys | 1,000 writes per day | Unlimited | | Writes to same key | 1 per second | 1 per second | | Operations/Worker invocation [^1] | 1000 | 1000 | -| Namespaces per account | 1,000 | 1,000 | +| Namespaces per account | 1,000 | Unlimited, with a default limit of 1,000. Each namespace above 1,000 costs [$0.10 per month](/kv/platform/pricing/). | | Storage/account | 1 GB | Unlimited | | Storage/namespace | 1 GB | Unlimited | | Keys/namespace | Unlimited | Unlimited | diff --git a/src/content/docs/kv/platform/pricing.mdx b/src/content/docs/kv/platform/pricing.mdx index 2fbcd27b1c0..589fd131e95 100644 --- a/src/content/docs/kv/platform/pricing.mdx +++ b/src/content/docs/kv/platform/pricing.mdx @@ -8,24 +8,30 @@ products: - kv --- -import { Render } from "~/components" +import { Render } from "~/components"; ## Pricing FAQ -#### When writing via KV's [REST API](/api/resources/kv/subresources/namespaces/subresources/keys/methods/bulk_update/), how are writes charged? +### How much do additional namespaces cost? + +The Workers Paid plan includes 1,000 namespaces per account. Each additional namespace costs $0.10 per month. + +For example, 1,050 namespaces existing for a full billing month cost `(1,050 - 1,000) × $0.10 = $5.00` for the 50 additional namespaces. Read, write, delete, list, and storage charges apply separately. + +### When writing via KV's [REST API](/api/resources/kv/subresources/namespaces/subresources/keys/methods/bulk_update/), how are writes charged? Each key-value pair in the `PUT` request is counted as a single write, identical to how each call to `PUT` in the Workers API counts as a write. Writing 5,000 keys via the REST API incurs the same write costs as making 5,000 `PUT` calls in a Worker. -#### Do queries I issue from the dashboard or wrangler (the CLI) count as billable usage? +### Do queries I issue from the dashboard or wrangler (the CLI) count as billable usage? Yes, any operations via the Cloudflare dashboard or wrangler, including updating (writing) keys, deleting keys, and listing the keys in a namespace count as billable KV usage. -#### Does Workers KV charge for data transfer / egress? +### Does Workers KV charge for data transfer / egress? No. -#### What operations incur operations charges? +### What operations incur operations charges? All operations incur charges, including fetches for non-existent keys that return a `null` (Workers API) or `HTTP 404` (REST API). These operations still traverse KV's infrastructure. diff --git a/src/content/docs/queues/platform/limits.mdx b/src/content/docs/queues/platform/limits.mdx index 4ca7f095275..fe79788e84b 100644 --- a/src/content/docs/queues/platform/limits.mdx +++ b/src/content/docs/queues/platform/limits.mdx @@ -11,12 +11,12 @@ products: import { Render, WranglerConfig } from "~/components" :::caution -The following limits apply to both Workers Paid and Workers Free plans with the exception of **Message Retention**, which is non-configurable at 24 hours for the Workers Free plan. +The following limits apply to both Workers Paid and Workers Free plans except for queue counts and **Message Retention**, which is non-configurable at 24 hours for the Workers Free plan. ::: | Feature | Limit | | ----------------------------------------------------------------| ------------------------------------------------------------- | -| Queues | 10,000 per account | +| Queues | Workers Paid: Unlimited, with a default limit of 10,000 per account. Each queue above 10,000 costs [$0.10 per month](/queues/platform/pricing/). Workers Free: 10,000 per account. | | Message size | 128 KB 1 | | Message retries | 100 | | Maximum consumer batch size | 100 messages | diff --git a/src/content/docs/queues/platform/pricing.mdx b/src/content/docs/queues/platform/pricing.mdx index f8336c97f5b..18942a9a67a 100644 --- a/src/content/docs/queues/platform/pricing.mdx +++ b/src/content/docs/queues/platform/pricing.mdx @@ -17,6 +17,7 @@ import { Render } from "~/components" ## Examples + If an application writes, reads and deletes (consumes) one million messages a day (in a 30 day month), and each message is less than 64 KB in size, the estimated bill for the month would be: diff --git a/src/content/docs/r2/platform/limits.mdx b/src/content/docs/r2/platform/limits.mdx index a254cba1f38..7d0cd717c37 100644 --- a/src/content/docs/r2/platform/limits.mdx +++ b/src/content/docs/r2/platform/limits.mdx @@ -12,9 +12,9 @@ import { Render } from "~/components"; | ------------------------------------------------------------ | ------------------------------------------------- | | Data storage per bucket | Unlimited | | Number of objects per bucket | Unlimited | -| Maximum number of buckets per account | 1,000,000 | +| Maximum number of buckets per account | Unlimited, with a default limit of 1,000,000. Each bucket above 1,000,000 costs [$0.10 per month](/r2/pricing/#r2-pricing). | | Maximum rate of bucket management operations per bucket [^1] | 50 per second | -| Number of custom domains per bucket | 100 | +| Number of custom domains per bucket | 100 | | Object key length | 1,024 bytes | | Object metadata size | 8,192 bytes | | Object size | 5 TiB per object [^2] | diff --git a/src/content/docs/r2/pricing.mdx b/src/content/docs/r2/pricing.mdx index 37ba5595cc0..b18f006b80c 100644 --- a/src/content/docs/r2/pricing.mdx +++ b/src/content/docs/r2/pricing.mdx @@ -8,8 +8,6 @@ products: - r2 --- -import { InlineBadge } from "~/components"; - R2 charges based on the total volume of data stored, along with two classes of operations on that data: 1. [Class A operations](#class-a-operations) which are more expensive and tend to mutate state. @@ -27,13 +25,16 @@ To learn about potential cost savings from using R2, refer to the [R2 pricing ca ## R2 pricing -| | Standard storage | Infrequent Access storage | -| ---------------------------------- | ------------------------ | ------------------------------------------------------- | -| Storage | $0.015 / GB-month | $0.01 / GB-month | -| Class A Operations | $4.50 / million requests | $9.00 / million requests | -| Class B Operations | $0.36 / million requests | $0.90 / million requests | -| Data Retrieval (processing) | None | $0.01 / GB | -| Egress (data transfer to Internet) | Free [^1] | Free [^1] | +| | Standard storage | Infrequent Access storage | +| ---------------------------------- | ------------------------ | ------------------------- | +| Storage | $0.015 / GB-month | $0.01 / GB-month | +| Class A Operations | $4.50 / million requests | $9.00 / million requests | +| Class B Operations | $0.36 / million requests | $0.90 / million requests | +| Data Retrieval (processing) | None | $0.01 / GB | +| Egress (data transfer to Internet) | Free [^1] | Free [^1] | +| Buckets per account | First 1,000,000 included + $0.10 per additional bucket per month | First 1,000,000 included + $0.10 per additional bucket per month | + +The bucket allowance is shared across all storage classes and applies regardless of your Workers plan. Refer to [R2 limits](/r2/platform/limits/) for bucket creation limits and how to request a limit increase. :::caution[Billable unit rounding] Cloudflare rounds up your usage to the next billing unit. @@ -43,7 +44,7 @@ For example: - If you have performed one million and one operations, you will be billed for two million operations. - If you have used 1.1 GB-month, you will be billed for 2 GB-month. - If you have retrieved data (for infrequent access storage) for 1.1 GB, you will be billed for 2 GB. -::: + ::: ### Free tier @@ -92,10 +93,10 @@ Data retrieval fees apply when you access or retrieve data from the Infrequent A For objects stored in Infrequent Access storage, you will be charged for the object for the minimum storage duration even if the object was deleted, moved, or replaced before the specified duration. -| Storage class | Minimum storage duration | -| ------------------------------------------------------ | ------------------------ | -| Standard storage | None | -| Infrequent Access storage | 30 days | +| Storage class | Minimum storage duration | +| ------------------------- | ------------------------ | +| Standard storage | None | +| Infrequent Access storage | 30 days | @@ -127,25 +128,25 @@ To learn about potential cost savings from using R2, refer to the [R2 pricing ca If a user writes 1,000 objects in R2 **Standard storage** for 1 month with an average size of 1 GB and reads each object 1,000 times during the month, the estimated cost for the month would be: -| | Usage | Free Tier | Billable Quantity | Price | -| --------------------------- | ------------------------------------------------------------- | ------------ | ----------------- | ----------- | -| Storage | (1,000 objects) \* (1 GB per object) = 1,000 GB-months | 10 GB-months | 990 GB-months | $14.85 | -| Class A Operations | (1,000 objects) \* (1 write per object) = 1,000 writes | 1 million | 0 | $0.00 | -| Class B Operations | (1,000 objects) \* (1,000 reads per object) = 1 million reads | 10 million | 0 | $0.00 | -| Data retrieval (processing) | (1,000 objects) \* (1 GB per object) = 1,000 GB | NA | None | $0.00 | -| **TOTAL** | | | | **$14.85** | +| | Usage | Free Tier | Billable Quantity | Price | +| --------------------------- | ------------------------------------------------------------- | ------------ | ----------------- | ---------- | +| Storage | (1,000 objects) \* (1 GB per object) = 1,000 GB-months | 10 GB-months | 990 GB-months | $14.85 | +| Class A Operations | (1,000 objects) \* (1 write per object) = 1,000 writes | 1 million | 0 | $0.00 | +| Class B Operations | (1,000 objects) \* (1,000 reads per object) = 1 million reads | 10 million | 0 | $0.00 | +| Data retrieval (processing) | (1,000 objects) \* (1 GB per object) = 1,000 GB | NA | None | $0.00 | +| **TOTAL** | | | | **$14.85** | ### Infrequent access example If a user writes 1,000 objects in R2 Infrequent Access storage with an average size of 1 GB, stores them for 5 days, and then deletes them (delete operations are free), and during those 5 days each object is read 1,000 times, the estimated cost for the month would be: -| | Usage | Free Tier | Billable Quantity | Price | -| --------------------------- | ------------------------------------------------------------- | ------------ | ----------------- | ----------- | -| Storage | (1,000 objects) \* (1 GB per object) = 1,000 GB-months | NA | 1,000 GB-months | $10.00 | -| Class A Operations | (1,000 objects) \* (1 write per object) = 1,000 writes | NA | 1,000 | $9.00 | -| Class B Operations | (1,000 objects) \* (1,000 reads per object) = 1 million reads | NA | 1 million | $0.90 | -| Data retrieval (processing) | (1,000 objects) \* (1 GB per object) = 1,000 GB | NA | 1,000 GB | $10.00 | -| **TOTAL** | | | | **$29.90** | +| | Usage | Free Tier | Billable Quantity | Price | +| --------------------------- | ------------------------------------------------------------- | --------- | ----------------- | ---------- | +| Storage | (1,000 objects) \* (1 GB per object) = 1,000 GB-months | NA | 1,000 GB-months | $10.00 | +| Class A Operations | (1,000 objects) \* (1 write per object) = 1,000 writes | NA | 1,000 | $9.00 | +| Class B Operations | (1,000 objects) \* (1,000 reads per object) = 1 million reads | NA | 1 million | $0.90 | +| Data retrieval (processing) | (1,000 objects) \* (1 GB per object) = 1,000 GB | NA | 1,000 GB | $10.00 | +| **TOTAL** | | | | **$29.90** | Note that the minimal storage duration for infrequent access storage is 30 days, which means the billable quantity is 1,000 GB-months, rather than 167 GB-months. diff --git a/src/content/docs/vectorize/platform/limits.mdx b/src/content/docs/vectorize/platform/limits.mdx index 748f09e77fc..d6a94d2a568 100644 --- a/src/content/docs/vectorize/platform/limits.mdx +++ b/src/content/docs/vectorize/platform/limits.mdx @@ -18,7 +18,7 @@ To request an adjustment to a limit, complete the [Limit Increase Request Form]( | Feature | Current Limit | | ------------------------------------------------------------- | ----------------------------------- | -| Indexes per account | 50,000 (Workers Paid) / 100 (Free) | +| Indexes per account | Workers Paid: Unlimited, with a default limit of 50,000. Each index above 50,000 costs [$0.10 per month](/vectorize/platform/pricing/#billing-metrics). Free: 100. | | Maximum dimensions per vector | 1536 dimensions, 32 bits precision | | Precision per vector dimension | 32 bits (float32) | | Maximum vector ID length | 64 bytes | diff --git a/src/content/docs/vectorize/platform/pricing.mdx b/src/content/docs/vectorize/platform/pricing.mdx index 60d9b1fcf96..66e228925fd 100644 --- a/src/content/docs/vectorize/platform/pricing.mdx +++ b/src/content/docs/vectorize/platform/pricing.mdx @@ -1,7 +1,7 @@ --- pcx_content_type: concept title: Pricing -description: Vectorize pricing based on queried and stored vector dimensions. +description: Vectorize pricing for indexes above the included allocation and queried and stored vector dimensions. sidebar: order: 1 products: @@ -16,8 +16,9 @@ Vectorize bills are based on: - **Queried Vector Dimensions**: The total number of vector dimensions queried. If you have 10,000 vectors with 384-dimensions in an index, and make 100 queries against that index, your total queried vector dimensions would sum to 3.878 million (`(10000 + 100) * 384`). - **Stored Vector Dimensions**: The total number of vector dimensions stored. If you have 1,000 vectors with 1536-dimensions in an index, your stored vector dimensions would sum to 1.536 million (`1000 * 1536`). +- **Indexes**: The Workers Paid plan includes 50,000 indexes per account. Each additional index costs $0.10 per month. -You are not billed for CPU, memory, "active index hours", or the number of indexes you create. If you are not issuing queries against your indexes, you are not billed for queried vector dimensions. +You are not billed for CPU, memory, or "active index hours". If you are not issuing queries against your indexes, you are not billed for queried vector dimensions. ## Billing metrics @@ -64,3 +65,5 @@ Yes: any queries you issue against your index, including from the Workers API, H - Does an empty index, with no vectors, contribute to storage? No. Empty indexes do not count as stored vector dimensions. + +Empty indexes still count toward your account's index allocation. Each index above the Workers Paid allocation costs $0.10 per month. diff --git a/src/content/partials/d1/faq-limits.mdx b/src/content/partials/d1/faq-limits.mdx index 44f8bf2544e..6d410c683b3 100644 --- a/src/content/partials/d1/faq-limits.mdx +++ b/src/content/partials/d1/faq-limits.mdx @@ -5,7 +5,7 @@ ### How much work can a D1 database do? D1 is designed for horizontal scale out across multiple, smaller (10 GB) databases, such as per-user, per-tenant or per-entity databases. -D1 allows you to build applications with thousands of databases at no extra cost, as the pricing is based only on query and storage costs. +The Workers Paid plan includes 100,000 databases per account. You pay [$0.10 per D1 database per month](/d1/platform/pricing/#billing-metrics) above the included amount. Query and storage charges apply separately. #### Storage diff --git a/src/content/partials/d1/faq-pricing.mdx b/src/content/partials/d1/faq-pricing.mdx index 261663683d5..0a234cb4964 100644 --- a/src/content/partials/d1/faq-pricing.mdx +++ b/src/content/partials/d1/faq-pricing.mdx @@ -50,3 +50,9 @@ Yes, you can use an index to reduce the number of rows read by a query. [Creatin ### Does a freshly created database, and/or an empty table with no rows, contribute to my storage? Yes, although minimal. An empty table consumes at least a few kilobytes, based on the number of columns (table width) in the table. An empty database consumes approximately 12 KB of storage. + +### How much do additional databases cost? + +The Workers Paid plan includes 100,000 databases per account. Each additional database costs $0.10 per month. Query and storage charges apply separately. + +For example, 100,020 databases existing for a full billing month cost `(100,020 - 100,000) × $0.10 = $2.00` for the 20 additional databases. diff --git a/src/content/partials/vectorize/vectorize-pricing.mdx b/src/content/partials/vectorize/vectorize-pricing.mdx index 9281365f50e..73d59521b85 100644 --- a/src/content/partials/vectorize/vectorize-pricing.mdx +++ b/src/content/partials/vectorize/vectorize-pricing.mdx @@ -2,10 +2,11 @@ {} --- -| | [Workers Free](/workers/platform/pricing/#workers) | [Workers Paid](/workers/platform/pricing/#workers) | -| ----------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------- | -| **Total queried vector dimensions** | 30 million queried vector dimensions / month | First 50 million queried vector dimensions / month included + $0.01 per million | -| **Total stored vector dimensions** | 5 million stored vector dimensions | First 10 million stored vector dimensions + $0.05 per 100 million | +| | [Workers Free](/workers/platform/pricing/#workers) | [Workers Paid](/workers/platform/pricing/#workers) | +| ----------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------- | +| **Total queried vector dimensions** | 30 million queried vector dimensions / month | First 50 million queried vector dimensions / month included + $0.01 per million | +| **Total stored vector dimensions** | 5 million stored vector dimensions | First 10 million stored vector dimensions + $0.05 per 100 million | +| Indexes | 100 | Unlimited, with a default limit of 50,000. First 50,000 included + $0.10 per additional index per month. | ### Calculating vector dimensions diff --git a/src/content/partials/workers/d1-pricing.mdx b/src/content/partials/workers/d1-pricing.mdx index 5e6e4bb62f5..c9b73d588c4 100644 --- a/src/content/partials/workers/d1-pricing.mdx +++ b/src/content/partials/workers/d1-pricing.mdx @@ -2,11 +2,16 @@ {} --- -| | [Workers Free](/workers/platform/pricing/#workers) | [Workers Paid](/workers/platform/pricing/#workers) | -| ----------------------- | -------------------------------------------------- | --------------------------------------------------------- | -| Rows read | 5 million / day | First 25 billion / month included + $0.001 / million rows | -| Rows written | 100,000 / day | First 50 million / month included + $1.00 / million rows | -| Storage (per GB stored) | 5 GB (total) | First 5 GB included + $0.75 / GB-mo | +| | [Workers Free](/workers/platform/pricing/#workers) | [Workers Paid](/workers/platform/pricing/#workers) | +| ----------------------- | -------------------------------------------------- | --------------------------------------------------------------- | +| Rows read | 5 million / day | First 25 billion / month included + $0.001 / million rows | +| Rows written | 100,000 / day | First 50 million / month included + $1.00 / million rows | +| Storage (per GB stored) | 5 GB (total) | First 5 GB included + $0.75 / GB-mo | +| Databases | 10 | First 100,000 included + $0.10 per additional database per month. | + +You pay $0.10 per month for each D1 database above the included amount, even when it is empty or receives no traffic. Usage and storage are billed separately. + +Refer to [D1 limits](/d1/platform/limits/) for database creation and storage limits. :::note[Track your D1 usage] To accurately track your usage, use the [meta object](/d1/worker-api/return-object/), [GraphQL Analytics API](/d1/observability/metrics-analytics/#query-via-the-graphql-api), or the [Cloudflare dashboard](https://dash.cloudflare.com/?to=/:account/workers/d1/). Select your D1 database, then view: Metrics > Row Metrics. @@ -21,6 +26,6 @@ To accurately track your usage, use the [meta object](/d1/worker-api/return-obje 5. Defining [indexes](/d1/best-practices/use-indexes/) on your table(s) reduces the number of rows read by a query when filtering on that indexed field. For example, if the `users` table has an index on a timestamp column `created_at`, the query `SELECT * FROM users WHERE created_at > ?1` would only need to read a subset of the table. 6. Indexes will add an additional written row when writes include the indexed column, as there are two rows written: one to the table itself, and one to the index. The performance benefit of an index and reduction in rows read will, in nearly all cases, offset this additional write. 7. Storage is based on gigabytes stored per month, and is based on the sum of all databases in your account. Tables and indexes both count towards storage consumed. -8. Free limits reset daily at 00:00 UTC. Monthly included limits reset based on your monthly subscription renewal date, which is determined by the day you first subscribed. +8. Free daily usage limits reset at 00:00 UTC. Monthly included usage resets based on your monthly subscription renewal date, which is determined by the day you first subscribed. 9. There are no data transfer (egress) or throughput (bandwidth) charges for data accessed from D1. 10. [Read replication](/d1/best-practices/read-replication/) does not charge extra for read replicas. You incur the same usage billing based on `rows_read` and `rows_written` by your queries. diff --git a/src/content/partials/workers/kv_pricing.mdx b/src/content/partials/workers/kv_pricing.mdx index 3d74525804d..1b59fe00df4 100644 --- a/src/content/partials/workers/kv_pricing.mdx +++ b/src/content/partials/workers/kv_pricing.mdx @@ -2,21 +2,22 @@ {} --- -import { Markdown } from "~/components"; - Workers KV is included in both the Free and Paid [Workers plans](/workers/platform/pricing/). -| | Free plan1 | Paid plan | -| ------------- | --------------------- | --------------------------------- | -| Keys read | 100,000 / day | 10 million/month, + $0.50/million | -| Keys written | 1,000 / day | 1 million/month, + $5.00/million | -| Keys deleted | 1,000 / day | 1 million/month, + $5.00/million | -| List requests | 1,000 / day | 1 million/month, + $5.00/million | -| Stored data | 1 GB | 1 GB, + $0.50/ GB-month | +| | Free plan1 | Paid plan | +| ------------- | --------------------- | --------------------------------------------------------------- | +| Keys read | 100,000 / day | 10 million/month, + $0.50/million | +| Keys written | 1,000 / day | 1 million/month, + $5.00/million | +| Keys deleted | 1,000 / day | 1 million/month, + $5.00/million | +| List requests | 1,000 / day | 1 million/month, + $5.00/million | +| Stored data | 1 GB | 1 GB, + $0.50/ GB-month | +| Namespaces | 1,000 | Unlimited, with a default limit of 1,000. First 1,000 included + $0.10 per additional namespace per month. | + +Refer to [KV limits](/kv/platform/limits/#workers-kv) for namespace creation limits and limit increases. -1 The Workers Free plan includes limited Workers KV usage. All limits -reset daily at 00:00 UTC. If you exceed any one of these limits, further -operations of that type will fail with an error. +1 The Workers Free plan includes limited Workers KV usage. Daily +usage limits reset daily at 00:00 UTC. If you exceed any one of these limits, +further operations of that type will fail with an error. :::note diff --git a/src/content/partials/workers/queues_pricing.mdx b/src/content/partials/workers/queues_pricing.mdx index 9c9ccdef8c4..58838683766 100644 --- a/src/content/partials/workers/queues_pricing.mdx +++ b/src/content/partials/workers/queues_pricing.mdx @@ -2,7 +2,7 @@ {} --- -Cloudflare Queues charges for the total number of operations against each of your queues during a given month. +Cloudflare Queues charges for operations and for queues above the included amount on the Workers Paid plan. - An operation is counted for each 64 KB of data that is written, read, or deleted. - Messages larger than 64 KB are charged as if they were multiple messages: for example, a 65 KB message and a 127 KB message would both incur two operation charges when written, read, or deleted. @@ -13,9 +13,12 @@ Cloudflare Queues charges for the total number of operations against each of you | | Workers Free | Workers Paid | | ------------------- | ------------------------------ | -------------------------------------------------------------- | | Standard operations | 10,000 operations/day included | 1,000,000 operations/month included + $0.40/million operations | +| Queues per account | 10,000 | Unlimited, with a default limit of 10,000. First 10,000 included + $0.10 per additional queue per month. | | Message retention | 24 hours (non-configurable) | 4 days default, configurable up to 14 days | -In most cases, it takes 3 operations to deliver a message: 1 write, 1 read, and 1 delete. Therefore, you can use the following formula to estimate your monthly bill: +Refer to [Queues limits](/queues/platform/limits/) for queue creation limits and how to request a limit increase. + +In most cases, it takes 3 operations to deliver a message: 1 write, 1 read, and 1 delete. Therefore, you can use the following formula to estimate your monthly operations charges, excluding charges for additional queues: ```txt ((Number of Messages * 3) - 1,000,000) / 1,000,000 * $0.40 From 2139fd40d34a9e27f731901865dc2eb68e8a997b Mon Sep 17 00:00:00 2001 From: Brendan Irvine-Broque Date: Fri, 23 Oct 2026 15:58:30 -0700 Subject: [PATCH 2/2] [R2] Set bucket allowance to 100,000 --- src/content/docs/r2/platform/limits.mdx | 2 +- src/content/docs/r2/pricing.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/r2/platform/limits.mdx b/src/content/docs/r2/platform/limits.mdx index 7d0cd717c37..37f8676e1cd 100644 --- a/src/content/docs/r2/platform/limits.mdx +++ b/src/content/docs/r2/platform/limits.mdx @@ -12,7 +12,7 @@ import { Render } from "~/components"; | ------------------------------------------------------------ | ------------------------------------------------- | | Data storage per bucket | Unlimited | | Number of objects per bucket | Unlimited | -| Maximum number of buckets per account | Unlimited, with a default limit of 1,000,000. Each bucket above 1,000,000 costs [$0.10 per month](/r2/pricing/#r2-pricing). | +| Maximum number of buckets per account | Unlimited, with a default limit of 100,000. Each bucket above 100,000 costs [$0.10 per month](/r2/pricing/#r2-pricing). | | Maximum rate of bucket management operations per bucket [^1] | 50 per second | | Number of custom domains per bucket | 100 | | Object key length | 1,024 bytes | diff --git a/src/content/docs/r2/pricing.mdx b/src/content/docs/r2/pricing.mdx index b18f006b80c..58ceaf480a6 100644 --- a/src/content/docs/r2/pricing.mdx +++ b/src/content/docs/r2/pricing.mdx @@ -32,7 +32,7 @@ To learn about potential cost savings from using R2, refer to the [R2 pricing ca | Class B Operations | $0.36 / million requests | $0.90 / million requests | | Data Retrieval (processing) | None | $0.01 / GB | | Egress (data transfer to Internet) | Free [^1] | Free [^1] | -| Buckets per account | First 1,000,000 included + $0.10 per additional bucket per month | First 1,000,000 included + $0.10 per additional bucket per month | +| Buckets per account | First 100,000 included + $0.10 per additional bucket per month | First 100,000 included + $0.10 per additional bucket per month | The bucket allowance is shared across all storage classes and applies regardless of your Workers plan. Refer to [R2 limits](/r2/platform/limits/) for bucket creation limits and how to request a limit increase.