Chat Log Parser
Help & Documentation
Getting Started
What is Chat Log Parser?
Chat Log Parser is a tool designed to analyze chat logs from Roll20, a popular virtual tabletop platform for playing tabletop RPGs. It extracts messages, character actions, dice rolls, and provides detailed statistics about your gaming sessions.
Exporting Your Chat Log from Roll20
- Open your Roll20 game session
- Click the gear icon to open Game Settings
- Scroll down to "Chat Log" section
- Click "View Chat Archive" or use the chat archive feature
- Select the date range you want to export
- Save the page as an HTML file (Ctrl+S or Cmd+S)
Uploading Your Chat Log
- Log in to Chat Log Parser using your account
- On the home page, click the upload area or drag and drop your HTML file
- Click "Upload Chat Log" to upload your file
- You'll be taken to the Session Configuration page where you can set up session detection rules (see Sessions section)
- Click "Parse Chat Log" to begin processing
- Wait for the progress bar to complete - larger files take more time
- View your results with statistics, trophies, and data tables
Game Systems
Automatic Detection
Chat Log Parser automatically detects which game system your Roll20 game uses by reading the character sheet type from the HTML file. Supported systems include:
- D&D 5th Edition - Full support with advantage/disadvantage handling
- Pathfinder 1e & 2e - Standard D20 parsing
- Starfinder - Standard D20 parsing
- Call of Cthulhu - Percentile dice support
- Other Systems - Generic D20 parsing for unsupported sheets
The detected game system is shown on your results page along with the parser version used.
⚠️ Testing Note: The parser has been thoroughly tested and optimized for D&D 5th Edition and Pathfinder 1st Edition. Other game systems may produce unexpected or inaccurate results. If you use a different system, please verify the results carefully.
D&D 5e Advantage & Disadvantage
For D&D 5th Edition games, the parser intelligently handles advantage and disadvantage rolls:
- Advantage: When two D20s are rolled with advantage, only the higher result counts toward your statistics
- Disadvantage: When two D20s are rolled with disadvantage, only the lower result counts toward your statistics
- Normal Rolls: Standard rolls always use the first die result
This ensures your D20 statistics accurately reflect your actual roll outcomes rather than counting both dice from advantage/disadvantage rolls.
Parser Versioning
Each parsed result stores the parser version that was used. This helps track when parsing logic has been updated. If you notice unexpected results, check if the parser version matches your expectations - you can always update your chat log to re-parse with the latest version.
Sessions
What is Session Detection?
Session detection automatically divides your chat log into separate gaming sessions based on time gaps and activity patterns. This lets you see statistics and trophies for each individual session, not just the overall totals.
Configuring Session Detection
After uploading a chat log, you'll see the Session Configuration page. Here you can customize how sessions are detected. These rules are applied in order:
- Enable Session Detection: Toggle this on to split your log into sessions
- Minimum Events Per Session: Sessions with fewer events get merged with adjacent sessions
- Hours Between Sessions: Time gap that triggers a new session (e.g., 4 hours means a 4+ hour gap starts a new session)
- Maximum Session Duration: Force a new session after this many hours, even without a time gap
Each rule can be enabled or disabled independently using checkboxes.
Session Naming Options
Choose how your sessions are labeled:
- By Date: Sessions are named by their start date (e.g., "December 6, 2025")
- By Number: Sessions are numbered sequentially (e.g., "Session 1", "Session 2")
- Custom Names: After parsing, you'll be redirected to a page where you can enter custom names for each session (e.g., "The Dragon's Lair", "Escape from the Dungeon")
Editing Session Names
You can change session names at any time:
- View your parsed result
- Find the "Sessions" section
- Click the "Edit Names" button in the section header
- Enter your custom names for each session
- Click "Save Session Names" to apply changes
Per-Session Trophies
When enabled, trophies are calculated for each session individually. This shows who was the luckiest or unluckiest in each gaming session, rather than across the entire chat log. Toggle "Show Trophies Per Session" on the configuration page to enable this feature.
Session trophies appear on collapsible session cards on your results page, showing:
- Session name and date
- Number of events and duration
- Trophy badges for that session's winners
- Top 5 players by D20 roll count
Understanding Results
Statistics Overview
After parsing, you'll see summary cards showing:
- Total Entries: The total number of messages and actions found
- Unique Players: How many different players participated
- Total Dice Rolls: The number of dice rolls detected
- Session Duration: Estimated time span of the chat log
Data Tables
The results page includes several expandable sections:
- Message Types: Breakdown of general messages, whispers, and roll results
- Action Types: Categories of character actions (attacks, skills, feats, etc.)
- Messages by Player: How many messages each player sent
- Character Actions: Detailed list of all character sheet actions
Collapsible Sections
Each section on the results page can be collapsed or expanded by clicking the arrow button. Your collapse preferences are saved in your browser, so they'll persist between visits.
Trophies
Character Trophies
Trophies are awarded based on each player's rolling performance during the session:
- Lucky Star: Awarded to the player with the highest percentage of natural 20s relative to their total D20 rolls
- Cursed Dice: Given to the player with the highest percentage of natural 1s relative to their total D20 rolls
- Dice Whisperer: The player with the highest average D20 roll value
- Meme Lord: Awarded to whoever posted the most GIFs and images in chat
Owner Trophies
When you assign owners to characters (see Owner Assignment section), the same trophies are calculated across all characters belonging to each owner. This shows who is truly the luckiest or unluckiest player when combining all their characters' rolls.
Percentage-Based Awards
Lucky Star and Cursed Dice trophies use percentages rather than raw counts. This means a player who rolled 2 natural 20s out of 10 total rolls (20%) would beat someone who rolled 5 natural 20s out of 100 rolls (5%). This creates a fairer comparison regardless of how many dice each player rolled.
D20 Statistics
D20 Roll Table
The D20 statistics table shows detailed rolling information for each player:
- Total Rolls: Number of D20 rolls made
- Average: The mean value of all D20 rolls
- Nat 20s: Count of natural 20s rolled
- Nat 1s: Count of natural 1s (critical failures)
Roll Distribution Histogram
The histogram visualizes how rolls are distributed from 1-20. Use the checkboxes in the table to select which players to include in the chart:
- Check the "All Players" box to select/deselect everyone
- Select individual players to compare their roll distributions
- The histogram updates automatically as you change selections
Owner Assignment
What are Owners?
In many RPG sessions, players control multiple characters or NPCs. Owner assignment lets you link characters to their real-world players, so statistics can be combined across all characters a person controls.
Assigning Owners
- Scroll to the "Owner Assignment" section on the results page
- For each player/character listed, use the dropdown to select an existing owner or type a new name
- Click "Save Owner Assignments" to save your changes
- Owner Trophies will update to reflect the combined statistics
Ignoring Players
If there are NPCs or players you don't want included in Owner Trophies, you can set their owner to "Ignore". Ignored players won't appear in owner statistics but will still show in individual character trophies.
Persistent Owners
Owners you create are saved to your account and will appear as options when you upload future chat logs. This makes it easy to consistently assign the same owners across multiple sessions.
Friends & Sharing
Your Friend Code
Each user has a unique 13-character friend code. You can find yours on the Friends page. Share this code with others so they can add you as a friend.
Adding Friends
- Go to the Friends page (link in the navigation bar)
- Enter your friend's 13-character code in the "Add a Friend" section
- Click "Add Friend" to send a friend request
- Once they accept, you'll both appear in each other's friends list
Sharing Results
You can share your parsed results with friends:
- View any of your parsed results
- Click the "Share" button in the action bar
- Select which friends you want to share with
- Click "Save" to update sharing settings
Shared results will appear in your friends' "Shared With Me" section on their Friends page.
Settings
Settings Overview
The Settings page is organized into two tabs for easier navigation:
- Account Management: Manage your display name, theme preferences, and account deletion
- Owners Management: View, rename, delete, and link owners to friends
Display Name
Set a custom display name that will be shown to your friends and throughout the app. If not set, your first name or email will be used instead.
Theme Toggle
Switch between dark and light themes using the toggle in the top navigation bar. Your preference is saved to your account and will persist across sessions and devices.
Owners Management
The Owners Management tab lets you manage all the owners you've created across your parsed results:
- View Owners: See a list of all owners you've created
- Rename Owners: Edit the owner name directly in the text field. A "Save" button will appear when you make changes - click it to apply the new name across all results where that owner is assigned
- Delete Owners: Remove an owner by clicking the delete button. A confirmation dialog will appear to prevent accidental deletion. Deleting an owner removes the assignment from all characters but does not delete any results
- Link to Friends: Use the dropdown next to each owner to link them to one of your verified friends. This allows cross-referencing between owners and your friend list. Click "Save" to apply the change
Account Deletion
If you wish to delete your account, you can do so from the Settings page. This action is permanent and will remove:
- All your parsed results and CSV files
- Your friend connections and shared results
- Your owner assignments and preferences
- Your account and login credentials
CSV Export
Downloading Your Data
You can download your parsed results as a CSV file for further analysis in spreadsheet applications like Excel or Google Sheets. Click the "Download CSV" button on any results page to export your data.
CSV Columns
The exported CSV includes the following columns:
- timestamp: When the message or action occurred
- player: The player who sent the message or performed the action
- message_type: Type of message (general, whisper, roll result, etc.)
- character: Character name if applicable
- action_type: Category of action (attack, skill, feat, etc.)
- action_name: Name of the specific action performed
- content: The full text content of the message
- roll_result: Total result of any dice roll
- roll_formula: The dice formula used (e.g., "1d20+5")
- roll_type: Type of roll (normal, advantage, disadvantage)
- d20_value: The extracted D20 die result (1-20), respecting advantage/disadvantage rules
- is_nat_20: TRUE if this was a natural 20 roll
- is_nat_1: TRUE if this was a natural 1 roll
- image_count: Number of images in the message
- gif_count: Number of GIFs in the message
- owner: Assigned owner for the player/character
- session_index: Session number for this message (starting from 0)
- session_name: Name of the session this message belongs to
- game_system: Detected game system (e.g., "D&D 5th Edition")
Using CSV Data
The CSV export is useful for:
- Creating custom charts and visualizations
- Performing statistical analysis beyond what the app provides
- Archiving your session data in a portable format
- Filtering and sorting data by session, player, or roll type
Updating Chat Logs
Why Update?
After a session continues, you may want to update an existing parsed result with a newer, more complete chat log. The update feature lets you do this while preserving your owner assignments, sharing settings, and custom session names.
How to Update
- Find the result you want to update in your Previous Uploads list, or view the result directly
- Click the "Update" button
- Upload your newer chat log file
- You'll see the Session Configuration page with your previous settings pre-filled
- Adjust session detection rules if needed, or keep the defaults
- Click "Parse Chat Log" to process the updated file
- Your owner assignments for matching player names will be preserved
- Friends you've shared with will still have access
Preserving Custom Session Names
If you previously used custom session names, you'll see a special option on the Session Configuration page:
- Keep Existing Names: Preserves your custom session names without needing to re-enter them. Session names are matched by their position (Session 1, Session 2, etc.)
- Custom Names (edit after parsing): Redirects you to the edit page after parsing so you can update session names
If new sessions are detected in the updated log, they'll receive default names that you can edit later.
Downloading Original Files
If Object Storage is configured, your original HTML files are preserved. You can download them anytime by clicking the "Original" button on the results page. This is useful if you need to re-process the file or share the raw chat log.