Same meaning, very different cost
CJK languages — Korean, Japanese, Chinese — typically cost 2-3x more tokens per equivalent semantic content than English. The reason is mundane: most BPE tokenizers were trained on English-heavy corpora, so CJK characters get fragmented more aggressively. A single Hangul syllable can fragment into 2-4 tokens.
For a bilingual product, that asymmetry compounds across long sessions: your Korean users effectively pay 2-3x the API bill for the same conversation length. Either pre-budget for it or use a tokenizer-aware pricing model. Pretending it does not exist is the common, expensive mistake.
Code is expensive too
Source code is denser than prose because the tokenizer rarely sees the same identifier twice. A function name like handleAuthenticationCallback can fragment into 4-6 tokens, repeated everywhere it is called. Long descriptive variable names burn budget at every reference site.
Practical tactics
If cost matters, prefer common, short variable names in code you send to the model — userId tokenizes more efficiently than theCurrentlyAuthenticatedUserIdentifier. Strip unnecessary whitespace and trailing comments before bulk uploads. For CJK, consider sending the original-language source plus a short English summary instead of full bilingual content twice.