The line-break problem, explained
Everyone who writes captions has met it: a caption spaced into neat paragraphs in Notes or Google Docs turns into a single block the moment it is posted. Instagram is not removing formatting here, because there was none. It is applying two rules to plain text. A line that ends with a space is treated as continuing, so the line break after it is dropped. And a line with nothing on it is treated as whitespace and removed, so the blank lines between paragraphs vanish. The result is a caption that runs together, with the paragraphs you wrote fused end to end.
The fix is mechanical once you know the rules. Remove the trailing spaces, and put something on every blank line that Instagram counts as content but nobody can see. That “something” is a Braille blank, U+2800: a character from the Braille block that has no dots and renders as empty space on every phone. Instagram keeps the line because it is not empty; the reader sees a blank line because the character is invisible.
How this page handles it
The two halves of the fix happen at different moments so that the editor stays pleasant to write in.
- On paste, trailing spaces and doubled gaps are removed (the Fix spacing option, on by default here), along with the hidden characters and markdown an AI draft brings with it.
- On copy,every blank line in your caption is filled with the invisible character and the toast confirms “Copied with Instagram-safe line breaks”. In the editor you see ordinary blank lines; on the clipboard, each one carries the protector.
Each filler counts as one character of the 2,200 limit, which is rarely a problem — a caption with eight paragraphs spends seven characters. The same copy works for bios: paste into the bio field and the line breaks hold there too, within the 150-character limit.
Bold and italic that Instagram cannot strip
Instagram has no formatting controls for text, and anything bold you paste from a document arrives plain. Unicode bold is the way round it: a separate alphabet of look-alike characters, originally designed for mathematical notation, that Instagram treats as ordinary letters. The toolbar above produces bold, italic, bold italic, strikethrough and underline this way. Paste a ChatGPT draft and its **bold** markers are converted automatically, because Keep bold is on by default on this page.
Use it for a hook, a product name or a label, not for the whole caption. Bold characters are a different spelling as far as software is concerned: a bolded hashtag is not linked, a bolded @mention does not notify anyone, search does not match it, and screen readers may spell it out letter by letter. Keep every hashtag, mention and searchable term plain.
The counter and the “more” fold
A caption can be 2,200 characters long, and the counter on this page is set to that limit. What the feed shows without a tap is far less: about the first 125 characters, roughly two short lines, before “more”. Instagram does not publish the figure and it varies with the phone and the font size, so write as if only the first line is guaranteed. Lead with the hook or the point of the post, keep the call to action near the top, and let the detail, the credits and the hashtags sit below the fold.
Cleaning an AI-written caption
Captions drafted in ChatGPT, Claude or Gemini carry the same baggage as any AI text: markdown markers, hidden characters, em dashes and an emoji at the start of every line. This page strips the markdown and hidden characters on paste and converts the bold. For the rest, the preferences panel has a Remove emojis toggle, and the “Em dashes” setting replaces the dashes with a comma or hyphen so the caption reads as typed rather than generated. Three to five hashtags, chosen rather than generated, generally serve a post better than the thirty Instagram allows; put them at the end of the caption or in the first comment.
Where it works on Instagram
Captions: bold, italic, bullets and protected blank lines all hold. Bios: the same, within 150 characters; a bold first line and line breaks between the rest is the common layout. Comments: Unicode text renders; blank lines are usually collapsed regardless, so keep comments to short lines. Stories and Reels text: the text tool has its own fonts, but pasted Unicode bold renders there too. Direct messages: Unicode renders; line breaks are preserved without any tricks. Threads: the same Unicode characters work; the Threads text formatter opens with its 500-character limit selected.
Related tools
Private and free
The formatting runs in your browser with client-side JavaScript. Your caption is never sent to a server, stored or logged. No account, no limits, no watermark.