Tag-safe HTML and XML text-truncation!
npm install downsize
Why, hello there!
Downsize is designed to handle bad markup, and should count words and characters accurately in spite of it. But it won't hold your hand.
It does close outstanding open tags for you, but leaves erroneous close-tags for which the opening tag couldn't be found or was erroneously nested.