Replacements for grapheme-splitter
/ graphemer
Intl.Segmenter
(native)
Intl.Segmenter
is the modern native JavaScript API for text segmentation, available in Node.js 16+, Chrome 87+, Safari 14.1+, and Firefox 132+.
ts
import GraphemeSplitter from 'grapheme-splitter'
const splitter = new GraphemeSplitter()
const segmenter = new Intl.Segmenter()
const graphemes = splitter.splitGraphemes(text)
const graphemes = [...segmenter.segment(text)].map(s => s.segment)
const count = splitter.countGraphemes(text)
const count = [...segmenter.segment(text)].length
unicode-segmenter
unicode-segmenter
is a lightweight, fast alternative with zero dependencies and excellent browser compatibility.
ts
import GraphemeSplitter from 'grapheme-splitter'
import { countGraphemes, splitGraphemes } from 'unicode-segmenter/grapheme'
const splitter = new GraphemeSplitter()
const graphemes = splitter.splitGraphemes(text)
const graphemes = [...splitGraphemes(text)]
const count = splitter.countGraphemes(text)
const count = countGraphemes(text)
You can also use it as an Intl.Segmenter
polyfill:
ts
import 'unicode-segmenter/intl-polyfill'
const segmenter = new Intl.Segmenter()
const graphemes = [...segmenter.segment(text)].map(s => s.segment)