/ Works
/ 2026
/ Tooly
Tooly—WhatsAppExporter
A Chrome extension that exports WhatsApp contacts, group members and Business labels to CSV, Excel, vCard or text. Runs entirely in the browser — nothing is uploaded.
/ Client
Tooly
/ Role
Solo — product and engineering
/ Timeline
Jun — Aug 2026
/ Stack
Chrome Extension / TypeScript / Firebase Auth / Side Panel API / XLSX / vCard

About the project
/ Overview
Tooly is a Chrome extension that exports WhatsApp contacts, group members, one-to-one chats and Business labels to CSV, Excel, vCard or plain text. It runs entirely in the browser against WhatsApp Web's own internal data — nothing is uploaded anywhere — and ships as part of a wider toolkit of browser utilities at tooly.contact.
/ The Challenge
Every other tool in this category scrapes the DOM, and the DOM is the wrong source. It cannot see members WhatsApp has not painted, and it cannot resolve the privacy LIDs WhatsApp now issues in place of phone numbers — so exports come back partial, with no indication of what is missing. Modern WhatsApp Web made this harder rather than easier: from 2.3000 on it no longer uses Webpack, so there is no bundle to hook into.
/ The Approach
Rather than read the page, the extension reads the app. Its internals are reachable through the global `window.require` registry, so a small function injected into the page's MAIN world pulls `WAWebCollections` for chats, contacts, group metadata and labels, `WAWebLidMigrationUtils.toPn()` to turn privacy LIDs back into real numbers, and `WAWebPhoneUtils` for formatting and country detection. The UI is a side panel rather than a popup so it survives downloads and tab switching, and every number WhatsApp genuinely will not give up is reported as hidden instead of silently dropped.
/ The Result
Shipped at 1.1.3. The listing has been seen 3,000 times, visited 500-plus, and installed 250 times at a 5.0 rating — roughly one install for every two people who looked. It returns all members including saved contacts — which DOM scrapers cannot — across four sources and five output formats, with a unique-numbers toggle and an admin filter that re-filters live rather than re-scanning.
/ What it took
- Reads WhatsApp Web’s internals through the global `window.require` registry — 2.3000 dropped Webpack, so there is no bundle to hook
- Resolves privacy LIDs back to real phone numbers via `WAWebLidMigrationUtils.toPn()`, which DOM-scraping tools cannot do
- Four sources — groups, contacts, chats and Business labels — out to CSV, XLSX, vCard or TXT
- Entirely local: nothing leaves the browser, and it is explicit about the numbers WhatsApp will not give up
- Side-panel UI rather than a popup, so it stays open across downloads
- Shipped and versioned at 1.1.3
/ Results and outcomes
- Installs
- 250
- Star rating
- 5.0
- Listing visits
- 500+