Social Caption Generator

Global tools

A caption is the paragraph under the picture - the part that decides whether the scroll stops. This page writes drafts of that paragraph from the words you care about, in one of five vibes: professional, casual, playful, inspirational or minimal. Each caption is named by the shape that made it, because the shape is what you can reuse once you know which voice fits your feed.

What the post is about, one word or phrase per line, or separated by commas. Eight at most: more than that turns the answer into permutations instead of ideas.

The platform does not change the caption - it sets the honest guidance printed under the list, so you can compare each caption against the limit before you post.

The vibe picks the shapes: professional announces, casual chats, playful winks, inspirational pushes, and minimal says it in three words.

Up to 30. When the shapes run out before the count is reached, the list stops short and says how many it managed rather than repeating itself.

How many tags to append to the list, drawn from your words and capped at 30 - Instagram's own ceiling. Zero keeps the captions tag-free.

The same seed gives the same captions anywhere. Leave it blank and each press of "More captions" draws from the clock, and the seed that was used is printed beside the list so it can be pasted back.

Leave it blank and the two files are named "captions.txt" and ".csv".

Results update as you type. Nothing leaves your device.

Captions

8

From 3 words: small bakery, sourdough, weekend. Seed 2405545498, drawn from the clock when this page ran.

Words in
3
Captions
8 of 8 asked for
Longest
41 characters

Your captions

8 captions from: small bakery, sourdough, weekend
seed 2405545498
1. Living the small bakery life lately.
2. Quick update: sourdough is going great.
3. Weekend vibes, weekend edition.
4. We have thoughts about small bakery.
5. Oh, we have been deep in sourdough again.
6. Sneak peek at weekend.
7. Small wins in small bakery, as usual.
8. Let us talk about sourdough for a second.

#smallbakery #sourdough #weekend

Copy the list, or download it. Every line names the shape that produced it, and the hashtag tail sits once at the end of the box.

Caption by caption

CaptionPatternCharacters
Living the small bakery life lately.Everyday36
Quick update: sourdough is going great.Aside39
Weekend vibes, weekend edition.Weekend31
We have thoughts about small bakery.Chat36
Oh, we have been deep in sourdough again.Everyday41
Sneak peek at weekend.Aside22
Small wins in small bakery, as usual.Weekend37
Let us talk about sourdough for a second.Chat41

The middle column is the shape that produced the caption - the part worth keeping by hand when none of them is quite right. The hashtag tail is added once at the end of the box, not to every line.

