Logo

MonoCalc

/

Social Mention Extractor

Social Media
Everything stays in this browser. Nothing is uploaded, stored or remembered between visits — which matters here, since text with mentions in it often carries email addresses too.

Unique handles

0

case-insensitive

Total occurrences

0

every time a handle appears

Skipped markers

0

none

Protected stretches

0

none

What was read, and what was not

Your text exactly as typed, with each decision marked. Hover a muted run to see why it was passed over.

@handleextracted
hi@example.cominside an email, URL or code
@skipped, with a reason

Paste some text above and it will appear here with every handle marked.

A run of markers is read after the last one, so @@nasa is @nasa. A marker only opens a handle when the character before it is not part of a handle body, which is the first of the two rules that keep user@example.com out of the list — the whole address being a protected stretch is the second.

Rules to check handles against

Extraction never depends on these. They only decide which rows carry a badge, and a handle that breaks a rule is still listed.

Every handle the grammar finds is listed without judgement. The default, so a stale rule can never hide a valid mention.
Edit this freely — the profile only seeds it.
Characters, marker excluded. 0 means no minimum.
Characters, marker excluded. 0 means no maximum.
These profiles were recorded, not verified
Every profile above was written down on 2026-09-14 and none of them was checked against a platform's own published username policy — external domains were unreachable from the environment this tool was built in. That is why no profile carries a platform name and why every length field ships open rather than filled with a guessed number: a blank you fill in is honest, a wrong constant would quietly hide handles that are perfectly valid. Rules change without notice, so treat each profile as a starting point and edit the fields to match whatever you are actually posting into. Nothing here can tell you whether an account exists.

0 handles

MentionOccurrencesCharactersRulesAlso seen asCopy
No mentions found yet.

Mentions, reassembled

One entry per unique handle, in the order the table is sorted.

0 characters in this block, separator included — counted as grapheme clusters, the way a reader counts them. Joined with " ".

Every handle starts with @, which a spreadsheet reads as the opening of a formula. The CSV export prefixes each such cell with a single quote so the file opens as text.

The text without its mentions

Every extracted handle removed and the whitespace left behind collapsed to single spaces. Skipped markers and protected stretches stay where they were, because neither was treated as a handle — so an email address survives this step intact.

0 characters without the mentions, 0 with them.

About This Tool

Social Mention Extractor – Pull Every @Handle Out of Any Text

Paste a caption, a draft post, a comment export or a thread you copied from somewhere else, and this social mention extractor gives you back every @mention in it — de-duplicated, counted, ordered and ready to copy out in whatever shape you need. The whole job happens in your browser. Nothing is uploaded, nothing is stored, and no network request of any kind is made. The tool reports what is in your text; it never checks whether an account exists, because it has no way to.

The email rule that most extractors get wrong

The obvious pattern, @[A-Za-z0-9_]+, turns user@example.com into a mention of @example. That single bug is the reason to use a real parser instead. Two separate rules stop it here. First, a marker only opens a handle when the character immediately before it is not part of a handle body, so the r in user blocks the @ outright — the same rule that keeps a@b and id@3 out of the list. Second, the whole address is marked as a protected stretchbefore matching begins, which is why the preview dims user@example.com end to end rather than only from the @ onward. Longer shapes such as first.last+tag@sub.example.co.uk are covered the same way, and so are web addresses: https://x.example/@nasa yields nothing, because the handle there belongs to a path.

Why nothing was extracted is always visible
Anything passed over is shown, not silently dropped. Protected stretches carry a dotted underline and a tooltip naming the reason, and a marker with nothing after it appears in the skipped list. A tool that quietly finds nothing is indistinguishable from one that is broken.

A grammar that works in every script

The handle body is built from Unicode property escapes rather than an ASCII character class, so @東京, @новости, @مرحبا and @हिंदी are read correctly, with combining marks kept attached to their base letter. The fullwidth @ that is ordinary in Japanese, Chinese and Korean text is a marker, as is the small ﹫, and the handle is copied back out with the exact marker you typed. Letter lookalikes such as а are never markers — a letter is a letter. Where a platform genuinely restricts handles to ASCII, that belongs in the rules panel as a check, not in the parser, where it would simply lose handles.

