JavaScript strings are UTF-16 code units. A family emoji like 👨👩👧 is actually 11 code units glued together with zero-width joiners. The classic str.split('').reverse().join('') trick splits between every code unit and produces gibberish — combining marks attach to the wrong base character, surrogate pairs become unmatched halves.
This tool uses Intl.Segmenter with granularity: 'grapheme', which implements Unicode Standard Annex #29. The result is what users perceive as "characters" — and reversing those, instead of code units, gives correct output for every script.