What the numbers do not say

  • The seed was drawn from the clock when this page ran, and the seed that was used is printed beside the list so it can be typed back in. "More captions" draws a new one every time - same settings, new values.
  • Instagram - up to 2,200 characters - the table prints the character count of every caption so you can compare against the limit before you post.
  • Hashtags are drawn from your words, capped at 30 (Instagram's own ceiling) and never repeated case-blind; the tail is added once at the end of the list, not to every caption.
Generated in this browser tab from the words on the left, with no server involved: the page makes no network requests at all, which is why an unannounced post idea typed into it stayed here.

The hashtag tail is drawn from the same words and capped at 30 - Instagram’s own ceiling - and it is added once at the end of the list, not to every line. The platform selector does not rewrite your caption; it sets the honest guidance: the page prints the chosen platform’s character limit and every caption’s character count so you can compare before you post. Nothing leaves the tab - this site makes no network requests at all.

About this social caption generator

The honest half of this tool is what it cannot do: it cannot tell you whether a caption will stop the scroll, because that is decided by the audience you actually have, and this page measures no audience - measuring readers would mean tracking them. What it can do is give you a spread of distinct shapes quickly: an announcement, a wink, a quiet push. From a dozen drafts you can usually hear which voice is yours.

The seed matters here more than it seems. A post you keep means a caption you may want to reuse in a slightly different version, and the seed lets you bring the exact batch back on any device. The same words, vibe and seed give the same captions anywhere - a genuinely useful property when the caption is the part of the post you sweat over.

How this social caption generator works

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.

Worked examples

Each example below was run through the calculator on this page when the site was built, so the numbers match what you see when you enter the same inputs.

A bakery launch, playful vibe

Your words: small bakery, sourdough · Where it goes: Instagram - up to 2,200 characters · Vibe: Playful - a wink, not a pitch · How many captions: 5 · Hashtags: 6 · Seed: bakers

Captions

5

From 2 words: small bakery, sourdough. Seed 1018314335, typed on the form.

Words in: 2 · Captions: 5 · Longest: 50 characters

Playful shapes wink instead of pitch - a natural fit for a food account, and a good reminder that the hashtag tail is one line at the end, not six under every caption.

A work update, professional vibe

Your words: remote work, focus · Where it goes: LinkedIn - up to 3,000 characters · Vibe: Professional - calm and on-message · How many captions: 5 · Hashtags: 4 · Seed: remote

Captions

5

From 2 words: remote work, focus. Seed 3347937619, typed on the form.

Words in: 2 · Captions: 5 · Longest: 55 characters

Professional shapes announce and report - the cadence a work audience expects, and where the platform limit matters least because the captions stay short.

A weekend post, minimal vibe

Your words: weekend · Where it goes: X (Twitter) - up to 280 characters · Vibe: Minimal - few words, full stop · How many captions: 4 · Hashtags: 0 · Seed: sunday

Captions

4

From 1 word: weekend. Seed 2754191577, typed on the form.

Words in: 1 · Captions: 4 · Longest: 30 characters

Minimal shapes say it in a few words and zero hashtags, which is also the most honest answer for a tiny caption on a tiny screen.

Frequently asked questions

Does it know if a caption will perform well?

No, and it says so on the page: performance is measured against the audience you actually have, and this site makes no network requests and collects no analytics - measuring readers would mean tracking them. The page supplies distinct shapes quickly; you supply the knowledge of your feed.

Why are hashtags capped at 30?

30 is the ceiling Instagram publishes for hashtags in a single caption, and this page never goes above a platform ceiling it does not control. The tail is also deduped case-blind, so the same word cannot appear twice in different capitalization, and it is appended once at the end of the list rather than under every caption.

What does the seed do?

It makes the batch reproducible. The same words, vibe and seed give the same captions anywhere - including from a downloaded .txt months later. Leave the box empty and each press of "More captions" draws a new seed from the clock, and the seed that was used is printed so it can be typed back in.

Why do the platform limits not change the caption itself?

Because a caption is a caption - what changes between platforms is the ceiling you are posting under and who is reading. The platform field prints that ceiling and shows each caption’s character count in the table, so the comparison you need to make is the one the page lets you make with four numbers.

Why does the list stop short sometimes?

Because the shapes are finite and the page refuses to hand over repeats. A single word exhausts a vibe fairly quickly, so a request for thirty captions can stop at a dozen and say exactly that. Add a second or third word and the same request returns a full batch.

Is my post idea safe to type here?

Yes. Every field is noUrl, so nothing you type enters the address bar, the share link, the copied summary or the print stamp, and the site makes no network requests at all - a tested invariant. An unannounced post idea typed into this box stays in this tab.

Assumptions and sources

  • Captions come from the page's own templates and are drawn from a seed, so a list can be reproduced.
  • Hashtags come from your own words, are de-duplicated and capped at 30, the ceiling Instagram publishes for one caption.
  • Platform limits are the published ones and change without notice; nothing you type is uploaded.

Last reviewed 2026-10-07. Runs locally on your device; keep backups; no financial advice applies. Read the full disclaimer.

Where a figure on this page comes from an official agency — HUD, IRS, FICO or a state body — the site keeps a dated snapshot of the source page in its sources library, and a scheduled job re-checks that snapshot, so the number can be traced back to the document it came from.