Hashtag Extractor
Paste a caption, post, or article and pull out every hashtag that's already written in it, deduplicated and counted.
About the Hashtag Extractor
This pulls hashtags out of text that already contains them, the opposite job from the Hashtag Generator, which invents new suggested tags from a topic you type in. Here, a Unicode-aware pattern (/#[a-zA-Z0-9_À-ɏЀ-ӿ]+/g) scans your pasted text for anything shaped like a hashtag, covering plain ASCII tags as well as accented-Latin ones like #café or Cyrillic ones, then collapses repeats case-insensitively while keeping whichever casing showed up first (so #Sunset and #sunset later in the text count as one entry). Use it to see exactly which tags are already in a caption before you post it, or to pull tags out of a competitor's post for reference.
Why hyphens break a hashtag into two separate pieces, but underscores don't
Type #coffee-shop into a real caption on Instagram or X, and the platform itself only recognizes #coffee as a clickable hashtag, the hyphen ends it, and "-shop" becomes plain, non-hashtag text right after it. This extractor's character class deliberately mirrors that same real-world behavior, hyphens aren't included in the matched characters, so a hyphenated phrase correctly gets split the same way a live platform would treat it. Underscores work differently on essentially every major platform, they're treated as a normal word character rather than a separator, which is why the pattern explicitly includes _, letting something like #throwback_thursday get captured as one complete, unbroken tag, exactly matching how it would actually behave once posted.
An honest limitation: not every world script is covered
The two Unicode ranges in this pattern, À-ɏ for extended Latin characters (accented letters used across French, Spanish, Vietnamese, and other Latin-alphabet languages) and Ѐ-ӿ for Cyrillic, cover a meaningful slice of hashtags used worldwide, but they don't cover every script. Hashtags written in Chinese, Japanese, Korean, Arabic, or Devanagari characters fall outside these specific ranges and won't be matched by this pattern. Extending coverage to every writing system a hashtag could theoretically use would require a considerably broader set of Unicode ranges, this tool's current pattern focuses on the scripts most commonly mixed with Latin-alphabet captions rather than attempting universal script coverage.
Why this is pure pattern-matching, not platform-accurate hashtag detection
This tool matches purely on the visual text pattern, a # followed by qualifying characters, rather than replicating each specific platform's exact internal rules for what actually becomes a clickable, functional hashtag. Real platforms can have subtle edge-case behaviors around things like a # appearing mid-word with no preceding space, which may or may not register as a real hashtag depending on the specific platform. For the overwhelming majority of real captions, where hashtags appear as clearly separated, space-delimited tokens, this distinction rarely matters in practice, but it's worth knowing the extraction is based on shape, not on faithfully reproducing every platform's exact hashtag-parsing logic.
A practical reason to check what's already in a caption
Beyond just tidying up before posting, pulling the exact tag set out of your own past captions is useful for spotting unintentional repetition, several platforms' algorithms can treat identical hashtag sets reused across many consecutive posts as a spam-adjacent signal, even when the repetition was accidental rather than deliberate. Running a caption through this extractor before publishing makes it easy to compare against your recent post history and deliberately vary the mix, or, run against a competitor's or a top-performing post in your niche, to see precisely which tags they're actually relying on rather than guessing from the visible caption alone. The live unique-count stat also makes it easy to check you're staying comfortably within a platform's practical hashtag limit at a glance.
Frequently Asked Questions
Why does #coffee-shop get extracted as just #coffee?
Real platforms like Instagram and X treat a hyphen as the end of a hashtag, so #coffee-shop is actually recognized as the clickable tag #coffee followed by plain text "-shop". This tool's matching pattern deliberately mirrors that real platform behavior rather than treating hyphenated phrases as one tag.
Why is #throwback_thursday captured as one complete tag?
Underscores are treated as a normal word character by essentially every major platform, unlike hyphens, so this tool's pattern includes underscores as valid hashtag characters, correctly capturing underscore-joined phrases as a single unbroken tag.
Does this tool extract hashtags written in Chinese, Japanese, Arabic, or Hindi?
No, the current pattern covers extended Latin characters (accented letters) and Cyrillic, but not those scripts. Hashtags written in Chinese, Japanese, Korean, Arabic, or Devanagari characters fall outside the covered Unicode ranges and won't be matched.
Does this tool replicate exactly how each social platform recognizes hashtags?
Not perfectly, it matches based on visual text pattern rather than each platform's specific internal parsing rules, which can have subtle edge cases around hashtags appearing mid-word. For typical space-separated captions this distinction rarely matters in practice.
Why would I extract hashtags from my own past posts?
To spot accidental repetition, some platforms' algorithms can flag identical hashtag sets reused across many consecutive posts as spam-adjacent, even unintentionally. Comparing extracted tags against your recent history makes it easy to deliberately vary your mix.
Can I copy the extracted tags in a format ready to paste into a new caption?
Yes, use Copy Space-Separated for a caption-ready list, or Copy Comma-Separated if you need them formatted as a list for a spreadsheet or a platform's dedicated tag field.