{"id":15093446,"url":"https://github.com/nating/whatsapp-stats","last_synced_at":"2025-04-12T07:41:47.413Z","repository":{"id":91224677,"uuid":"89912967","full_name":"nating/whatsapp-stats","owner":"nating","description":"A program for visualising data from a WhatApp chat.","archived":false,"fork":false,"pushed_at":"2018-05-03T22:42:01.000Z","size":517,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T02:51:17.234Z","etag":null,"topics":["statistics","visualize-data","whatsapp-chat"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nating.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-05-01T09:44:35.000Z","updated_at":"2025-01-29T14:25:47.000Z","dependencies_parsed_at":"2023-03-20T18:16:45.325Z","dependency_job_id":null,"html_url":"https://github.com/nating/whatsapp-stats","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"e65c4c915f348b98bbff11a59724c5dd107001e2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nating%2Fwhatsapp-stats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nating%2Fwhatsapp-stats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nating%2Fwhatsapp-stats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nating%2Fwhatsapp-stats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nating","download_url":"https://codeload.github.com/nating/whatsapp-stats/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248536981,"owners_count":21120683,"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":["statistics","visualize-data","whatsapp-chat"],"created_at":"2024-09-25T11:23:16.061Z","updated_at":"2025-04-12T07:41:47.393Z","avatar_url":"https://github.com/nating.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"**WhatsApp does not endorse or sponsor this project.**\n\n# WhatsApp Stats [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\n\u003cimg src=\"/assets/whatsapp-stats-logo.png\" width=\"150px\"\u003e\u003c/img\u003e\n\nA web app for visualising data from a WhatsApp chat.\n\nThe current version can be used [here](https://geoffnatin.com/whatsapp-stats) for chats exported from iOS.\n\n## Overview\nWhatsApp offers users the ability to export chats as text files.  \nThese text files' format make it easy to parse, and to gather interesting data from them.\n \n## Terminology\nTo gain insight into the statistics of a chat, it is necessary to define some terms.\n\n|Term                 |Meaning|\n|---------------------|-------|\n|Chat                 |A chat of messages between two or more users.\n|Member               |A participant in a chat.\n|Member Group         |A set of participants in a chat.\n|Message              |An image, audio file, or text sent into a chat.\n|Image                |An image sent into a chat with or without text.\n|Audio                |An audio file, from a voice recording or otherwise, sent into a chat.\n|Video                |An video sent into a chat with or without text.\n|Location             |A location, sent into a chat.\n|Document             |A document sent into a chat with or without text.\n|Text                 |Some simple text sent into a chat.\n|Conversation         |A series of messages sent into a chat without a **significant delay** between them (must be defined more clearly).\n|Lit                  |A conversation is said to be *'lit'* for a given time period if its average delay between messages for that time period is less than **40 seconds** (research needed). \n|Response             |**Definition Needed** (A message that is being sent because another message had been sent in before. Difficult to define with time because a user might not respond for days.)\n|Conversation starter |A message is said to be a *'conversation starter'* if it is the first message sent after a **significant delay** since the last conversation in the chat.\n|Conversation finisher|A message is said to be a *'conversation finisher'* if it is the last message of a conversation.\n|Seen                 |A message is said to be seen after **24hrs** (research needed) have passed since it was sent into the chat.\n|Activity             |The creation of a chat, members leaving a chat, members joining a chat, or any type of message into a chat.\n \n## Queries\n\nQueries about the data in the whatsapp chat are the heart of the project. Implementing each query to find figures is easy. The difficult/time consuming part is to integrated the query into the app by representing the data in an easy-to-read nice way.\n\nHere are some examples of information about a chat that a user may be interested in:\n\n**Integrated**\n * Message counts of members of a chat\n * Image count of members of a chat\n * Audio file count of members of a chat\n\n**Implemented**\n * Message count of a chat\n * Image count of a chat\n * Audio file count of a chat\n * Video count of a chat\n \n**Ideas**\n * Average message count per day/month/year\n * Emoji count of members of a chat\n * Conversation starters/finishers count of members of a chat\n * Conversation count of members of a chat\n * Conversation counts of member groups\n * Time of the day/week/year chat is most active\n * Time of the day/week/year a member is most active\n * Chat activity before vs after a member is added/leaves\n * What were the most lit conversations about\n * Chat activity over time\n * Member activity over time\n * Member who gets the most/least responses\n * Average number of responses to a conversation starter of members of a chat\n \n## Parsing chat activity \n\n### iOS\nA WhatsApp chat's text file is made up of lines of activity. Each activity is represented by its own line and takes the form:\n```\ndd/mm/yy, hh:mm:ss: \u003cactivity\u003e\n```\n\nActivities can take different forms:\n\nWe can see that *Messages* always begin with `\u003cuser\u003e`, while other types of activity may not.\n\nActivity              |Form in chat exported without media\n----------------------|---\n|Member addition      |`\u003cuser\u003e' was added'` or `\u003cuser\u003e' added you'` or `You were added`\n|Member removal       |`\u003cuser\u003e' was removed'` or `\u003cuser\u003e removed you`\n|Member leaving       |`\u003cuser\u003e' left'` or `'You left'`\n|Encryption message   |`'Messages you send to this group are now secured with end-to-end encryption.'` or `'Messages you send to this chat and calls are now secured with end-to-end encryption.'`\n|Admin change         |`'You're now an admin'`\n|Number change        |`\u003cuser\u003e' changed from ‪'\u003cnumber\u003e'‬ to '‪\u003cnumber\u003e` or `'changed from ‪'\u003cnumber\u003e'‬ to '‪\u003cnumber\u003e'`\n|Group chat creation  |`'You created the group \"'\u003cgroup name\u003e'\"'` or `\u003cuser\u003e  created this group`\n|Change of subject    |`\u003cuser\u003e' changed the subject to \"'\u003cnew subject\u003e'\"'` or `'You changed the subject to \"'\u003cnew subject\u003e'`\n|Location             |`\u003cuser\u003e': location: https://maps.google.com/?q='\u003clongitude\u003e','\u003clatitude\u003e`\n|Change of icon       |`\u003cuser\u003e' changed this group's icon'` or `'You changed this group's icon'`\n|Image                |`\u003cuser\u003e': \u003cimage omitted\u003e'`\n|Audio                |`\u003cuser\u003e': \u003caudio omitted\u003e`\n|Video                |`\u003cuser\u003e': \u003cvideo ommited\u003e`\n|Document             |`\u003cuser\u003e': \u003cdocument omitted\u003e'`\n|Contact              |`\u003cuser\u003e': \u003cContact card omitted\u003e'`\n|Text                 |`\u003cuser\u003e': '\u003cmessage\u003e`\n\n### Android\nChats exported from Android have a different format, so parsing them is different. I have not ventured as far as implementing the parsing of chats exported from Android, as I have an iPhone and only really attempted this project because a casual interest. If you wish to expand the repo to deal with chats exported from other Operating Systems, I encourage you to make a pull reequest!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnating%2Fwhatsapp-stats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnating%2Fwhatsapp-stats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnating%2Fwhatsapp-stats/lists"}