Five vibes, each a set of shapes
The vibe tells the tool which shapes to walk: professional announces, casual chats, playful winks, inspirational pushes, and minimal says it in three words. Each caption is a template with your words threaded through - a shape the page can name, not a guess about your brand voice.
A batch walks the shapes in order instead of sampling them, so eight captions give you eight different moves rather than eight variations of one. The middle column of the table names the move, which is the reusable part when none of the lines is quite right.
Hashtags: drawn, deduped, capped
The hashtag tail is built from your own words, lowercased into single tags, case-folded so the same word never appears twice, and capped hard at 30 - the ceiling Instagram publishes for a single caption. Ask for more and the page gives you the ceiling, never beyond it.
The tail is appended once at the end of the list, not to every caption, because a wall of tags under each line would make the drafts impossible to read. The numbers field sets how many you want; zero keeps the captions tag-free.
The platform sets the guidance, not the words
A caption is a caption; the platform field therefore does not change the copy. What it changes is the printed guidance: the limit for the platform you pick (X 280, Instagram and TikTok 2,200, LinkedIn 3,000, Facebook 63,206) and the table’s character column, so the comparison happens where it belongs - in your head, before you post.
The limits are the ones the platforms published when this page was last reviewed and they change without notice. Treat the numbers as a starting point, and the page says exactly that rather than pretending to live-check them.
Every word stays in the tab
Keywords, platform, vibe, count, hashtag count, seed and file name are all declared noUrl: none of them rides the share link, the address bar, the copied summary or the print stamp. The captions appear only in the box, the table and the two downloads you ask for.
There is no analytics and no network call anywhere - a tested invariant of the whole site. A page that could be holding an unannounced post idea must be able to promise that idea stayed in the tab.
Why a repeatable list beats a fresh one
The generator is seeded and the seed is printed beside the list, exactly so a draft can be reproduced. Paste the same seed and the same words and the same captions come back, which is what makes the page usable for work: you can hand a colleague the seed, edit one caption by hand, and regenerate the rest without losing the shape you chose.
The list also stops rather than repeats. Each word can only wear so many shapes, and when they run out the page says so and hands over what it made instead of padding the count with near-duplicates. A list of twelve that admits it is twelve is more useful than thirty lines where eighteen are the same joke twice.
What the page will not do is decide what to post. It writes from the words you typed, so a caption can only be as specific as its input: "bakery" produces lines about bakeries in general, while "sourdough, Saturday market, first batch" produces lines that could only be about that Saturday.