A cross-platform terminal viewer for Google Chat Takeout exports.
This tool lets you browse your exported Google Chat history directly inside the terminal with:
- Direct Messages (DMs)
- Spaces / Group chats
- Pinned-only mode
- Interactive selection using
fzf - Automatic Takeout ZIP detection + extraction
- Clean chat bubble rendering
- Works on Linux, macOS, and Windows (no
lessrequired)
✅ Browse Google Chat Takeout conversations in the terminal
✅ DM + Space category selector
✅ View only pinned messages instantly
✅ Highlights pinned messages with [PINNED] marker
✅ Auto-detects Takeout folder if already extracted
✅ Auto-extracts latest takeout-*.zip from Downloads
✅ Cross-platform pager using Python (pydoc.pager)
✅ Emoji + Unicode-safe message alignment
- Python 3.8+
Check:
python3 --versionInstall required module:
pip install wcwidthThis tool uses fzf for interactive chat selection.
Linux
sudo apt install fzf
# or
sudo dnf install fzfmacOS
brew install fzfWindows
Using Chocolatey:
choco install fzfOr Winget:
winget install fzf- Export your Google Chat data from Takeout:
https://takeout.google.com/ - Download the ZIP file.
- Place it inside your Downloads folder:
~/Downloads/takeout-xxxx.zip
OR extract it so this folder exists:
~/Downloads/Takeout/Google Chat/Groups
The script automatically detects either case.
Run the script:
python3 chat_viewer.pyYou can choose:
DM→ Direct MessagesSPACE→ Group SpacesPINNED ONLY→ Only pinned messages
Once a chat opens:
-
Search pinned messages:
/PINNED -
Quit viewer:
q
Selecting PINNED ONLY will:
- Show only chats that contain pinned messages
- Display only pinned messages inside the conversation
| OS | Supported |
|---|---|
| Linux | ✅ Yes |
| macOS | ✅ Yes |
| Windows | ✅ Yes (with fzf installed) |
No need for less — pager is handled internally by Python.
-
Attachments or non-text pinned messages are shown as:
[Pinned message (non-text)] -
Multi-part Takeout ZIP exports (
-001.zip,-002.zip) are not yet merged automatically.
- Full attachment rendering
- Multi-part ZIP support
- Pure Python selector (remove fzf dependency)
- Export pinned messages to a separate file
Pull requests and suggestions are welcome!
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
See the LICENSE file for details.