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

  1. Open your Roll20 game session
  2. Click the gear icon to open Game Settings
  3. Scroll down to "Chat Log" section
  4. Click "View Chat Archive" or use the chat archive feature
  5. Select the date range you want to export
  6. Save the page as an HTML file (Ctrl+S or Cmd+S)

Uploading Your Chat Log

  1. Log in to Chat Log Parser using your account
  2. On the home page, click the upload area or drag and drop your HTML file
  3. Click "Upload Chat Log" to upload your file
  4. You'll be taken to the Session Configuration page where you can set up session detection rules (see Sessions section)
  5. Click "Parse Chat Log" to begin processing
  6. Wait for the progress bar to complete - larger files take more time
  7. 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:

  1. View your parsed result
  2. Find the "Sessions" section
  3. Click the "Edit Names" button in the section header
  4. Enter your custom names for each session
  5. 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

  1. Scroll to the "Owner Assignment" section on the results page
  2. For each player/character listed, use the dropdown to select an existing owner or type a new name
  3. Click "Save Owner Assignments" to save your changes
  4. 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

  1. Go to the Friends page (link in the navigation bar)
  2. Enter your friend's 13-character code in the "Add a Friend" section
  3. Click "Add Friend" to send a friend request
  4. Once they accept, you'll both appear in each other's friends list

Sharing Results

You can share your parsed results with friends:

  1. View any of your parsed results
  2. Click the "Share" button in the action bar
  3. Select which friends you want to share with
  4. 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

  1. Find the result you want to update in your Previous Uploads list, or view the result directly
  2. Click the "Update" button
  3. Upload your newer chat log file
  4. You'll see the Session Configuration page with your previous settings pre-filled
  5. Adjust session detection rules if needed, or keep the defaults
  6. Click "Parse Chat Log" to process the updated file
  7. Your owner assignments for matching player names will be preserved
  8. 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.