Most prompts are bloated, and the fix is easier than most teams expect. Most teams treat a system prompt like a diary. Every bug gets a new line, every edge case gets another warning, and nobody ever deletes anything. A trimmed prompt does the same job for fewer tokens, and it usually runs faster too.
A post on r/PromptEngineering (u/behrouzbk) listed the patterns that keep showing up in real system prompts. The community added a few more. Here is the whole list, with fixes you can apply today.
The key idea
Every token in your system prompt is billed on every single call. A 500-token prompt that handles 100,000 requests a month is 50 million input tokens before anyone has typed a word. Small trims add up fast. Cut just 100 tokens from that prompt and you save 10 million input tokens every month, without touching a single feature. Shorter prompts also leave more room in the context window for the things that matter, like user input and retrieved documents, and they give the model fewer chances to latch onto a stray instruction that no longer applies.
The old way vs. the new way
The old way: You write the prompt, it works, you ship it. When something breaks, you bolt on one more instruction. Months later the prompt is a pile of patches, and nobody knows which lines still matter. A new teammate opens it, is afraid to delete anything, and adds their own patch on top. The pile keeps growing.
The new way: You audit the prompt like code. You look for waste, cut it, and test that the output didn’t change. The prompt gets shorter and the behavior stays the same. Think of it as a refactor: no new features, just cleaner structure and a smaller bill. Teams that do this once a quarter tend to find that a surprising share of their prompt was doing nothing at all.
The five leaks to look for
- 🔍 Pretty-printed JSON. Indentation and line breaks cost tokens. If you paste a schema or sample data into your prompt, minify it. The model reads compact JSON just fine. A schema with deep nesting can waste dozens of tokens on whitespace alone.
- 🔍 Repeated instructions. “Respond in JSON” at the top and again at the bottom. Pick one spot and say it once. If you worry the model will forget, put the rule in the most prominent place rather than repeating it everywhere.
- 🔍 Duplicate lines. These are leftovers from editing over time. Someone added a rule, someone else added the same rule in different words. Read the prompt top to bottom and ask of each line, “Is this already covered above?”
- 🔍 Filler. “I would like you to please…” and “Thanks in advance!” The model doesn’t care about manners, and the token counter definitely doesn’t. One commenter said inherited prompts often read like an email to grandma. That’s exactly the vibe to cut. Replace “I would like you to please summarize the following text” with “Summarize the following text.” Same result, fewer tokens.
The fifth leak is the big one: long examples. They are often the single biggest cost in the whole prompt. Keep one or two sharp examples instead of six similar ones. If your examples all show the same pattern, the extra four are just repeating the lesson. Choose examples that cover different cases, such as one normal input and one tricky edge case.
One extra trap from the comments
Another commenter pointed out examples that contradict the rules. Say the rule is “max 3 bullets” but the example shows 5. The model tends to follow the example, so your rule becomes dead weight and the prompt becomes confusing. When you trim, check that your examples actually obey your own rules. A quick way to catch this is to read each rule, then look at each example and ask whether it passes.
Practical steps
- Copy your current system prompt into a text file and count the tokens. That’s your baseline.
- Run a find on repeats. Search for any instruction that appears twice. Keep the clearest version.
- Strip the politeness. Delete “please,” “kindly,” “I would like you to,” and any sign-off.
- Minify any JSON you embed. Same data, fewer tokens.
- Shrink your examples. Cut to the best one or two, and make sure they follow every rule you wrote.
- Test before and after. Run the same 10 to 20 inputs through both versions and compare outputs. If nothing meaningful changed, ship the short one. Include a few awkward inputs, like empty messages or very long ones, since that is where trimmed prompts tend to break first.
The original poster also built a free offline tool that scans a prompt for these patterns and shows the dollar savings for each fix. In their screenshot, one prompt dropped from 76 to 44 tokens, a 42% cut. The link was shared in the comments of the original thread. You can also do all of this by hand with a token counter and ten minutes.
Your turn
Pull up the longest system prompt you own and hunt for just one leak from the list. Cut it, test it, and see what happens to your token count. Then tell us in the comments: what else bloats your prompts? I’m betting there’s a sixth leak out there that none of us have named yet!
Frequently Asked Questions
Q: Can I minify the JSON in my prompt without breaking the output?
Yes, for the data you feed in. Minify input payloads, since the model reads them fine and you save tokens on every call. Keep any output example formatted the way you want the answer back, because minified JSON inside an example can push the model to answer in minified JSON too.
Q: What else quietly bloats a prompt over time?
Examples that contradict the rules are the worst offender. If the rule says ‘max 3 bullets’ and the example shows 5, the model follows the example and the rule becomes dead weight. Also check for instructions about features you removed months ago, like PDF uploads in a flow that can no longer take files, and audit them after every product change.
Q: Do long persona backstories actually help?
Usually not much. Lines like ‘you are a world-class expert with 20 years of experience’ tend to change very little in the output while costing tokens on every call. Spend that space on the format rules and the edge cases the model actually gets wrong.
Q: Should I strip ‘please’ and ‘thank you’ from my prompts?
The filler is harmless for quality, but it adds up across thousands of calls, so it is a fair cut. The bigger savings usually come from duplicates. If the same rule was written three ways after three different bugs, merge it into one clear line.
Patterns I keep finding in real system prompts:
by u/behrouzbk in PromptEngineering