CodexHowSupport Us

Comparing Model Cost Before, Not After Migrating

The single most avoidable cost mistake this site sees isn't a wrong number — it's a right comparison run at the wrong time, after a migration has already shipped rather than before it was decided on. By the time a post-migration bill reveals a cost increase, the decision has already been made, deployed, and is now something to walk back rather than something to have gotten right the first time.

Why "after" is strictly worse than "before" here

A cost comparison run before a migration is a genuine decision input — it can change which model you actually choose, or whether you migrate at all. The identical comparison run after the migration has already shipped is, at best, a confirmation of a decision already made and, at worst, an unpleasant discovery that arrives too late to prevent anything, requiring a second migration to undo the first. The comparison itself doesn't change; only whether it can still influence anything does.

What a proper before-migration comparison actually requires

A real comparison needs your workload's actual token shape — representative input and output counts, not a rough guess — priced against both the current model and the migration target, at the service tier you actually intend to run under, including any long-context repricing that applies to either side if your workload runs large. A comparison that skips any of these specifics in favor of a quick glance at headline per-token prices is a weaker signal than it looks like, since headline prices alone routinely miss exactly the details — a new cache-write charge, a different rate-limit group, a repricing threshold — that end up mattering most.

The migration-specific gotchas worth checking explicitly

Certain changes recur often enough across this site's migration guides to be worth a standing checklist: does the target model introduce a cache-write charge the source model didn't have, does the rate-limit group actually change or only appear to, is the long-context repricing rule published for both models or only one, and does the target model even offer every service tier the source model does. Any one of these, missed, can turn a comparison that looked favorable on headline price into a real cost surprise once the workload's actual behavior interacts with a detail nobody checked.

Running the comparison against a representative sample, not a best case

It's worth resisting the temptation to build a cost comparison from an unusually favorable example — instead, sample real, typical requests from actual production traffic if you have it, or a deliberately representative synthetic example if you don't, so the comparison reflects what will actually happen at scale rather than a best-case scenario that flatters whichever outcome you were already leaning toward.

Deciding on a threshold for "worth migrating" before you see the number

It's easy to unconsciously move the goalposts once you see a comparison's result — deciding, after the fact, that a smaller-than-hoped saving is "still worth it" for reasons that weren't part of the original case for migrating. Setting a rough threshold for what would actually justify the migration before running the comparison, and holding yourself to it, produces a more honest decision than evaluating the result against criteria that quietly shift to match whatever answer you got.

Documenting the comparison as part of the migration record

Whatever comparison actually informed a migration decision is worth keeping as part of the record of that decision — not just the final verdict, but the actual inputs and assumptions used to reach it. Six months later, when someone's trying to understand why a particular model was chosen, a documented comparison is far more useful than a vague recollection that "the numbers looked better," and it gives a future re-evaluation a real baseline to compare against rather than starting from nothing.

Why this is worth insisting on as a standing practice, not a one-off habit

None of this is complicated in isolation — it's the same estimate-then-verify discipline this site recommends everywhere else, applied specifically to the moment before a migration rather than after. The value isn't in any single instance of doing it carefully; it's in making "compare before, not after" a standing practice every time a migration is on the table, so it happens by default rather than depending on someone remembering to do it under time pressure.

What to do if you've already migrated without comparing first

If a migration already happened without this comparison, running it now — after the fact — is still worth doing, even though the ideal moment to influence the decision has passed. A post-hoc comparison can still catch an unfavorable migration in time to reverse it before too much has been spent under the wrong assumption, and it's a far better time to find out than continuing to run the migrated workload indefinitely on the hope that the numbers probably worked out fine.

Building this into whatever process triggers a migration in the first place

The most reliable way to make this a genuine standing practice, rather than a good intention that gets skipped under deadline pressure, is tying it to whatever already triggers a migration decision — a new model release, a recurring cost review, an upcoming deprecation. If a cost comparison is a required, named step in that existing process rather than a separate thing someone has to remember to do purely on their own initiative, it happens far more reliably, and far more consistently, across every future migration this same recurring process eventually goes on to trigger.

Verified 2026-08-09 against CodexHow facts module (src/data/facts/) — see /about/#accuracy.