Write captions with 𝗯𝗼𝗹𝗱 and 𝘪𝘵𝘢𝘭𝘪𝘤 Unicode fonts, fix Instagram's line-break collapse, manage hashtags, insert CTAs, and copy — all in your browser.
Clicking a template will replace your current caption.
An Instagram caption does more than describe your photo — it drives engagement, signals relevance to the algorithm, and converts casual scrollers into followers. But Instagram's text editor is brutally limited: it collapses blank lines, offers no formatting controls, and buries hashtags inside the same box as your storytelling text. This tool solves all of that in the browser, with no account or upload required.
The formatter handles three distinct problems. First, text styling: it converts your letters into visually distinct Unicode characters from the Mathematical Alphanumeric Symbols block — bold, italic, monospace, and small caps glyphs that render in Instagram captions just like any other text. Second, line break preservation: Instagram strips trailing whitespace from lines, so blank lines vanish. The tool inserts an invisible Braille Pattern Blank character (U+2800) on the empty line to hold space. Third, hashtag management: you can build your hashtag list separately, toggle between embedding them in the caption or saving them for the first comment, and track the 30-tag limit in real time.
Unicode font transformation — Each style maps standard ASCII letters (A–Z, a–z) to their counterparts in a specific Unicode Mathematical Alphanumeric Symbols range. For example, sans-serif bold uppercase starts at U+1D5D4 (𝗔), so 'A' → String.fromCodePoint(0x1D5D4 + 0), 'B' → 0x1D5D4 + 1, and so on. Digits, punctuation, and emoji are passed through unchanged. The function operates on each Unicode code point (using for...of) to correctly handle surrogate pairs, so characters above U+FFFF are treated atomically. When text is selected, only that selection is transformed and the cursor is restored to the same range after the update.
Line-break fix — Instagram's web and mobile clients strip trailing whitespace on each line before saving. A line containing only spaces or tabs becomes empty and is removed. The Braille Pattern Blank (U+2800) is a printable character with zero glyph width that Instagram does not strip, so placing it on an otherwise blank line preserves the visual gap. "Fix all blank lines" applies the regex /\n[ \t]*\n+/g and replaces each match with \n⠀\n.
Hashtag extraction — the regex /#[^\s#]+/g matches each hashtag in the caption, captures the array, strips the matched tokens from the caption text, and pushes unique values into the hashtag list. This lets creators paste existing captions and reorganise the hashtag placement without manually cutting and pasting.