Where a handle stops

A dot or a hyphen joins the handle only when it sits between two handle characters. So @jane.doe stays whole, while @jane. reads as @jane and Hi @bob- reads as @bob — the trailing mark is the sentence's punctuation, not part of the name. Slashes, hashes, quotes and brackets end a handle outright, which is why @nasa/jpl is @nasa and @bob#1 is @bob. A run of markers collapses and the handle is read after the last one, so @@nasa is @nasa. Emoji are never handle characters, with no toggle to make them so.

Counting, grouping and order

@NASA, @nasa and @Nasa are one row counted three times. The key used for matching is normalised to NFC and lower-cased against a pinned locale, so the result cannot change between machines, and the spelling shown is always the first one you typed with the alternates listed underneath. Lengths are counted in grapheme clusters — what a reader would call a character — rather than in code units. All three sort orders are total orders, with first appearance breaking every tie, so the same text always produces the same list.

Rules you set, and nothing you did not

The profile panel checks handles against a character class and a length range that you control. It ships permissive, validates nothing until you choose otherwise, and never removes a row: a handle that breaks a rule is still listed, flagged with the rule it broke. No profile carries a platform name or a guessed limit, because none could be verified when this tool was built. A badge here means only that the text matches the grammar you selected — never that a handle is registered, available, or owned by anyone in particular.

Frequently Asked Questions

Is the Social Mention Extractor free?

Yes, Social Mention Extractor is totally free :)

Can I use the Social Mention Extractor offline?

Yes, you can install the webapp as PWA.

Is it safe to use Social Mention Extractor?

Yes, any data related to Social Mention Extractor only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does this mention extractor work?

You paste any block of text and the whole job happens in your browser. The text is first scanned for stretches that are off limits — email addresses, web addresses and, if you ask for it, code — then every @mention outside those stretches is read with a Unicode-aware grammar, de-duplicated, counted and listed. Nothing is uploaded and no network request of any kind is made. The tool reports what is in your text and whether each handle matches the rules you selected; it says nothing about who owns a handle.

Why did user@example.com produce no mention at all?

Because an email address is not a mention, and turning one into @example is the single most common bug in this category. Two separate rules stop it. First, a marker only opens a handle when the character before it is not part of a handle body, so the r in user blocks the @ outright. Second, the whole address is marked as a protected stretch before matching begins, which is why the preview dims the entire address rather than just part of it. Addresses with dots, plus-tags and multi-part domains are covered the same way.

Does this check whether a handle actually exists?

No, and it cannot. There is no network call anywhere in the tool, so there is nothing that could look an account up. A handle that passes every rule you set may well be unregistered, and a handle flagged as breaking a rule may be perfectly real on a platform whose rules differ from the ones you picked. The validity badge means only one thing: whether the text matches the grammar currently selected in the options panel.

Do non-Latin handles work?

Yes. The grammar is built from Unicode property escapes rather than an A–Z character class, so @東京, @новости, @مرحبا and @हिंदी are read correctly, with combining marks kept attached to their base letter. The fullwidth @ common in Japanese, Chinese and Korean text is a marker, as is the small ﹫, and the handle is copied back out with the exact marker you typed. Circled letter forms such as Ⓐ sit behind an off-by-default toggle, because an enclosed letter in a sentence is not a handle.

Why was @jane.doe kept whole but @jane. cut short?

A dot or hyphen belongs to a handle only when it sits between two handle characters. In @jane.doe the dot has letters on both sides, so it is part of the handle. In @jane. the dot is followed by nothing, so it is the sentence's punctuation and the handle stops at jane — the same reason Hi @bob- reads as @bob. A run of markers collapses and the handle is read after the last one, so @@nasa is @nasa.

Are the platform profiles accurate?

They are starting points recorded on 2026-09-14, not statements about any live platform. No platform's published username policy was reachable from the environment this tool was built in, so no profile carries a platform name or a guessed length limit — each describes only the character shape it enforces and ships with its length fields open. Every field, including the character class and both lengths, is editable, and the default profile validates nothing at all so that a stale rule can never hide a valid mention.