Its main features (many of them unique) over rxvt are:
- Stores text in Unicode (either UCS-2 or UCS-4).
- Uses locale-correct input, output and width: as long as your system supports the locale, rxvt-unicode will display correctly.
- Daemon mode: one daemon can open multiple windows on multiple displays, which improves memory usage and startup time considerably.
- Embedded perl, for endless customization and improvement opportunities, such as:
- Tabbed terminal support.
- Regex-driven customisable selection that can properly select shell arguments, urls etc.
- Selection-transformation and option popup menus.
- Automatically transforming the selection once made.
- Incremental scrollback buffer search.
- Automatic URL-underlining and launching.
- Remote pastebin, digital clock, block graphics to ascii filter and whatever you like to implement for yourself.
- Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than rxvt and its many forks, and reproducible bugs get fixed immediately.
- Completely flicker-free.
- Re-wraps long lines instead of splitting or cutting them on resizes.
- Full combining character support (unlike xterm :).
- Multiple fonts supported at the same time: No need to choose between nice japanese and ugly latin, or no japanese and nice latin characters :).
- Supports Xft and core fonts in any combination.
- Can easily be embedded into other applications.
- All documentation accessible through manpages.
- Locale-independent XIM support.
- Many small improvements, such as improved and corrected terminfo, improved secondary screen modes, italic and bold font support, tinting and shading.
- Encapsulation of privileged operations in a separate process (improves security).
- Optimised for local and remote connections.
I used urxvt for a handful of years, before switching to kitty. I’d definitely recommend it.