Brat caption generator
Pick a scene, get ten lowercase one-liners you can paste straight into the post. Curated combinations, written by hand — not an AI model, not a random word salad.
Caption studio
pick a scene · generate · copy
Why this is a curated bank, not a chatbot
There is no model behind this page, and that is a deliberate choice rather than a limitation. A caption has to be short, specific and slightly rude to work in this register, and the fastest way to get there is lines that were actually written, then combined per scene. The bank holds roughly 170 finished lines across ten scenes; every press of the button deals you ten of them and keeps track of what you have already seen so repeats stay rare.
The practical consequence: the tool will never surprise you with a sentence it invented, and it will never send your request anywhere. What it can do is get you from a blank caption box to a line you like in about four seconds, which is the job.
How to use it
- Pick the scene that matches the post. The scenes are honest labels — soft launch is for ambiguous couple posts, moving on is for the post you write three weeks later, everyday is the grab bag.
- Press Generate 10 captions. The list redraws and the counter shows how many lines that scene holds.
- Click any line to copy it alone, or Copy all 10 to take the whole batch into your notes and mix them with your own.
- Change the scene and press again if the first batch misses. Ten scenes exist because the right line is usually a scene problem, not a luck problem.
The one editing rule that matters: swap one concrete detail into whichever line you pick. Your street name, your actual drink, the real time you got home. A borrowed structure with your specific detail in it will always beat a pristine line that could belong to anyone.
What the scenes actually contain
| Scene | Tone it aims for |
|---|---|
| Soft launch | Teasing without confirming anything |
| Gym | Self-deprecating discipline |
| Study | Pretending the deadline is fine |
| Night out | Committed to the bit |
| Concert | Devotion with sore feet |
| Travel | Happy to be lost |
| Food | Serious about unimportant things |
| Moving on | Over it, tastefully |
| Work | Employed and sarcastic about it |
| Everyday | The default register |
Best use cases
- The caption you will not delete later. Short, lowercase, no emoji pile — the register this site is built around.
- Reels and TikTok overlays. Every line here fits inside a text card; run the winner through the template maker if you want it as an image instead of text.
- Group chat ammunition. Copy all 10 and let the chat fight over which one is yours.
- Beats for writers. The scenes double as tone references when you are stuck starting a post.
Things it will not do
It will not insult a named person — the mean stuff in this register is aimed at situations, alarms, Mondays and cardio, and the bank stops there on purpose. It will not hashtag for you; hashtags past three read like advertising in this aesthetic anyway. And it will not pretend to know your week: the lines are built to be edited, not shipped blind.
FAQ
Is this AI?
No. Every line in the bank was written for this page, and the generator only shuffles and deals. There is no model, no API call and nothing leaves your browser.
Why did I see a line twice?
The tool avoids repeating within your recent history, but each scene is a finite pool. Switch scenes or edit the line — the second one is the point of the tool.
Can I use these commercially?
Yes. The lines are yours, including for paid content. What you should not do is lift them into a product and claim the bank as your own work.
Will you add more scenes?
Scene suggestions go to the support email. The bank grows by request, which is how half of the current scenes got here.
Does the counter mean anything?
It shows the size of the current scene’s pool so you know how much room the shuffle has. Small pool plus many presses equals repeats.
Every tool on this page runs inside your browser. Nothing you type is sent to a server, stored in an account, or logged — there is no upload step in the code. See the privacy policy for the one analytics service used and what it does not collect.