What it removes, and what it keeps
Emoji is not a fixed block of characters you can list once and forget about. This tool matches the Unicode Extended_Pictographic property, so it covers the set in use today and keeps working when Unicode adds more. A hard-coded list of numeric ranges goes stale within a year.
The visible ones: smileys, people, animals, food, objects, transport and flags. A flag is a pair of regional-indicator letters, so you never end up with half of one.
Skin-tone modifiers (U+1F3FB to U+1F3FF): five invisible selectors that sit after a hand or a face and recolour it. Delete the hand, keep the modifier, and some fonts draw a coloured square.
The variation selector U+FE0F: the flag that asks for the colour emoji instead of the plain glyph. Zero width, no glyph of its own, easy to miss.
Zero-width joiners (U+200D): the glue inside multi-emoji sequences. A family emoji is four people fused by three joiners. Strip only the visible faces and the joiners stay behind, where a parser or a strict database column will trip over them.
Kept by default: letters, numbers, standard punctuation, and common currency and maths symbols. Turn on "also remove other symbols" for arrows, stars, dingbats and geometric shapes.
Why people strip them
Emoji use four bytes, and legacy databases, CSV imports and older SQL columns still choke on that. One party popper in one cell can fail an entire load.
Accessibility is the reason most people forget. A screen reader announces every emoji by name, so five fire emoji in a row are read out as "fire fire fire fire fire", and skin-tone or gender variants add more words on top (Pope Tech). Cleaning them makes the text easier to hear, not only neater to look at.
Two honest limits. This is text hygiene, so it will not change what an AI detector says about your writing. And to clean many files or a whole sheet, a regex on the Extended_Pictographic property in Python, or a library such as demoji, beats pasting blocks one at a time.
On a Mac the same cleaner sits in Klipto's paste preview, so the stripped version is what lands in Slack, a spreadsheet or a Jira ticket.