Exact occurrence totals
Count every matching occurrence in attributable text, including multiple configured words in one message.
Private customizable WhatsApp swear counter
Turn an exported conversation into a customizable swear jar. Count matched occurrences by participant, compare shares and review a bounded list of fictional-safe evidence rules without treating language as a verdict about anyone.
not ready to expose your own texts? try a stranger's
Free · No account · Chat content stays in your browser
MyChatWrap checks attributable text messages against a per-chat list containing 16 mild English defaults plus additions and exclusions. Matching is case-insensitive, whole-word and stretch-aware. It counts every matched occurrence, while saving at most 300 evidence messages. The counter cannot interpret quotation, humor, reclamation, harassment or intent.
The preview renders the extracted production ComparisonSwearJarCard presentation with fictional counts, plus a safe accessible occurrence sample that explains what the private Open Jar viewer contains.
Product preview
Fictional example0
| Participant | Time | First match | Snippet |
|---|---|---|---|
| Person A | Jun 18, 2025 · 9:14 PM | damn | Damn, I left the charger at home again. |
| Person B | Jun 14, 2025 · 6:32 PM | crap | Crap — the train was cancelled. |
| Person A | Jun 2, 2025 · 8:05 AM | hell | Where the hell did I save that file? |
The complete fictional fixture contains 146 occurrences. A real jar keeps exact totals but stores no more than 300 matching-message instances, each with a snippet capped at 300 string units.
Count every matching occurrence in attributable text, including multiple configured words in one message.
Compare two-person counts and shares using the production Overview card, or rank all members in a group leaderboard.
Add tracked words or remove and restore individual defaults without changing other imported chats.
Match emphasized spellings such as extended letters while protecting short innocent words from doubled-letter false positives.
Retain an exact aggregate total while limiting saved message instances to the first 300 matched messages.
Use the highest participant count for the optional Potty Mouth award when swear-jar data is available.
Choose Export chat in WhatsApp and save the .txt or .zip containing the history you want counted.
Drop the export above. The browser counts active default and custom words in attributable text messages.
Compare participants, open the bounded evidence list and adjust the per-chat vocabulary when a default or custom term does not fit.
Two minutes on your phone. Choose your device, follow the taps, then come back and add the file above.
Watch the whole flow — export from WhatsApp, then drop the file into this app.
The starter list is: damn, hell, crap, ass, asshole, bastard, bitch, bloody, bollocks, bugger, dick, piss, shit, fuck, fucking and goddamn. It is deliberately mild, English-only and non-exhaustive.
Each imported chat can add custom tracked words, including inside jokes or nicknames, and exclude or restore defaults. The engine deduplicates, trims and lowercases the effective list before matching.
Only non-empty text entries with an attributable sender are eligible. The effective vocabulary becomes one case-insensitive global regular expression with word boundaries. Every match increments both the participant and chat total, so a message containing two configured terms adds two occurrences.
Stretch matching accepts extended letters. Strict handling preserves the minimum repetition in doubled-letter source words: ass matches ass or assss but not the innocent word as. Word boundaries also prevent ass from matching class or classic.
For each matched message retained under the cap, the jar stores its identifier, participant, timestamp, first matched word and the first 300 JavaScript string units of message content. If one message contains several matches, totals include all of them but the evidence row labels only the first matched word.
Aggregate counts remain exact even when more than 300 matched messages exist. The evidence list retains the first 300 matching messages in chronological input order, despite an outdated engine comment that describes most-recent order.
The matcher cannot know whether a term is quoted, affectionate, joking, reclaimed, self-directed, part of a song, or used to attack somebody. Custom words can be non-profanity by design, so the total is better understood as configured-word occurrences.
Do not use the leaderboard to label somebody abusive or toxic. Reviewing surrounding context is essential, and serious safety concerns cannot be assessed by a word counter.
MyChatWrap computes the swear jar in your browser and stores its result in the local chat database. Standard processing does not upload message content, participant names or evidence snippets to the MyChatWrap server. Shared snapshots include participant counts only, never snippets or instances.
Turn milestones, statistics and selected memories into an editable keepsake PDF.
See the total, each participant's share, message types and volume over time.
Explore activity, replies, balance, words, emoji, dynamics and group patterns.
Need every message instead? Create a complete chronological transcript PDF.
Add an exported WhatsApp conversation to compare configured-word occurrences and adjust the vocabulary for that chat.
Count the swear jar