Free runs the full pipeline. complexity is unbounded and every preset is available. What you pay for is applying protection surgically, per region and per file, plus environments where source can never leave, and volume: Pro builds run in AfterPack's cloud and are metered by the megabyte.
Free is enough to obfuscate your code. The real questions are whether you need to mark specific regions for harder treatment, run where a third party can't touch your source, or push more JavaScript through the cloud engine than Free's allowance covers.
Capability matrix
| Capability | Free $0 Forever | Indie $49 Per month | Team $159 Per month | Studio $299 Per month | Enterprise Custom Contact us |
|---|---|---|---|---|---|
All structural transforms Renaming, encoding, control-flow, constants, inflation. The two Pro hardening transforms are a separate row. | |||||
Unlimited complexity complexity is unbounded on every tier. | |||||
Plugin nudge after a CLI run The CLI reads package.json and points you at the matching plugin for Next.js, Vite, webpack, Rollup or esbuild. It never edits your config, and the build path is always a required argument. | |||||
Audit command npx afterpack@latest audit <url> — find exposed secrets and weak protection on a live URL. | |||||
Escape-hatch directives /* @afterpack skip */ on a region. In a Free build a directive is an error; use paths.exclude or identifiers.reserved instead. | Pro | Pro | Pro | Pro | |
Reserved identifiers identifiers.reserved: keep specific names, for the whole build or per glob. | |||||
Source maps Generate locally; keep them out of production. | |||||
Per-file rules Different settings per glob — surgical protection. | Pro | Pro | Pro | Pro | |
Pro amplifying directives preset=hard or preset=extreme on a region. | Pro | Pro | Pro | Pro | |
Hardening transforms transforms.selfIntegrity and transforms.comparisonHardening. Global settings, off by default; a Free build ignores both. | Pro | Pro | Pro | Pro | |
Cross-module obfuscation (planned) Imports/exports renamed; smaller bundles. | Pro | Pro | Pro | Pro | |
Pro destructive transforms (planned) Boundary-destroying fusion on marked regions. | Pro | Pro | Pro | Pro | |
Managed source maps (planned) Encrypted off-site storage; symbolicate production stack traces. | Pro | Pro | Pro | Pro | |
Confidential Computing deployment (on request) Attested enclave in your own cloud account. Scoped during onboarding, not self-serve. | Enterprise | ||||
Dedicated support A direct chat channel with the engineering team. | Studio+ | Studio+ | |||
On-prem / double-blind install (on request) Sealed signed binary in your perimeter. Scoped during onboarding, not self-serve. | Enterprise |
Free is structurally strong
Free runs the structural transform catalog at whatever preset you set, everything except the two Pro hardening transforms (selfIntegrity and comparisonHardening). That already spans both polynomial reversal classes, and what the engine does to your code does not change between tiers.
| Pro adds | What it does |
|---|---|
| Surgical constant destruction | /* @afterpack preset=extreme */ raises a region to complexity target 80 with the string floor forced on, so its literals are encoded rather than shipped in cleartext. |
| Anti-tamper | transforms.selfIntegrity.enabled makes a tampered build break instead of running. Global and off by default. |
| Surgical targeting | Per-region directives and per-file rules that raise protection exactly where it matters. |
Cross-module entanglement, boundary-destroying fusion and managed source maps are not available. See Pro.
Pricing
| Tier | Monthly | Yearly | Pro builds / month | Projects | Overage |
|---|---|---|---|---|---|
| Free | $0 forever | n/a | 10 MB | 2 | n/a |
| Extra MB | $5 one-time | n/a | +20 MB, never expires | n/a | n/a |
| Indie | $49/mo | $490/yr | 500 MB | 3 | $0.15/MB |
| Team | $159/mo | $1,590/yr | 3 GB | 5 | $0.12/MB |
| Studio | $299/mo | $2,990/yr | 8 GB | unlimited | $0.10/MB |
| Enterprise | Custom | Custom | Custom | Custom | Custom |
A yearly plan is 10 months' price for 12 months, two months free. Indie and Team include a 14-day free trial on the monthly plan, once per workspace — a yearly plan is prepaid up front, so it never carries one, and Studio has no trial either way.
There is more than one way to buy Pro. Extra MB is a one-time $5 purchase of 20 MB that any workspace can make, Free ones included. It never expires, never auto-renews, and buying one does not start a subscription. A project that ships a release every few weeks can run on top-ups indefinitely. At volume, a plan is cheaper per MB.
Free does not expire. The local engine is unmetered and unlimited: run npx afterpack@latest on as much code as you like, forever, with no account. The 10 MB is the cloud Pro allowance a registered account gets so you can try the surgical features on real code.
What a megabyte means here
The meter is MB of JavaScript the cloud engine processes, not files, not builds, not requests.
- 1 MB = 10⁶ bytes (decimal), counted in exact bytes and displayed to 0.1 MB.
- A build is metered once, against the input it actually processes.
- Draw order is plan allowance, then Extra MB, then overage. A single build can span all three.
- The Free allowance refills on a rolling 30-day window. A subscription's allowance refills on its billing cycle instead.
- Extra MB never expires and does not auto-renew. It sits behind the plan allowance and is only drawn once the allowance is empty.
For scale, a typical production SPA bundle is a few hundred KB to a couple of MB, so Indie's 500 MB covers roughly a few hundred cloud builds a month.
Overage, and the cap that protects you
Overage is on by default on a paid plan, so running out of allowance mid-sprint does not break your CI. It accrues per MB at the rate in the table above and is added to your next invoice. Rounding always goes your way.
Three things bound it:
- Your spend cap. Settable by the workspace owner on the billing page.
0turns overage off entirely (builds then fail closed when the pools run dry); unset means no user cap. - A house cap. A new workspace is capped at 2× the monthly base ($98 Indie, $318 Team, $598 Studio) until two invoices are paid.
- The effective cap is the lower of the two. The dashboard shows the cap that actually applies.
Overage never accrues during a trial, on a past-due subscription, or on the Free plan. On those, a build that outruns the prepaid pools fails closed instead of billing you.
An over-quota batch is rejected before any file is dispatched, so a build is never partly processed or partly billed. See Exit codes & fail-closed.
Yearly plans, in detail
A yearly plan is billed as two charges: most of the year's price upfront when the term starts, then $1 a month for the remaining eleven months. Creem cannot bill a $0 cycle, so that $1 charge keeps the subscription alive, and it doubles as the invoice that collects overage monthly for the whole term. The total across the year is the same price shown above, just split differently.
Cancelling any plan, yearly or monthly, keeps your tier and included allowance until the paid-through date, but turns overage off immediately: billing is trailing, so a cancelled subscription's final cycle never gets another invoice to collect overage on. On a yearly plan, the $1 monthly charges keep billing until the term ends; nothing is charged after that.
Changing plan is never a re-subscribe, and there are only two outcomes.
If you are on a yearly plan, any change is scheduled for your next annual renewal — a higher tier, a lower one, or a move back to monthly billing. You bought a year, so you keep the plan you paid for, at the tier you paid for, until the year is up; nothing is charged today, and nothing about your current plan changes before then. That is also why the switch is not instant: a year paid up front cannot be un-bought mid-term, and applying the change today would either forfeit the months you already paid for or charge you a second year.
If you are on a monthly plan, moving up applies immediately and resets your allowance to the new plan's. Moving up to another monthly plan prorates the difference and charges it today; moving up to a yearly plan charges nothing today — your next invoice is simply the new plan's first yearly invoice, because prorating a year paid up front would collect it twice. Moving down a monthly plan is scheduled for your next renewal, so you keep the tier you already paid for until then, with no charge either.
You can cancel a scheduled change any time before it lands.
How billing is organised
- Billing attaches to a workspace, not to an individual. A workspace owns one subscription, one allowance pool, its projects, and its API keys. You can belong to several; each bills separately. Roles are owner (billing + delete), admin (members, keys, projects), member (use).
- No per-seat pricing. Every tier, Free included, has unlimited workspace members. What the tier bounds is projects and MB, never people.
- Creem is the merchant of record. It handles payment, tax, and VAT, and is billing infrastructure only. It never touches your source code. Manage the payment method, invoices, or cancel from the Creem customer portal, linked from the dashboard billing page.
- AfterPack's monthly Statement email summarizes billing; it is separate from your invoice. It covers plan, period, base, overage, and Extra MB used. The official VAT invoice is the Creem portal document.
- Cancelling keeps what you paid for. A cancelled subscription stays entitled at its tier until the paid-through date — the annual date on a prepaid year — then reverts to Free, and you can resume any time before it. Overage turns off immediately, on any interval: the rail bills trailing, so a cancelled subscription's final cycle never gets another invoice to collect overage on.
- A failed payment gets a 7-day grace window, with the workspace still entitled. After it expires, Pro builds fail closed instead of downgrading to Free output. Your local Free builds are unaffected throughout.
Next
- Dashboard: the meter, the key lifecycle, and how a subscription behaves day to day.
- Enterprise: the Confidential Computing and on-prem shapes, in detail.
- Concepts: reversal classes and why there are no peelable layers.
- Best practices: which lines to mark, on which tier.
- Pro: the capability delta in detail, feature by feature.
- Deployment modes: where each tier's engine actually runs.
- Directives: the region markers the surgical tiers unlock.