Miranda NG is a free, open-source instant messaging client for Windows that connects to several chat networks from a single program. It continues the Miranda IM project under the GNU GPL and keeps that project’s modular design. A small core handles profiles and settings, while protocols, contact lists, message windows and most other functions come as separate plugins. Miranda NG is built to use few system resources, and a user can add only the parts they actually need.
Networks and accounts
A separate protocol plugin supports each chat service. The current list covers Telegram, Discord, WhatsApp, Microsoft Teams, Steam, Jabber (XMPP), IRC, VKontakte, Max, Tox, DeltaChat, Gadu-Gadu, Sametime, ICQ corporate, the Em-LAN local network protocol and a MinecraftDynmap plugin. Contacts from all accounts share one contact list and the same type of chat window.
Protocol depth varies by network. The Jabber plugin is one of the most complete. It handles multi-user chat rooms with bookmarks and direct invitations. File transfers use peer-to-peer streams or HTTP upload to the server. It also handles service discovery, message receipts and chat markers. Other functions include message carbons for sessions on other devices, server message archives and offline messages. For end-to-end encryption, it supports OMEMO and OpenPGP. Users can switch OMEMO off for individual contacts. The Telegram plugin is built on Telegram’s own tdlib library.
Some protocols can retrieve conversation history stored on the service’s servers. In that case, a contact’s context menu offers a history download. An option in the file-transfer settings downloads cloud files automatically.
Contact list and message windows
The contact list and the chat window are both replaceable plugins, so their look and behaviour depend on which ones are installed. The basic package already includes a contact list and a messaging dialog. Clist_modern is a skinnable alternative that can span several windows and gives better handling of metacontacts. These merge one person’s accounts on different networks into a single entry. Clist_nicer is a simpler alternative, and BClist is designed for blind users.
For conversations, TabSRMM is the most feature-rich message window. It groups chats as tabs inside one or more container windows, with tabs at the top or bottom or in a vertical switch bar along the side. The same window handles one-to-one chats and group chats such as IRC channels and Jabber rooms. TabSRMM adds an info panel with the contact’s avatar. It also adds a configurable toolbar and a message log with templates for setting the layout, fonts and colours. TabSRMM automatically splits messages longer than a network allows. A send-later queue holds messages until a contact comes online, and multisend delivers one message to several contacts. Scriver is a lighter alternative for users who want a plain window.
History and the profile database
Everything Miranda NG stores, including accounts, passwords, settings, contacts and message history, lives in a profile file. A database driver plugin manages this file. Dbx_mdbx is based on the libmdbx engine, and Dbx_sqlite is the driver to use under Wine, where Dbx_mdbx does not work correctly. A built-in checker can verify the database, and the Db_autobackups plugin makes regular copies of it.
Users can choose the profile folder in a configuration file. This lets Miranda NG keep its data in the user’s application data folder or next to the program itself, for example on a USB drive. A command-line switch opens a specific profile at startup when several are kept side by side.
History viewers are also plugins. NewStory and HistoryPP display past conversations. NewStory lets users choose how entries appear using variables for nicknames, timestamps and message text. The Import plugin brings contacts and messages from another Miranda NG profile, mContacts files, History++ text exports, Msg_Export JSON files and QIP history files.
Plugins and updates
The plugin catalogue adds status and away-message managers, auto-away and connection checking, popup and Windows toast notifications, spell checking in the message window and smiley packs. For private chats on networks without built-in encryption, users can add SecureIM, Off-the-Record messaging (MirOTR) or GPG encryption (New_GPG).
PluginUpdater installs and maintains these components. Its “Available components list” in the main menu shows plugins, language packs and icon sets. Users can download these together. When it checks for updates, PluginUpdater compares hashes of installed files with those on the server. It replaces any files whose hashes differ. Users choose between stable and development builds, or a custom source for anyone distributing their own pack. Components a user unchecks stay excluded from later updates, which protects custom language packs or icon sets.
Old Miranda IM plugins do not run in Miranda NG, though many have been ported.
Interface customization
The interface language comes from installable language packs. Users can replace icons as a full set or one at a time from icon libraries. They can assign event sounds individually (WAV by default, other formats through a BASS plugin). SmileyAdd handles smiley packs. Skins change the contact list and message window. Community-made Miranda NG packs bundle a chosen set of plugins and skins.





