1. HTML reserved characters like < > and \.
2. overflowing content
3. displaying ASCII made with special encodings and characters sets, like code page 437
4. displaying nonprintable (control) characters
5. displaying colors
6. text preprocessors messing up the formatting
https://terminoid.com/discover/
i still need to add seeking and stuff, but it works. like asciinema but based on xterm.js
Color is very much a part of ASCII art, if we consider ASCII to mean a broader range of different technologies. Just check the stuff in the article, or the stuff on https://16colo.rs/ site.
Yeah, for non-ASCII / more sophisticated stuff, images are kinda the only widely-compatible option without adopting a full terminal emulator worth of javascript.