diff --git a/info/pricing.mdx b/info/pricing.mdx
index 705bd88..df4ebed 100644
--- a/info/pricing.mdx
+++ b/info/pricing.mdx
@@ -14,11 +14,20 @@ With Kernel, you only pay for what you use and nothing more. You don't pay for i
## Usage Rates
-| Browser type | Price ($/sec) |
+Kernel bills browser usage by the memory a session uses and its compute type—standard or GPU-accelerated—per GB-hour. The rate is the same on the Developer, Hobbyist, and Start-Up plans.
+
+| Compute type | Price |
| --- | --- |
-| Headful | 0.0001333336 |
-| Headless | 0.0000166667 |
-| Headful + GPU acceleration | 0.0008000016 |
+| Standard | $0.06 / GB-hour ($0.0000166667 / GB-second) |
+| GPU-accelerated | $0.48 / GB-hour ($0.0001333336 / GB-second)—8x the standard rate |
+
+Each browser type has a fixed memory allocation, so you can estimate a session's cost as memory x the rate above:
+
+| Browser type | Memory | Price ($/sec) | Example cost |
+| --- | --- | --- | --- |
+| Headless | 1 GB | 0.0000166667 | ~$0.06 / hour |
+| Headful | 8 GB | 0.0001333336 | ~$0.48 / hour |
+| Headful + GPU acceleration | 6 GB | 0.0008000016 | ~$2.88 / hour |
> Included monthly credits apply to usage costs only.
@@ -95,7 +104,7 @@ If you need higher rate limits, [contact us](https://calendly.com/d/d3tn-5kp-5yt
Only for active runtime. `timeout_seconds` sets an idle auto-delete ceiling, not a billing window. Once a browser goes idle — 5 seconds after the last CDP or Live View activity — it enters Standby Mode and stops accruing usage cost, even if it stays alive until the timeout is reached. Deleting a browser early doesn't lower cost any further (idle time is already free), but it does free up your concurrency slot sooner.
- you pay the standard usage-based price per GB-second while browsers are running. Idle browsers in a pool incur no disk charges—you only pay when a browser is actively in use.
+ you pay the standard rate above ($0.06 / GB-hour) while browsers are running. Idle browsers in a pool incur no disk charges—you only pay when a browser is actively in use.
Note: A browser pool counts toward your concurrency limit whether or not its browsers are currently acquired — a browser pool sized to 40 browsers uses 40 of your limit. Browser pools are available on Start-Up and Enterprise plans.
diff --git a/snippets/calculator.jsx b/snippets/calculator.jsx
index bbeed29..72379ff 100644
--- a/snippets/calculator.jsx
+++ b/snippets/calculator.jsx
@@ -4,8 +4,9 @@ const { Card, Columns } = MintlifyComponents;
export const PricingCalculator = () => {
const defaults = { plan: 'free', browserType: 'headful', avgSessionLength: 30, numSessions: 100 };
const planPrices = { free: 0, hobbyist: 30, startup: 200 };
- const usagePrices = 0.0000166667;
- const browserMultipliers = { headless: 1, headful: 8, gpu: 48 };
+ const standardRatePerGBSecond = 0.0000166667; // $0.06/GB-hour
+ const gpuRatePerGBSecond = standardRatePerGBSecond * 8; // $0.48/GB-hour
+ const browserMemoryGiB = { headless: 1, headful: 8, gpu: 6 };
const [plan, setPlan] = useState(defaults.plan);
const [browserType, setBrowserType] = useState(defaults.browserType);
@@ -43,8 +44,9 @@ export const PricingCalculator = () => {
};
var price = planPrices[plan];
- var multiplier = browserMultipliers[browserType];
- var usageCost = usagePrices * multiplier * numSessions * avgSessionLength;
+ var ratePerGBSecond = browserType === 'gpu' ? gpuRatePerGBSecond : standardRatePerGBSecond;
+ var pricePerSecond = ratePerGBSecond * browserMemoryGiB[browserType];
+ var usageCost = pricePerSecond * numSessions * avgSessionLength;
var includedUsageCredits = 5;
if (plan === 'hobbyist') {
@@ -109,7 +111,7 @@ export const PricingCalculator = () => {
- ${(usagePrices * multiplier).toFixed(8)}/second
+ {browserMemoryGiB[browserType]} GB x ${ratePerGBSecond.toFixed(8)}/GB-sec = ${pricePerSecond.toFixed(8)}/second
{browserType === 'gpu' && (Startup tier required)}