Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is HexChat?
HexChat is a free, open-source IRC (Internet Relay Chat) client for Windows and Unix-like systems such as Linux. It is based on XChat, but unlike XChat it is completely free on both Windows and Unix-like platforms, which the project notes is legal because XChat is open source. It was originally called XChat-WDK and is a successor to freakschat.
What it does
An IRC client is the program you run on your computer to connect to IRC networks, join channels, and chat in real time. HexChat covers the practical parts of that job:
- Multi-network support with auto-connect, auto-join, and identify
- A customizable interface that aims to be easy to use
- Scripting with Lua, Python, and Perl for automation and custom behavior
- Extras such as spellcheck, proxy support, SASL, and DCC file transfers
- Translations into multiple languages
- Active development under an open-source license
Who it suits
HexChat is a good fit if you want a desktop IRC client that works the same way across Windows and Linux, and if you like the idea of extending your client with scripts. It is less suited to people who only want occasional web-based chat, since it is an installed application rather than a browser service. If you prefer a terminal-based client or a different graphical client, compare those separately; HexChat's strength is being a familiar, scriptable desktop client rather than a niche tool.
How to decide
Ask two questions: do you need a native Windows or Linux desktop app, and do you want to automate parts of IRC with Lua, Python, or Perl? If yes to both, HexChat is a direct candidate. If you mainly need a one-off connection from a browser, a web client may be simpler.
A useful next step is to read the project's documentation and download page, then try connecting to one network and joining a single channel before setting up multiple networks and scripts. Related clients you may want to compare include Irssi for terminal use and HexChat itself for the desktop, scriptable approach.
How does HexChat differ from XChat?
HexChat exists because XChat's Windows build was no longer free. HexChat is a fork of XChat, and the page states it is "completely free for both Windows and Unix-like systems," whereas XChat's official Windows version was paid. The project began as XChat-WDK, itself a successor to freakschat, before adopting the HexChat name.
The practical differences that matter day to day:
- Cost and licensing on Windows: XChat's Windows binary required payment; HexChat does not. On Unix-like systems XChat was already open source, so the fork's main advantage there is continued maintenance rather than price.
- Maintenance: HexChat describes itself as "actively developed," while XChat's development stalled years ago. That affects bug fixes, TLS and SASL support, and compatibility with newer operating systems.
- Scripting: HexChat is "highly scriptable with Lua, Python, and Perl." XChat supported Perl and Python plugins; Lua is the notable addition, and it is often the easiest entry point for writing a quick script.
- Interface and translations: HexChat offers an easy-to-use, customizable interface and is translated into multiple languages, a broader localization effort than XChat's later releases.
- Networking features: Multi-network auto-connect, join and identify, plus spellcheck, proxy support, SASL and DCC, are built in.
If you are choosing between them today, the decision is straightforward: HexChat is the maintained, no-cost option, and XChat is mainly relevant for historical interest or for a specific plugin that was never ported. A reasonable next step is to install HexChat, connect to a network such as Libera.Chat, and test whether an existing XChat Perl script still runs; if it does not, rewriting it in Lua or Python is usually quicker than trying to keep XChat working on a modern system. For background on IRC itself, Libera.Chat documents networks and channels, and IRC Help covers client setup and etiquette.
How do I download and install HexChat on Windows or Linux?
Download HexChat from the official project site, then run the installer on Windows or use your distribution's package manager on Linux. The project's own download page is the safest starting point: HexChat.
Windows
- Open the HexChat site and choose the download link for Windows.
- Pick the installer build for your system (the project has historically offered both 32-bit and 64-bit builds; choose the one matching your Windows installation).
- Run the downloaded
.exe, accept the license, and keep the default components unless you have a reason to change them. - Launch HexChat from the Start menu. On first run it asks for a nickname, and optionally a second and third choice in case the first is taken.
- Add a network from the list (Libera.Chat, OFTC, EFnet and others are preconfigured) and click Connect.
Linux
Prefer your distribution's repositories, because updates arrive through the normal system update process:
- Debian/Ubuntu and derivatives:
sudo apt install hexchat - Fedora:
sudo dnf install hexchat - Arch and derivatives:
sudo pacman -S hexchat - openSUSE:
sudo zypper install hexchat
If your distribution no longer packages it, or you want a newer release, use the source or binary downloads offered on the project's download page rather than a random mirror.
What to expect after install
HexChat is a graphical IRC client derived from XChat, and the site describes it as free for both Windows and Unix-like systems, cross-platform, multi-network with auto-connect, join and identify, and scriptable with Lua, Python and Perl. That scripting support is the main reason to choose it over a minimal client: if you spend time in several networks, you can automate joins, nick recovery or message formatting instead of repeating the same commands.
A practical first step after connecting: open Settings → Preferences and set your nick, then use Network List to tick "Auto-connect" for the networks you use daily, so HexChat joins and identifies you on launch.
Choosing between the two routes
| Situation | Best route |
|---|---|
| You want automatic updates and system integration | Install from your Linux distribution's packages |
| You are on Windows | Use the official installer from the project site |
| Your distro dropped the package or you need a newer version | Use the project's own download page |
| You want to modify or audit the code | Build from source, since the project is fully open source |
For alternatives, Irssi is a terminal client suited to remote servers and tmux sessions, and HexChat remains the easier choice if you want a windowed interface with spellcheck, SASL, proxy and DCC support built in.
How can I write scripts for HexChat using Python, Perl, or Lua?
HexChat's scripting support is the main reason to choose it over a bare-bones IRC client: the same client binary can be extended in Python, Perl, or Lua, so you pick the language you already know rather than learning a proprietary macro format. All three are listed as supported scripting languages on the project's feature list at HexChat.
The practical shape of a HexChat script
HexChat exposes its internals through a plugin API: you register callbacks for events (a message arriving in a channel, a user joining, a timer firing, the client connecting), and you call back into the client to print text, send messages, or read and write settings. Scripts in all three languages follow the same pattern, so examples and API references transfer between them. A script typically:
- Hooks one or more events or commands.
- Decides whether the event is interesting (right channel, right nick, matching text).
- Acts — print a notice, respond in the channel, run a command, store a value.
- Optionally persists state in a settings file or a per-user variable.
Choosing a language
| Language | Best when | Trade-off |
|---|---|---|
| Python | You want readable code and the largest pool of third-party libraries | Requires a Python runtime on the machine; version mismatches are the usual failure |
| Perl | You are maintaining older XChat-era scripts or already work in Perl | Denser syntax; fewer people to ask for help |
| Lua | You want something small and fast to embed, or you are writing many tiny scripts | Smallest standard library, so more has to be built by hand |
If you have no existing preference, Python is the safest default: the code is easy to re-read months later, and most community examples you will find are in it. Perl makes sense mainly for reviving scripts written for XChat, since HexChat descends from it. Lua suits people who want a lightweight scripting layer and do not mind writing helpers themselves.
Getting started without guesswork
- Open HexChat's Preferences and check the Plugins and Scripts section to confirm which language loaders are available in your build; a language you did not install will not appear.
- Read the client's own documentation before copying snippets from elsewhere — the API has changed over the project's life, and older XChat examples may use names that no longer exist.
- Start with a script that does one visible thing, such as printing a greeting when you join a channel, then confirm it loaded by watching the client's script or plugin output.
- Add error handling early. A script that throws on every message can flood your window and make the client feel broken.
A concrete first project
Suppose you want a per-channel note system: when you type /note add <text>, the script stores the text keyed to the current channel, and when you type /note, it prints everything stored for that channel. This exercises the parts you will use in almost any real script — reading the current context, parsing a command, writing to the client's output, and keeping state. Once that works, the same skeleton handles auto-responses, keyword alerts, or logging.
Where to look next
The documentation linked from HexChat is the authoritative reference for the current API, and the project's repository is the place to check how the scripting interfaces are actually wired up. For IRC itself — registration, SASL, channel modes — the network's own documentation matters more than the client's, since those behaviours are server-side.
How do I set up automatic connections and identification for multiple IRC networks in HexChat?
HexChat handles this through its Network List, which stores a separate profile for each IRC network you use. Each profile keeps its own server address, nicknames, auto-join channels, and login commands, so you can connect to several networks at once without retyping anything.
Setting up a network
Open HexChat → Network List (also reachable from the menu bar). Add a new network, then fill in the key fields:
- Server: the network's hostname and port, for example
irc.libera.chat/6697for a TLS connection. - Nick name / Second choice / Real name: your identity on that network.
- User name: often your nick or a short handle.
- Login method: choose the authentication type the network supports. HexChat lists SASL options alongside the older NickServ-style password field, so pick whichever the network documents.
- Password: the account password for the selected login method.
- Auto-connect at startup: tick this for the networks you want joined automatically each time HexChat launches.
- Auto-join channels: add each channel on its own line, comma-separated, for example
#hexchat, #python.
Repeat for every network. Because profiles are independent, you can be yournick on one network and yournick_ on another without conflict.
Handling identification
The cleanest approach is SASL, which logs you in during the connection handshake rather than after joining. If a network supports it, select SASL in the Login method dropdown and enter your password; HexChat then identifies you before you appear in any channel, which avoids the brief window where services have not yet recognised your nick.
Where SASL is unavailable, the older pattern is a server password or a post-connect command sent to NickServ. HexChat's per-network settings include a field for commands to run after connecting, and the Network List's password field can also serve as a server password when the network expects one. Check the network's own documentation to see which method it wants, since sending the wrong one usually just fails silently.
A practical workflow
Set up one network first and connect manually to confirm your nick, password, and channels all behave. Only then tick auto-connect. If you later see "nickname already in use" errors, the usual causes are a wrong password or a second client still holding the nick.
For networks you join rarely, skip auto-connect and keep the profile for manual use. For the two or three you live in, auto-connect plus auto-join is the point of the feature.
Where to go next
The official documentation at HexChat covers the Network List fields and the scripting interfaces in more detail, and the project's GitHub repository is the place to check current behaviour if a field looks different from what you remember. HexChat is scriptable with Lua, Python, and Perl, so if you want identification logic more elaborate than the built-in fields allow, a small script is a reasonable next step.
Where can I find and apply themes or plugins for HexChat?
Themes and plugins live in different places for HexChat, because they are different kinds of add-on. Themes are cosmetic files loaded from the HexChat website's theme gallery, while plugins and scripts come from the project's own download and documentation pages.
Themes
The HexChat site links to a dedicated theme gallery, reached from the "View Themes" link on the homepage. Theme files are typically small colour and font definitions you place in a HexChat configuration folder and then select in the client's preferences. If you want a quick visual change without touching code, this is the route to take.
Plugins and scripts
HexChat is scriptable with Lua, Python, and Perl, so most add-ons are scripts rather than compiled plugins. The official documentation explains where scripts are stored and how to load them. Community script collections also exist, and the project's GitHub presence is the place to look for the source and issue tracker.
Practical route:
- Open the HexChat homepage and follow "View Themes" for appearance changes.
- Follow "Read the Docs" for script and plugin installation instructions.
- Use "Get Downloads" to confirm which build and bundled scripting support you have.
- Check GitHub for the HexChat project if you need source, releases or to report a script problem.
Choosing between them
| Need | Use | Why |
|---|---|---|
| Change colours, fonts, layout | Theme | No coding, applies instantly |
| Add commands or automate messages | Lua, Python or Perl script | HexChat exposes scripting APIs |
| Distribute something to other users | Script hosted on GitHub or a community site | Easy to share and version |
A concrete scenario: if you run several IRC networks and want automatic identification and joins, a script is the right tool — HexChat's built-in multi-network auto-connect covers part of this, and a script handles the rest. If you only dislike the default colours, a theme is enough and avoids any maintenance burden.
One trade-off to weigh: scripts written for XChat or older HexChat versions may need small edits, and third-party scripts are not reviewed by the HexChat maintainers, so check what a script does before loading it.
User reviews (0)