chat-export: Convert WhatsApp Chats to HTML

This tool converts a WhatsApp chat export into two HTML formats: one with inline media (such as images, videos, and audio files) and a compact version with media links.

Video Tutorial (still refers to the previously used tool name instead of chat-export):
YouTube"

Binary Release Downloads

Why is this useful?

The HTML export is:

Maybe you want to:

Furthermore, the tool is open-source and runs offline on your computer, so you can be sure that your data is not being sent to any server.
And by the way, it’s free! If you find it useful, you can donate.

Instructions

  1. Export the Chat: Begin by exporting a chat from the WhatsApp app, preferably with media included. For detailed instructions, refer to WhatsApp FAQ. You can for example save it on Google Drive or Dropbox or send it to yourself with WhatsApp.

  2. Transfer the File: Move the exported ZIP file to your computer. If you have sent it to yourself with WhatsApp, you can download it with WhatsApp Web or with the WhatsApp App on your computer. Delete the WhatsApp message afterwards to save space.

  3. Download and Run the Tool:

  4. For Windows, download chat-export.exe.

Because the .exe is unsigned, you will see a warning, but after clicking on "More Information" you should have the option to run it anyway. An EV code signing certificate for Windows costs a lot. If I get enough donations, I will buy one, so I can release signed exe files.

Once installed on Mac: 1. Open the Terminal app (e.g. by typing "terminal" in Spotlight Search). 2. Type: chat-export

This will start the chat export tool from anywhere in the terminal.

To uninstall chat-export from Mac, open the Terminal and run: sudo rm /usr/local/bin/chat-export

The executables have been built with pyinstaller.

OR

Usage

The tool supports both interactive and non-interactive modes:

Interactive Mode (Default)

CLI Parameters:

-o, --output-dir: Base directory where the chat folder will be created (optional, default: current directory)

Command Line Interface (Non-Interactive Mode)

For automation, scripting, or when you know all parameters in advance, you can use the non-interactive CLI mode. This mode processes the chat without any prompts and is perfect for batch processing or integration into other tools.

Basic Usage: python main.py -n -z "path/to/chat.zip" -p "Your Name"

CLI Parameters:

Examples:

Basic conversion: python main.py -n -z "WhatsApp Chat with John.zip" -p "Your Name" With absolute path to ZIP file (Windows): python main.py -n -z "c:\temp\WhatsApp Chat with John.zip" -p "Your Name"

With date filtering: python main.py -n -z "chat.zip" -p "Your Name" --from-date "01.01.2024" --until-date "31.12.2024"

Custom output directory (creates chat folder in /tmp instead of current directory): python main.py -n -z "chat.zip" -p "Your Name" -o "/tmp"

Windows paths (important: no trailing backslash): python main.py -n -z "chat.zip" -p "Your Name" -o "C:\temp"

Important Notes: - The participant name must match exactly as it appears in the chat (case-sensitive) - If the participant name is not found, the tool will display all available participants and exit

Supported languages

WhatsApp chat exports vary depending on your phone’s system language.

chat-export has been tested with many languages and regional settings.

If it doesn't work for your language, please let me know.

Supported Operating Systems

Limitations

There is information in chats, that is not included in the export.zip created by WhatsApp. As a consequence, this information cannot be rendered by chat-export.

This includes:

Disclaimer

chat-export comes with no warranty. Use it responsibly and respect the privacy of other chat participants. The tool is not affiliated with WhatsApp or Meta.

Latest Release

Name
Release 0.9.1
Published
2025-09-18 10:59
Notes
- The tool now supports a non-interactive mode with -n, in which the path to the zip file and all other information is passed in as cli parameters and the user is not prompted for additional input.
- The code has been refactored (separation between parser and renderer), allowing for easier feature extension or code re-use.