 <p>Here is a pure JavaScript library that does just that:</p> <p><a href="https://github.com/orling/grapheme-splitter" rel="nofollow">https://github.com/orling/grapheme-splitter</a></p> <p>It implements the Unicode UAX-29 standard in all its edge cases that you're likely to miss in a home-brew solution, like non-Latin diacritics, Hangul (Korean) jamo characters, emoji, multiple combining marks, etc.</p>