{"course":{"slug":"choosing-your-tools","title":"Choosing and Using the Tools","url":"https://addaly.com/learn/choosing-your-tools","level":"beginner","track":"work"},"lesson":{"slug":"tokens-as-the-unit","title":"The unit you are billed in","url":"https://addaly.com/learn/choosing-your-tools/tokens-as-the-unit","position":31,"of":76,"minutes":8,"answer":"You are billed per token, output usually costs three to five times input, hidden thinking counts as output, and non-Latin scripts can take several times more tokens for identical content.","keyIdea":"You are billed per token, output usually costs three to five times input, hidden thinking counts as output, and non-Latin scripts can take several times more tokens for identical content."},"body":{"format":"markdown","text":"## Why the bill is not in words\n\nModels do not read letters or words. Text is cut into **tokens**: chunks that are often a whole common word, sometimes a fragment, sometimes a single character. `unbelievable` might become `un`, `bel`, `iev`, `able`. A space usually travels with the word that follows it. Punctuation is often its own token.\n\nThe rules of thumb, for English:\n\n```\n1 token   ~= 4 characters  ~= 0.75 words\n1,000 tokens ~= 750 words  ~= 1.5 pages of prose\n1,000,000 tokens ~= a 3,000-page book\n```\n\nThese are averages and they hold well for ordinary English prose. They hold badly for code, for tables of numbers, and for anything that is not English.\n\n## Input and output are priced differently\n\nThis is the part people miss and it changes decisions.\n\nOutput tokens typically cost **three to five times** input tokens. The reason is mechanical: input can be processed in parallel in one pass, while each output token has to be generated one at a time, each one requiring a full pass through the model.\n\n```\na model at $3 per million in, $15 per million out\n\nreading a 50-page report (30k tokens) and writing 300 words (400 tokens)\n   input   30,000 / 1,000,000 x $3   = $0.090\n   output     400 / 1,000,000 x $15  = $0.006\n                                       -------\n                                       $0.096\n\nwriting a 5,000-word article from a short brief\n   input      200 / 1,000,000 x $3   = $0.0006\n   output   6,700 / 1,000,000 x $15  = $0.100\n```\n\nAlmost the same price, opposite shapes. If your work is reading long things and answering briefly, you are buying input and should care about input price. If it is generating long documents, output price is your bill. Comparison pages that quote one number are quoting the wrong one half the time.\n\n## Thinking tokens are output tokens\n\nA thinking-mode reply generates hidden reasoning before the visible answer, and that reasoning is billed at the output rate. A 300-word answer preceded by 4,000 words of thinking costs roughly fourteen times the answer alone. This is the single largest surprise on API bills, and it is invisible in the chat window.\n\n## Non-English text costs more\n\nTokenisers are fitted mostly to Latin-script text. The same meaning in Devanagari, Bangla, Thai, Amharic or Georgian can take two to four times as many tokens, because the tokeniser has to fall back on shorter pieces.\n\nThree consequences at once: you pay several times more for the same content, you fit proportionally less into the context window, and generation takes longer because there are more tokens to produce. Chinese and Japanese sit in between: dense in characters, and many characters are single tokens.\n\nThis is a real and rarely acknowledged inequity in how these systems are priced, and it is worth knowing about rather than being puzzled by a bill.\n\n## Counting them yourself\n\nYou do not have to estimate. Every API response reports exactly what you used:\n\n```python\nr = client.chat.completions.create(model=M, messages=msgs)\nprint(r.usage.prompt_tokens, r.usage.completion_tokens)\n```\n\nFor counting before you send, the free **tiktoken** library counts for OpenAI-family tokenisers, and **transformers** loads the tokeniser for any open model:\n\n```python\nimport tiktoken\nenc = tiktoken.get_encoding(\"o200k_base\")\nlen(enc.encode(open(\"contract.txt\").read()))     # exact, before you spend\n```\n\nSeveral providers also offer a free token-counting endpoint. Run your own text through one once, in your own language. The number tells you more about your future bills than any pricing page.\n\n## What a context window costs you per turn\n\nOne arithmetic worth doing once. A model with a 200,000-token window, filled, costs 200,000 input tokens on every single request that uses it. At $3 per million that is $0.60 a message, and a twenty-message conversation over that document is $12 before the model has written a word.\n\nThis is why long-context work is where people's API bills go, and why the fix is almost never a cheaper model. It is sending less: extract the relevant sections, start fresh conversations, and let prefix caching cover the part that has to be resent every time.\n\n> Figure: The same sentence, four scripts. Bars (tokens for identical content): English, Latin script 12; Chinese 17; Hindi in Devanagari 41; Amharic in Ethiopic script 46. Tokenisers are fitted mostly to Latin-script text, so everything else falls back on shorter pieces. Three consequences at once: you pay several times more for identical content, you fit proportionally less into the window, and generation is slower because there are more tokens to produce.\n\n## The one to hold on to\n\nCost is driven by three things in this order: **how much you send**, **how much you ask it to write**, and **which model you send it to**. Not by how hard the question is. A one-line question with a 300-page attachment costs a hundred times a difficult question typed on its own, and that ordering surprises almost everyone the first time they see their own numbers."},"check":{"question":"Two jobs on the same model: reading a 50-page report and replying in 300 words, or writing a 5,000-word article from a two-line brief. Why do they cost about the same?","options":[{"text":"Both consume roughly the same total number of tokens once input and output are added together.","correct":false,"tempting":"Would make the totals equal by coincidence, but 30,400 tokens against 6,900 is a fourfold difference in count."},{"text":"The big input is billed at the cheap rate; the long output at the rate several times higher.","correct":true},{"text":"Providers price by request rather than strictly by volume, which flattens costs across differently shaped jobs.","correct":false,"tempting":"Assumes per-request pricing that no major API uses, where input and output tokens are metered separately."},{"text":"Long inputs are compressed by the provider before processing, so a 50-page report is billed as far fewer tokens.","correct":false,"tempting":"Imagines a compression discount; long inputs are billed in full, and caching only helps when the same text is sent again."}]},"prev":{"slug":"paying-or-not","title":"When paying is worth it","url":"https://addaly.com/learn/choosing-your-tools/paying-or-not"},"next":{"slug":"estimating-a-job","title":"Costing a job before you run it","url":"https://addaly.com/learn/choosing-your-tools/estimating-a-job"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'The unit you are billed in', in Choosing and Using the Tools. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/choosing-your-tools/tokens-as-the-unit (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"The unit you are billed in","courseTitle":"Choosing and Using the Tools","module":{"index":4,"slug":"what-it-costs","title":"What it actually costs"},"answer":null,"keyIdea":"You are billed per token, output usually costs three to five times input, hidden thinking counts as output, and non-Latin scripts can take several times more tokens for identical content.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"bars","unit":"tokens for identical content","title":"The same sentence, four scripts","series":[{"label":"English, Latin script","value":12},{"label":"Chinese","value":17},{"label":"Hindi in Devanagari","value":41,"highlight":true},{"label":"Amharic in Ethiopic script","value":46}],"caption":"Tokenisers are fitted mostly to Latin-script text, so everything else falls back on shorter pieces. Three consequences at once: you pay several times more for identical content, you fit proportionally less into the window, and generation is slower because there are more tokens to produce."},"alt":"Figure: The same sentence, four scripts. Bars (tokens for identical content): English, Latin script 12; Chinese 17; Hindi in Devanagari 41; Amharic in Ethiopic script 46. Tokenisers are fitted mostly to Latin-script text, so everything else falls back on shorter pieces. Three consequences at once: you pay several times more for identical content, you fit proportionally less into the window, and generation is slower because there are more tokens to produce."}},"blocks":[{"t":"h2","id":"why-the-bill-is-not-in-words","runs":[{"text":"Why the bill is not in words"}]},{"t":"p","runs":[{"text":"Models do not read letters or words. Text is cut into "},{"text":"tokens","b":true},{"text":": chunks that are often a whole common word, sometimes a fragment, sometimes a single character. "},{"text":"unbelievable","code":true},{"text":" might become "},{"text":"un","code":true},{"text":", "},{"text":"bel","code":true},{"text":", "},{"text":"iev","code":true},{"text":", "},{"text":"able","code":true},{"text":". A space usually travels with the word that follows it. Punctuation is often its own token."}]},{"t":"p","runs":[{"text":"The rules of thumb, for English:"}]},{"t":"code","lang":"","label":"Text","text":"1 token   ~= 4 characters  ~= 0.75 words\n1,000 tokens ~= 750 words  ~= 1.5 pages of prose\n1,000,000 tokens ~= a 3,000-page book"},{"t":"p","runs":[{"text":"These are averages and they hold well for ordinary English prose. They hold badly for code, for tables of numbers, and for anything that is not English."}]},{"t":"h2","id":"input-and-output-are-priced-differently","runs":[{"text":"Input and output are priced differently"}]},{"t":"p","runs":[{"text":"This is the part people miss and it changes decisions."}]},{"t":"p","runs":[{"text":"Output tokens typically cost "},{"text":"three to five times","b":true},{"text":" input tokens. The reason is mechanical: input can be processed in parallel in one pass, while each output token has to be generated one at a time, each one requiring a full pass through the model."}]},{"t":"code","lang":"","label":"Text","text":"a model at $3 per million in, $15 per million out\n\nreading a 50-page report (30k tokens) and writing 300 words (400 tokens)\n   input   30,000 / 1,000,000 x $3   = $0.090\n   output     400 / 1,000,000 x $15  = $0.006\n                                       -------\n                                       $0.096\n\nwriting a 5,000-word article from a short brief\n   input      200 / 1,000,000 x $3   = $0.0006\n   output   6,700 / 1,000,000 x $15  = $0.100"},{"t":"p","runs":[{"text":"Almost the same price, opposite shapes. If your work is reading long things and answering briefly, you are buying input and should care about input price. If it is generating long documents, output price is your bill. Comparison pages that quote one number are quoting the wrong one half the time."}]},{"t":"h2","id":"thinking-tokens-are-output-tokens","runs":[{"text":"Thinking tokens are output tokens"}]},{"t":"p","runs":[{"text":"A thinking-mode reply generates hidden reasoning before the visible answer, and that reasoning is billed at the output rate. A 300-word answer preceded by 4,000 words of thinking costs roughly fourteen times the answer alone. This is the single largest surprise on API bills, and it is invisible in the chat window."}]},{"t":"h2","id":"non-english-text-costs-more","runs":[{"text":"Non-English text costs more"}]},{"t":"p","runs":[{"text":"Tokenisers are fitted mostly to Latin-script text. The same meaning in Devanagari, Bangla, Thai, Amharic or Georgian can take two to four times as many tokens, because the tokeniser has to fall back on shorter pieces."}]},{"t":"p","runs":[{"text":"Three consequences at once: you pay several times more for the same content, you fit proportionally less into the context window, and generation takes longer because there are more tokens to produce. Chinese and Japanese sit in between: dense in characters, and many characters are single tokens."}]},{"t":"p","runs":[{"text":"This is a real and rarely acknowledged inequity in how these systems are priced, and it is worth knowing about rather than being puzzled by a bill."}]},{"t":"h2","id":"counting-them-yourself","runs":[{"text":"Counting them yourself"}]},{"t":"p","runs":[{"text":"You do not have to estimate. Every API response reports exactly what you used:"}]},{"t":"code","lang":"python","label":"Python","text":"r = client.chat.completions.create(model=M, messages=msgs)\nprint(r.usage.prompt_tokens, r.usage.completion_tokens)"},{"t":"p","runs":[{"text":"For counting before you send, the free "},{"text":"tiktoken","b":true},{"text":" library counts for OpenAI-family tokenisers, and "},{"text":"transformers","b":true},{"text":" loads the tokeniser for any open model:"}]},{"t":"code","lang":"python","label":"Python","text":"import tiktoken\nenc = tiktoken.get_encoding(\"o200k_base\")\nlen(enc.encode(open(\"contract.txt\").read()))     # exact, before you spend"},{"t":"p","runs":[{"text":"Several providers also offer a free token-counting endpoint. Run your own text through one once, in your own language. The number tells you more about your future bills than any pricing page."}]},{"t":"h2","id":"what-a-context-window-costs-you-per-turn","runs":[{"text":"What a context window costs you per turn"}]},{"t":"p","runs":[{"text":"One arithmetic worth doing once. A model with a 200,000-token window, filled, costs 200,000 input tokens on every single request that uses it. At $3 per million that is $0.60 a message, and a twenty-message conversation over that document is $12 before the model has written a word."}]},{"t":"p","runs":[{"text":"This is why long-context work is where people’s API bills go, and why the fix is almost never a cheaper model. It is sending less: extract the relevant sections, start fresh conversations, and let prefix caching cover the part that has to be resent every time."}]},{"t":"h2","id":"the-one-to-hold-on-to","runs":[{"text":"The one to hold on to"}]},{"t":"p","runs":[{"text":"Cost is driven by three things in this order: "},{"text":"how much you send","b":true},{"text":", "},{"text":"how much you ask it to write","b":true},{"text":", and "},{"text":"which model you send it to","b":true},{"text":". Not by how hard the question is. A one-line question with a 300-page attachment costs a hundred times a difficult question typed on its own, and that ordering surprises almost everyone the first time they see their own numbers."}]}],"check":{"question":[{"text":"Two jobs on the same model: reading a 50-page report and replying in 300 words, or writing a 5,000-word article from a two-line brief. Why do they cost about the same?"}],"options":[{"text":[{"text":"Both consume roughly the same total number of tokens once input and output are added together."}],"correct":false,"tempting":[{"text":"Would make the totals equal by coincidence, but 30,400 tokens against 6,900 is a fourfold difference in count."}]},{"text":[{"text":"The big input is billed at the cheap rate; the long output at the rate several times higher."}],"correct":true,"tempting":null},{"text":[{"text":"Providers price by request rather than strictly by volume, which flattens costs across differently shaped jobs."}],"correct":false,"tempting":[{"text":"Assumes per-request pricing that no major API uses, where input and output tokens are metered separately."}]},{"text":[{"text":"Long inputs are compressed by the provider before processing, so a 50-page report is billed as far fewer tokens."}],"correct":false,"tempting":[{"text":"Imagines a compression discount; long inputs are billed in full, and caching only helps when the same text is sent again."}]}],"order":[0,3,1,2],"why":null},"prev":{"slug":"paying-or-not","title":"When paying is worth it","minutes":8},"next":{"slug":"estimating-a-job","title":"Costing a job before you run it","minutes":8}}}