{"id":27633916,"url":"https://github.com/denvercoder1/whatsapp-group-wrapped","last_synced_at":"2026-02-09T12:01:46.428Z","repository":{"id":266695169,"uuid":"899069038","full_name":"DenverCoder1/whatsapp-group-wrapped","owner":"DenverCoder1","description":"Create a summary of stats from a WhatsApp group export","archived":false,"fork":false,"pushed_at":"2025-02-09T12:41:10.000Z","size":57,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T02:43:29.778Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DenverCoder1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-05T15:07:46.000Z","updated_at":"2025-03-11T23:26:48.000Z","dependencies_parsed_at":"2024-12-05T16:25:17.324Z","dependency_job_id":"a4e0a334-8d10-49b0-8e5c-8d025321ef2f","html_url":"https://github.com/DenverCoder1/whatsapp-group-wrapped","commit_stats":null,"previous_names":["denvercoder1/whatsapp-group-wrapped"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DenverCoder1%2Fwhatsapp-group-wrapped","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DenverCoder1%2Fwhatsapp-group-wrapped/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DenverCoder1%2Fwhatsapp-group-wrapped/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DenverCoder1%2Fwhatsapp-group-wrapped/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DenverCoder1","download_url":"https://codeload.github.com/DenverCoder1/whatsapp-group-wrapped/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250487725,"owners_count":21438645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-23T18:21:54.972Z","updated_at":"2026-02-09T12:01:46.422Z","avatar_url":"https://github.com/DenverCoder1.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WhatsApp Group Wrapped\n\nCreate a summary of stats from a WhatsApp group export\n\nGet yours at [https://whatsappwrapped.demolab.com](https://whatsappwrapped.demolab.com/)!\n\n\u003ca href=\"https://whatsappwrapped.demolab.com/\"\u003e\u003cimg width=\"1125\" height=\"600\" alt=\"image\" src=\"https://github.com/user-attachments/assets/5cc79189-d04d-42a8-8ccb-0f4f39c0c822\" /\u003e\u003c/a\u003e\n\n_🔒 Your uploaded chat files are **deleted immediately** after generating your results. Your data is never stored or shared._\n\n## Developer Usage\n\n### Web Interface (PHP)\n\nThe web interface in the `api/` directory allows you to upload a WhatsApp chat export file and see the generated stats in your browser.\n\n1. Make sure you have PHP and Node.js installed on your computer\n2. Start a PHP server in the project directory:\n\n```bash\nphp -S localhost:8000 -t api -c api/php.ini\n```\n\n1. Open your browser to `http://localhost:8000`\n2. Upload your WhatsApp chat export (.txt or .zip file)\n3. Configure your date range and top count\n4. Click \"Generate Wrapped\" to see your stats\n5. Download the results if desired\n\n**Note for large files:** If you encounter upload errors with large chat exports, use the command with `-c php.ini` as shown above. The included `php.ini` file increases upload limits to 100MB and allows longer processing times.\n\n### Command Line (Node.js)\n\nThe command line script in the `script/` directory allows you to generate the WhatsApp Group Wrapped summary directly in the terminal and is the same script used by the web interface.\n\n1. Export a WhatsApp group chat from the WhatsApp app on your phone:\n    - Open the group chat\n    - Tap the 3 dots at the top, then \"More \u003e Export chat\"\n    - Choose \"Without media\"\n    - Share the chat export to your computer\n2. Make sure `node` is installed on your computer (https://nodejs.org/)\n3. **(Optional)** Create `script/config.js` to map phone numbers to names:\n    - Copy `script/example.config.js` to `script/config.js`\n    - Populate `TAG_TO_NAME` with a mapping of phone numbers to names (e.g., `\"@12025551212\": \"John Doe\"`)\n    - This is only needed if you want to display names instead of phone numbers in sections where contact names are not available\n4. Run the script with the path to your exported chat file.\n\n```bash\nnode script/main.js \u003cfile\u003e [startDate] [endDate] [topCount] [outputFormat] [language]\n```\n\n**Parameters:**\n- `file` (required): Path to the WhatsApp chat export file (.txt or .zip)\n- `startDate` (optional): Start date in YYYY-MM-DD format\n  - Default: January 1st of last year (or current year if run in December)\n- `endDate` (optional): End date in YYYY-MM-DD format\n  - Default: December 31st of last year (or current year if run in December)\n- `topCount` (optional): Number of top entries to show in lists\n  - Default: 25\n- `outputFormat` (optional): Output format - `text` or `json`\n  - Default: text\n- `language` (optional): Language code for output translations - `en`, `he`, etc.\n  - Default: en\n\n**Examples:**\n\n```bash\n# Basic usage - uses smart defaults for year\nnode script/main.js chat.zip\n\n# Custom date range for a specific year\nnode script/main.js chat.zip 2025-01-01 2025-12-31\n\n# Show top 10 entries and output as JSON\nnode script/main.js chat.zip 2025-01-01 2025-12-31 10 json\n\n# Generate output in Hebrew\nnode script/main.js chat.zip 2025-01-01 2025-12-31 25 text he\n\n# Skip optional middle arguments with empty strings\nnode script/main.js chat.zip '' '' '' text he\n```\n\n5. The script will output a summary of the chat to the terminal and save results to the `output/` directory\n\n## Language Support \u0026 Translations\n\nThe tool supports multiple languages for output. Currently available languages:\n\n- **English** (`en`) - Default\n- **Hebrew** (`he`)\n- **Italian** (`it`)\n- **Japanese** (`ja`)\n\n### Adding New Translations\n\nTo add support for a new language:\n\n1. Create a new file in `script/translations/` named `{language_code}.js` (e.g., `es.js` for Spanish, `fr.js` for French)\n2. Copy the structure from `script/translations/en.js`\n3. Translate all the strings in the new file\n4. Add the new language code and name to the list of supported languages above\n5. The language will automatically be available - just pass its code as the language parameter\n\n## Example output\n\n```\n====================================================\n                                                   \n                  Welcome to Your                  \n            WhatsApp Group Wrapped 2025            \n               Pomegranate Community               \n                                                   \n====================================================\n\nTop senders:\nJeffrey Thomas - 158 messages\nSusan Smith - 129 messages\nEric Thomas - 113 messages\nArnold Palmer - 111 messages\nDaryl Williams - 106 messages\nAnnie Levin - 10 messages\nJoe Smith - 7 messages\nMary Williams - 6 messages\nNancy Johnson - 5 messages\nAmy Gross - 4 messages\n\nTop media senders:\nSusan Smith - 116 messages with media\nEric Thomas - 103 messages with media\nDaryl Williams - 100 messages with media\nArnold Palmer - 86 messages with media\nJeffrey Thomas - 47 messages with media\nMary Williams - 0 messages with media\nJoe Smith - 0 messages with media\nAnnie Levin - 0 messages with media\nAmy Gross - 0 messages with media\nNancy Johnson - 0 messages with media\n\nTotal messages with media: 452 \n\nTop question askers:\nJeffrey Thomas - 6 questions asked\nArnold Palmer - 3 questions asked\nAnnie Levin - 3 questions asked\nSusan Smith - 3 questions asked\nEric Thomas - 1 question asked\nAmy Gross - 1 question asked\nDaryl Williams - 1 question asked\n\nTop taggers:\nSusan Smith - 4 tags sent\nJeffrey Thomas - 2 tags sent\nMary Williams - 2 tags sent\nAnnie Levin - 1 tag sent\nDaryl Williams - 1 tag sent\nArnold Palmer - 0 tags sent\nJoe Smith - 0 tags sent\nEric Thomas - 0 tags sent\nAmy Gross - 0 tags sent\nNancy Johnson - 0 tags sent\n\nTop taggees:\n@⁨Eric Thomas⁩ - tagged 4 times\n@⁨Joe Smith⁩ - tagged 3 times\n@⁨Mary Williams⁩ - tagged 1 time\n@⁨Arnold Palmer⁩ - tagged 1 time\n@⁨Annie Levin⁩ - tagged 1 time\n\nTotal messages: 649 \n\nMessages deleted: 6 \n\nMessages deleted by admin: 2 \n\nDaily average: 1.78 \n\nMessage senders: 10 \n\nMost Active Hours:\n14:00 - 65 messages\n11:00 - 63 messages\n12:00 - 63 messages\n13:00 - 60 messages\n15:00 - 59 messages\n19:00 - 58 messages\n10:00 - 57 messages\n16:00 - 56 messages\n18:00 - 53 messages\n17:00 - 52 messages\n9:00 - 43 messages\n8:00 - 14 messages\n20:00 - 6 messages\n\nMost Active Days:\nWednesday - 115 messages\nThursday - 103 messages\nTuesday - 99 messages\nMonday - 98 messages\nFriday - 82 messages\nSaturday - 80 messages\nSunday - 72 messages\n\nMost Active Months:\nJanuary - 152 messages\nFebruary - 87 messages\nMarch - 58 messages\nApril - 44 messages\nJune - 44 messages\nJuly - 44 messages\nAugust - 44 messages\nSeptember - 44 messages\nOctober - 44 messages\nNovember - 44 messages\nMay - 33 messages\nDecember - 11 messages\n\nMembers joined: 5 \n\nTotal words sent: 975 \n\nWords per message: 5.1 \n\nTop Words:\neveryone - 40 times\nmorning - 31 times\ncommunity - 31 times\nfor - 26 times\ngreat - 25 times\nthe - 22 times\nhappy - 21 times\ncelebration - 20 times\ngood - 20 times\na - 17 times\ncelebrations - 16 times\nfile - 15 times\nattached - 15 times\nthis - 14 times\nyou - 12 times\nto - 11 times\ni'll - 10 times\ntime - 9 times\nhave - 9 times\nanyone - 8 times\nanother - 8 times\nday - 8 times\nis - 7 times\nnext - 7 times\ni - 7 times\n\nTop Uncommon Words:\neveryone - 40 times\ncommunity - 31 times\ncelebration - 20 times\ncelebrations - 16 times\nfile - 15 times\nattached - 15 times\nanyone - 8 times\nanother - 8 times\ntoday - 7 times\nthanks - 6 times\ncoming - 5 times\nlooking - 5 times\ntonight - 5 times\nweekend - 5 times\nexcited - 4 times\nsmith - 4 times\nmoving - 4 times\nphone - 4 times\namazing - 4 times\nlet's - 4 times\neric - 4 times\nthomas - 4 times\nmonth's - 4 times\nfriday - 4 times\nneeds - 3 times\n\nTop Emoji Senders:\nJeffrey Thomas - 142 emojis\nArnold Palmer - 32 emojis\nAnnie Levin - 6 emojis\nJoe Smith - 5 emojis\nMary Williams - 4 emojis\nEric Thomas - 2 emojis\nAmy Gross - 0 emojis\nNancy Johnson - 0 emojis\nSusan Smith - 0 emojis\nDaryl Williams - 0 emojis\n\nTop Emojis:\n🎉 - 27 times\n📣 - 27 times\n🍷 - 14 times\n🔥 - 12 times\n🕯️ - 9 times\n🍕 - 2 times\n\nNumber of unique emojis: 6 \n\nTotal unique phone numbers sent as contacts: 6\n\nTop 6 most shared contacts:\n1. Bob's Phone Repair (+12015550937) - shared 5 times\n   Also known as: Bob's Phone Repair (2), Bob Phone \u0026 Laptop (1), Robert Brown - Tech Repairs (1), Robert Brown (1)\n2. J Johnson (+12015550207) - shared 3 times\n   Also known as: J Johnson (1), J. Johnson Van (1), John Movers (1)\n3. A. Moving Co. (+12015550409) - shared 3 times\n   Also known as: A. Moving Co. (1), Aaron's Moving Service (1), Aaron Mover (1)\n4. Mike (+12015550224) - shared 2 times\n5. Daniel Smith (Technician) (+12015550142) - shared 1 time\n6. Sarah Davis Alterations (+12015550909) - shared 1 time\n\nContacts shared by multiple people: 4\nContacts with different names: 3\n```\n\n## Troubleshooting\n\n### No results or parsing errors\n\nIf your chat export returns no results or fails to parse, the issue is likely due to an unsupported date/time format. WhatsApp exports use different formats depending on your phone's language and region settings.\n\n**Solution:** Change your phone's language settings to English before exporting the chat:\n\n1. Go to your phone's Settings → Language \u0026 Region\n2. Change the language to English (US or UK)\n3. Open WhatsApp and export the chat again\n4. After exporting, you can change your phone's language back\n\nThis ensures the chat export uses a date/time format that the parser recognizes.\n\n### Other common issues\n\n- **Upload errors with large files**: Use the PHP server with the `-c php.ini` flag as shown in the setup instructions to increase upload limits.\n- **Missing sender names**: If senders appear as phone numbers, use the `TAG_TO_NAME` configuration to map phone numbers to names.\n\n## What's next?\n\nUpcoming features and improvements may include:\n\n- More detailed analytics and visualizations\n  - Most active day (eg. 'On June 15, 2025 the most messages were sent')\n  - Longest period of time without messages (eg. 'The group went 2d 5h without sending messages')\n  - Top domains of website links sent\n  - More ideas?\n- Detailed media analysis (shared images, videos, location, polls, files, links etc.)\n- More language support\n- Switch to using [`whatsapp-chat-parser`](https://www.npmjs.com/package/whatsapp-chat-parser) for improved parsing, this may allow supporting more date formats?\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for more details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenvercoder1%2Fwhatsapp-group-wrapped","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenvercoder1%2Fwhatsapp-group-wrapped","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenvercoder1%2Fwhatsapp-group-wrapped/lists"}