Instagram

Instagram Caption Formatter

Write captions with 𝗯𝗼𝗹𝗱 and 𝘪𝘵𝘢𝘭𝘪𝘤 Unicode fonts, fix Instagram's line-break collapse, manage hashtags, insert CTAs, and copy — all in your browser.

Style
Case
⚡ Quick CTAs
📄 Caption Templates

Clicking a template will replace your current caption.

Characters
Hashtags
···
Your photo here
123 likes
youraccount
View all 4 comments
2 hours ago
Hashtag Manager
No hashtags added yet

About Instagram Caption Formatter

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.

How to Use

  • Write or paste your caption into the editor on the left. The live preview on the right updates as you type.
  • Apply Unicode styles — select text in the textarea, then click a style button (𝗕, 𝘐, 𝙱𝙸, 𝚃𝚃, ᴀʙᴄ, S̶). If nothing is selected, the style is applied to the entire caption. Case transforms (ABC, abc, Abc, .Abc, aLt) work the same way.
  • Fix blank lines — if your caption uses blank lines for spacing, click "Fix all blank lines" to replace every blank line with an invisible separator. Or click "Add separator line" to insert one at the cursor position.
  • Add CTAs — expand the Quick CTAs section and click any chip to append that call-to-action to your caption.
  • Use a template — expand Caption Templates and click one to load a starter structure. Placeholders in [brackets] are your cue to personalise.
  • Manage hashtags — type tags in the hashtag box and press Enter, Space, or comma to add them as pills. You can paste a full hashtag block and it will be split automatically. Use "Extract from caption" to pull any hashtags already in your text into the list. Toggle "In caption" or "First comment" to control how they appear in the full output.
  • Copy — use "Copy Full Caption" to copy the complete output (caption + hashtags if in-caption mode), "Copy Caption Text Only" for just the text, or "Copy Hashtags" to copy the hashtag block for pasting as a first comment.

Logic & Algorithm

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.

  • Bold — Mathematical Sans-Serif Bold: U+1D5D4–U+1D5ED (upper), U+1D5EE–U+1D607 (lower)
  • Italic — Mathematical Sans-Serif Italic: U+1D608–U+1D621 (upper), U+1D622–U+1D63B (lower)
  • Bold Italic — Mathematical Sans-Serif Bold Italic: U+1D63C–U+1D655 (upper), U+1D656–U+1D66F (lower)
  • Monospace — Mathematical Monospace: U+1D670–U+1D689 (upper), U+1D68A–U+1D6A3 (lower)
  • Small Caps — uses a lookup table of Latin small-cap characters (e.g. ᴀ ʙ ᴄ ᴅ…) for lowercase letters; uppercase stays as-is
  • Strikethrough — appends Unicode Combining Long Stroke Overlay (U+0336) after each character

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.