drift Docs
Start
What is Drift?
The tour, if you are new here.
Use cases
Whether Drift does your thing.
Getting started
Nothing to deployed, in one command.
Architecture
How a slice is put together.
What it costs
The free grant, four unit prices, two rules.
Build
Canvas
Static sites, same origin as your API.
Tools
Operate
Auth
Accounts, tokens and scopes.
Security
Boundaries, sandboxing and hardening.
Troubleshooting
Error codes
What went wrong, and what to do about it.
Legal
Acceptable use
What a slice may not be used for.
Data processing
The DPA, and every sub-processor.

What it costs

You pay for the shape you declare, not for the traffic that arrives. You choose the resources, four unit prices turn them into a monthly figure, and you pay it up front for a billing period you pick. An idle slice costs exactly what a busy one costs, and nothing meters in the background. There is no request count, no egress line and no bill that can arrive larger than the one you agreed to.

That means you can work the number out before you build anything, which is the point of this page. It is short on purpose: one free grant, four prices, and two rules that catch people out.

A slice comes in one of two shapes, and there is no third to be upsold into. It is either free (the Hacker grant, one per account, no card and no expiry date) or configured, shaped in the slice's shape and priced line by line.

Every number here comes from one place in the platform.

The form, the api and the invoice all price a slice through the same code, so the total the form shows you as you type is the total you are billed. To see it for a shape you are considering, open the form — drift slice create <name>, or drift slice resize on one that exists — and change the dials; nothing is bought until you submit.

The free Hacker slice

drift slice create <name> --free provisions this shape with no form. One free slice per account, enforced in the database.

Resource Free grant
Atomic functions5 slots
Function memory8 MB per slot, 40 MB across the slice
Function timeout10 seconds
Request rate60 per minute
Scheduled jobs1
Deploy history1 rollback slot
NoSQL collections2, 20 MB each
SQL databases1, 10 MB
Queues1, up to 500 messages deep
Blobs10, 5 MB each
Secrets5, 1 KB each
Locks100,000 concurrent
Realtime connections50 concurrent
Canvas site50 MB
Log retention24 hours
Backup retention3 days
Deed storageVault 4 KB per entry, 100 entries per identity; Pocket 16 KB per entry

Backbone adds up to 100 MB of data — 40 MB of collections, 50 MB of buckets, 10 MB of database — matching the 100 MB of code the runner volume holds.

The names are yours

The free slice declares what it has, and the slice refuses a write to any collection, bucket, database, queue or route its declaration does not carry. So the grant ships placeholders for you to type over — slot-1 through slot-5, collection-1, bucket-01, database-1, queue-1 — and renaming them is free. Nothing about the free slice is compared by name.

What is bounded is the count and the total of each resource, so the shape is yours too:

  • any number of function slots up to 5, in any sizes that add up to 40 MB
  • up to 2 collections totalling 40 MB, 10 buckets totalling 50 MB, 1 database up to 10 MB
  • one queue, no deeper than 500

Five slots at 8 MB, two at 16 MB, or one at 40 MB are all the same free slice. Open the form with drift slice resize, change the names and sizes, and it stays free at €0 — the price panel shows what the shape would cost as a configured slice, which is not what you are charged. Cross a bound and the refusal names the one you crossed; nothing is silently shrunk to fit.

Rename the slots before you deploy into them.

A deploy naming a route the slice does not declare is refused with 400, so a fresh free slice serves slot-1slot-5 and nothing else until you rename them. Compiled languages need the reshape as well: Go and Rust are refused below a 16 MB booking, so the 8 MB defaults have to be folded into fewer, larger slots first — two at 16 MB, say. Both changes are free.

What a configured slice costs

Four rates price a configured slice, and they land on six lines. Everything else is capped by quota and charged nothing.

Per monthWhy this one is priced
  • Function memory
    Per month
    €0.03 / MiB
    Why this one is priced
    RAM is the density constraint. What each function books is charged, not metered usage.
  • Scheduled job
    Per month
    €0.30
    Why this one is priced
    It fires on a timer even with zero traffic.
  • Realtime connection
    Per month
    €0.01
    Why this one is priced
    A live WebSocket holds RAM on the in-slice hub.
  • Atomic storage
    Per month
    €0.25 / GiB
    Why this one is priced
    Your deployed code and the dependencies it vendors. In practice this is your dependency tree.
  • Backbone storage
    Per month
    €0.25 / GiB
    Why this one is priced
    NoSQL, SQL and blob bytes, summed and charged to the cent.
  • Canvas storage
    Per month
    €0.25 / GiB
    Why this one is priced
    The static sites you upload.

Storage is one rate on three lines, because it is one disk. The split is there so you can see which part of your slice is spending it, and so each part has a cap you set. The three lines always add up to what those bytes cost together: they are apportioned from a single figure rather than rounded one by one, so the parts cannot miss the whole by a cent.

Collections, queues, SQL databases, blob count and secrets are free by count. They appear in the breakdown at €0.00, and you pay for the bytes they hold on the Backbone storage line. There is no base fee.

A function itself is free. You pay for the memory it books and for the disk its deployed artifact holds, and there is nothing left to charge for the fact that it exists. So splitting one function into six costs exactly what the one cost, as long as the memory adds up the same — the bill never asks you to keep your code in fewer, larger pieces than you want to.

Two rules that decide the number

A configured slice has no free allowance of units. The free grant is a whole slice, not a discount subtracted from a configured one. Once a slice is configured it is priced from its first MiB: there is no "first five free".

Every function books its own memory, and there is no default. Each function's row in the slice's shape carries a booking between 8 MB and 256 MB, and the bill is the sum: every MiB on the invoice was asked for by a named function. The smallest bookable function is 8 MB, so the floor for a configured slice with one interpreted function — Python, Node.js, Ruby or PHP — is €0.24/month. A compiled function, Go or Rust, floors at 16 MB instead: it carries a private language runtime per invocation, where the interpreted four share one language server per language. So the same one-function project written in Go floors at €0.48/month, and a booking under 16 MB is refused at deploy rather than served badly. A Canvas-only or Backbone-only slice buys no function, no scheduled job and no realtime connection, so storage is its only priced line, and a small declaration rounds to €0.00.

Book what it costs, not what you guess. That figure is also the function's own pool: its concurrent invocations together stay inside it, so booking more buys both headroom per call and more calls at once. Booking more than you need is paid for; booking less means invocations are refused under load. drift file benchmark measures what a function actually holds and prints what it should book; --apply opens the form with those figures filled in. Size from those rather than from the largest number that looks safe.

What makes a slice free is the grant it fits inside, not the price it computes.

The free shape is not a €0 shape. Priced as a configured slice it comes to €2.06/month — 40 MiB of function memory, a scheduled job, 50 realtime connections and its storage — and it is free because it is the free slice, not because its bill rounds to nothing. So the question is whether your shape fits inside the grant above, not whether it totals zero: two functions at the 8 MB floor fit, and stay free; a sixth slot does not, whatever it costs. drift slice create <name> --free takes the whole grant with no form, and the form tells you which side of the line you are on as you type.