tpuf v3 is coming: follow along

turbopuffer pricing

Minimum Usage
$16/month
Includes all database features
Deployment
Security & Compliance
Support
Community Slack & Email
Private Slack Channel
Support Hours
Support SLA
Uptime SLA

Cost calculator

Storage≤ $0.33
/GB
1M docs (~3GB)
Writes≤ $2.00
/GB
1M writes, ~24 WPM (~5GB)
Queries≤ $1.00
/PB
1M queries, ~24 QPM (~1PB)
Namespaces

100K docs

/NS
10

Estimated cost

$7
/mo
(min $16/month for launch plan)
Storage
$0.88
Writes
$4.71
Queries
$1.31
NamespacesIncluded

faq

Why do you have minimum commitments?

For the current phase of our company, we have chosen a commercial-only model to maintain high-quality support and rapid development.

Why does enterprise cost more?

Features like private networking, customer-managed encryption keys (CMEK), 24x7 support, SLAs, and custom contract terms require significant engineering and support investment. Adjustments to account for these factors ensure we can provide the best service at the scale and reliability our customers need. For longer-term commitments or larger deployments, we're happy to discuss volume pricing and custom arrangements.

Do unused commitments roll over?

Unused amounts don't roll over to the next month.

What if I exceed my minimum commitment?

You'll pay for actual usage beyond the minimum. The minimum commitment is just a baseline charge.

Are database features the same across all plans?

Yes, except when specifically noted in the pricing or documentation. For example, customer-managed encryption keys (CMEK) are only available on higher-tier plans.

Where can I see upcoming features?

Check our public roadmap.

Is the pricing based on logical or physical bytes?

Logical bytes are what you control and ingest into turbopuffer, e.g. if you insert 'turbopuffer' you'd be billed for 11 logical bytes. To physically store a string, most implementations require another 16 bytes to store the length of the string and a pointer. turbopuffer charges based on 11 logical bytes, not the 27 physical bytes. We have chosen this model as it is predictable and in your control. We build in the 'physical storage amplification' into the pricing.

How is vector logical storage size calculated?

Each dimension uses 4 bytes (f32). For f16, each dimension uses 2 bytes for storage and querying. For writes, we count f16 as 4 bytes per dimension because it doesn't linearly decrease the cost of maintaining the ANN index from f32.

How are full-text search attributes, vector attributes, and other attributes billed?

All indexed attributes (FTS-indexed fields, vectors, filters, etc.) are billed at the same rate. By default attributes are at least indexed for filtering. Attributes that are explicitly not indexed/filterable in the schema are billed at a 50% discount. Billing is based on the total logical size of all of the attributes. There is no per-attribute cost. Billing is based on the aggregate logical size of values. For namespaces with multiple vector columns, filterable attributes are billed once per vector column (since they are indexed into each ANN index). Non-filterable attributes are unaffected. Late-interaction token vectors are billed as non-filterable attributes, plus ~10 KB per document for the late-interaction index.

How are queries billed?

Queries are billed as the sum of two components: the amount of data queried and the amount of data returned. Data queried is calculated as the actual size of the queried namespace or 1.28 GB, whichever is greater. We offer an 80% marginal discount on data queried between 32 GB and 128 GB, and a 96% marginal discount on data queried beyond 128 GB. Data returned is billed at a flat rate per GB. Late-interaction ANN queries are billed as two queries.

How are writes billed?

Minimum charge: Every write is billed at least 10 KB, even if the actual size is smaller. A 1 KB write costs the same as a 10 KB write.

Batch write discount: The discount increases with batch size and reaches 50% at approximately 3.2 MB.

discount = min(0.5, max(0, 0.2 * (log10(KB) - 1)))

How it works: The discount is calculated once per batch based on the total batch size, then applied uniformly to all bytes in that batch. It is not tiered. If you send a batch that is 3.2 MB or larger, all bytes in that batch receive the 50% discount.

Examples:

  • A 1 KB batch → 10 KB billable (minimum floor applies)
  • A 128 KB batch → ≈22% discount on all 128 KB → ~100 KB billable
  • A 512 KB batch → ≈34% discount on all 512 KB → ~337 KB billable
  • A 6 MB batch → 50% discount on all 6 MB → 3 MB billable
  • A 256 MB batch → 50% discount on all 256 MB → 128 MB billable

Note: Each API request is discounted independently. If you send multiple 256 MB requests, each gets the 50% discount separately.

Stacking discounts: These batch write discounts stack with non-indexed/non-filterable attribute discounts. For example, non-filterable attributes receive a 50% discount at the attribute level, and then the batch write discount is applied on top of that.

How can I migrate data from another database?

We don't currently offer migration tools. For large customers on our Enterprise plan, our Solutions Engineering team can chart a path with you.