QuickChat is a minimalistic LAN messenger, written in pure C with the Win32 API. Does not require installation, leaves no traces, and works on any version starting from Windows Vista up to 11.
Based on MicroChat Framework.
Active development is now focuses on maintenance, bug fixes and security patches.
No major features are planned.
- Portable - just 1 .exe file
- Unicode Support - any languages, any symbols.
- QC (QuickChat) protocol with optional XOR.
- Logging - save chat history and events. Only for host, disabled by default.
- Tiny Size - just 150 KB.
- Drag-and-Drop - drag-and-drop any compatible text file and it will extract text instantly.
- OS - Windows Vista and newer.
- Run QuickChat.
- In the startup dialog, click Host.
- Configure options: check XOR Obfuscation and/or Enable Logging if needed.
- Share the displayed IP address with peers (must be on the same network).
- Run QuickChat.
- In the startup dialog, click Join.
- Enter the Host IP address in the connection window and click Connect.
- Verify protocol settings (XOR must match the host's configuration).
Note: All logs and history are stored locally. Neither side uploads or transmits chat history anywhere.
Logging is disabled by default.
- Host: Can save the full session history (messages, timestamps, connection IPs) to a local file.
- Client: Can dump the current chat history to a file at any time.
Nothing is sent to the cloud. Everything is stored locally.
- Quick 1-to-1 chat in a local network: No server, no accounts, no setup.
- Private chat: Optional XOR layer hides traffic from casual inspectors.
- Portable chat: Single .exe file, no registry, no install, no traces.
- One-time sessions with no traces: Logs off by default. Close the app and nothing remains.
Read CHANGELOG.md.
- MinGW compiler
- Python (any version)
- Windows (7/10/11 recommended for build tools)
- PowerShell
7z.exe- packaging.keygen.py- XOR key generator.keygen_fixed.py- XOR key generator, but with your own key.build.bat- build script.
Build script provide 2 types of compiled binary:
- Release:
- Purpose: Ready for distribution application.
- Includes: All user interface dialogs, manifest, resources, icon, full optimization.
- Size: 150 KB/
- Usage:
build.batwithout args or/packto create ZIP distribution.
- MinBuild:
- Purpose: Quick and dirty compilation for fast test of features or code.
- Includes: Only core resources. About, Computer Info dialogs, icons, manifest are removed.
- Optimization: Disabled.
- Size: 180-200 KB (larger because of debug symbols and no optimization).
- Usage:
build.bat /minbuild
Note: It produce a binary with different name to do not overwrite release binary
- Clone or download a repository
- Make sure
gcc,windres, andpythonare available in systemPATH. - Open a command prompt in the project folder.
- (Optional) If you want to define your own key before, run:
python keygen_fixed.py <your own key>
Note: To ensure compatibility with official releases, use key specified in release you are targeting for. - Run depending on what you need:
build.bat- Compile QuickChat without changing key and packing.
build.bat /rekey- Compile QuickChat and regenerate key without packing.
build.bat /pack- Compile QuickChat and pack without regenerating key.
build.bat /rekey /pack- Compile QuickChat, regenerate key and pack.
build.bat /minbuild- Compile QuickChat with most minimal configuration.
build.bat /clean- Delete existing compiled files.
build.bat /clean /nocleankey- Delete existing compiled files, but do not delete key file.build.bat /minbuild /rekey- Compile QuickChat with most minimal configuration and regerenate key
QuickChat uses a custom TCP-based protocol. The base protocol is QC (QuickChat Plaintext).
- Client initiates: The host stays silent until it receives a valid handshake.
- Client sends:
QC:PCNAME\0PCNAMEis the sender's computer name (or any custom name).\0is the null-terminator, required for C-string compatibility.
- Host responds:
QC:HOSTNAME\0(in the same format). - Chat starts: Both sides can now exchange text messages.
If XOR is enabled, all transmitted data (including the handshake) is XORed before sending and decoded upon receipt.
- The first 3 bytes must always be
QC:(or its XORed equivalent). The host drops any connection that fails this check. - Error messages: If a handshake fails (e.g., malformed packet or invalid prefix), the host closes the connection. Error responses (
QCERR: ...) are sent in plain text only when XOR is disabled. If XOR is enabled, the server drops the connection silently to prevent sending XORed garbage that the client cannot parse.
This project uses 7-Zip for archiving.
7z.exe is included for convenience and is used under the terms of the GNU LGPL license.
Enjoy! If you have questions, write me to my Discord - @pcsettings