Back to Export Tool

Export Format Documentation

Complete reference for the StreamElements export archive structure

Overview

The export creates a ZIP archive containing your StreamElements data in multiple formats. JSON files contain the complete raw data, while CSV files provide spreadsheet-friendly versions for easy viewing and analysis.

flowchart LR
    subgraph Auth["🔐 Authentication"]
        OAuth["OAuth Token"]
        JWT["JWT Token"]
    end

    subgraph API["☁️ StreamElements API"]
        direction TB
        Endpoints["API Endpoints
/commands, /overlays,
/points, etc.
"] CDN["Asset CDN
images, sounds"] end subgraph Process["⚙️ Export Process"] direction TB Fetch["Fetch Data"] Download["Download Assets"] Extract["Extract Widgets"] Hash["Compute Hashes"] end subgraph Output["📦 Output"] direction TB JSON["JSON Files
complete data"] CSV["CSV Files
spreadsheet format"] Code["Code Files
HTML/CSS/JS"] Media["Media Files"] Manifest["manifest.json
with SHA-256"] end ZIP["📥 .zip Download"] OAuth --> Endpoints JWT --> Endpoints Endpoints --> Fetch CDN --> Download Fetch --> Extract Download --> Hash Extract --> Hash Hash --> JSON Hash --> CSV Hash --> Code Hash --> Media Hash --> Manifest JSON --> ZIP CSV --> ZIP Code --> ZIP Media --> ZIP Manifest --> ZIP

Export process from authentication to ZIP download

Each export includes a manifest.json file with metadata about the export, including SHA-256 hashes for file integrity verification, and a README.md with human-readable documentation.

Version: This documentation covers export format version 1.1

Data Relationships

The export archive contains multiple data types that relate to each other. This diagram shows how the different components connect.

flowchart TB
    subgraph Export["📦 Export Archive"]
        direction TB
        Manifest["manifest.json
Metadata & Hashes"] README["README.md"] end subgraph Bot["🤖 Bot Configuration"] direction TB Commands["Commands
custom & default"] Timers["Timers"] Filters["Chat Filters"] Variables["Variables"] Commands -.->|"uses"| Variables Timers -.->|"uses"| Variables end subgraph Visual["🎨 Visual Layer"] direction TB Overlays["Overlays"] subgraph WidgetTypes["Widgets"] Standard["Standard
alertbox, chatbox,
eventlist, etc.
"] Custom["Custom
with code"] end Assets["Assets
images, sounds,
videos
"] Overlays -->|"contains"| Standard Overlays -->|"contains"| Custom Standard -.->|"references"| Assets Custom -.->|"references"| Assets end subgraph CustomCode["📝 Custom Widget Code"] direction LR HTML["HTML"] CSS["CSS"] JS["JavaScript"] Data["Data"] Fields["Fields"] end subgraph Loyalty["💰 Loyalty System"] direction TB Settings["Loyalty Settings"] Leaderboard["Leaderboard
all users"] Store["Store Items"] Settings -->|"configures"| Leaderboard Store -.->|"costs"| Settings end subgraph Analytics["📊 Analytics"] ChannelStats["Channel Stats"] ChatStats["Chat Stats"] end Custom -->|"extracts to"| CustomCode Export --- Bot Export --- Visual Export --- Loyalty Export --- Analytics

Data flow and relationships between export components

Key Relationships

Relationship Description
Overlays → Widgets Each overlay contains multiple widgets positioned on a canvas
Widgets → Assets Widgets reference media files (images, sounds) by URL
Custom Widgets → Code Custom widgets have HTML, CSS, JS, data, and field definitions extracted
Commands/Timers → Variables Bot messages can reference custom variables using ${varname}
Store → Loyalty Store item costs are defined in the loyalty currency

Archive Structure

The export creates a ZIP file with a hierarchical folder structure organized by data type.

flowchart LR
    subgraph Root["📦 {username}-export.zip"]
        direction TB
        M["📄 manifest.json"]
        R["📄 README.md"]

        subgraph Cmd["📁 commands/"]
            C1["custom-commands.json"]
            C2["default-commands.json"]
            C3["custom-commands.csv"]
        end

        subgraph Tim["📁 timers/"]
            T1["timers.json"]
            T2["timers.csv"]
        end

        subgraph Ovr["📁 overlays/"]
            O1["index.json"]
            O2["{name}.json"]

            subgraph Wgt["📁 {name}_widgets/"]
                W1["_index.json"]
                subgraph Std["📁 standard/"]
                    S1["{widget}.json"]
                end
                subgraph Cst["📁 custom/"]
                    CW1["{widget}.json"]
                    CW2["{widget}.html"]
                    CW3["{widget}.css"]
                    CW4["{widget}.js"]
                end
            end

            subgraph Ast["📁 assets/"]
                A1["asset-manifest.json"]
                A2["{media files}"]
            end
        end

        subgraph Pts["📁 points/"]
            P1["loyalty-settings.json"]
            P2["leaderboard.json"]
            P3["leaderboard.csv"]
        end

        subgraph Sts["📁 stats/"]
            ST1["channel-stats.json"]
            ST2["chat-stats.json"]
        end

        subgraph Str["📁 store/"]
            SR1["store-items.json"]
            SR2["store-items.csv"]
        end

        subgraph Flt["📁 filters/"]
            F1["chat-filters.json"]
        end

        subgraph Var["📁 variables/"]
            V1["variables.json"]
            V2["variables.csv"]
        end
    end
      

Visual representation of the export archive structure

Detailed File Tree

{username}-export/
├── manifest.json          # Export metadata and file hashes
├── README.md              # Human-readable documentation
├── commands/
│   ├── custom-commands.json
│   ├── default-commands.json
│   └── custom-commands.csv
├── timers/
│   ├── timers.json
│   └── timers.csv
├── overlays/
│   ├── index.json            # Summary of all overlays
│   ├── {overlay-name}.json   # Full overlay definition
│   ├── {overlay-name}_widgets/
│   │   ├── _index.json       # Widget manifest
│   │   ├── standard/         # Built-in SE widgets
│   │   │   └── {widget}.json
│   │   └── custom/           # Custom widgets with code
│   │       ├── {widget}.json
│   │       ├── {widget}.html
│   │       ├── {widget}.css
│   │       ├── {widget}.js
│   │       ├── {widget}.data.json
│   │       └── {widget}.fields.json
│   └── assets/
│       ├── asset-manifest.json
│       └── {media files}
├── points/
│   ├── loyalty-settings.json
│   ├── leaderboard.json
│   └── leaderboard.csv
├── stats/
│   ├── channel-stats.json
│   └── chat-stats.json
├── store/
│   ├── store-items.json
│   └── store-items.csv
├── filters/
│   └── chat-filters.json
└── variables/
    ├── variables.json
    └── variables.csv

Manifest File

The manifest.json file contains metadata about the export and integrity hashes for all included files.

Schema

Field Type Description
exportDate string ISO 8601 timestamp of when the export was created
account string StreamElements account username
version string Export format version (currently "1.1")
complete boolean Whether all exports succeeded without errors
cancelled boolean Whether the export was cancelled by the user
exported array List of data types included in this export
errors array Any errors encountered during export
files array All files with path, size, and SHA-256 hash
stats object Export statistics (totalFiles, totalSize, duration)

Example

{
  "exportDate": "2024-01-15T10:30:00.000Z",
  "account": "mychannel",
  "version": "1.1",
  "complete": true,
  "cancelled": false,
  "exported": ["commands", "timers", "overlays", "points"],
  "errors": [],
  "files": [
    {
      "path": "commands/custom-commands.json",
      "size": 4523,
      "sha256": "a1b2c3d4..."
    }
  ],
  "stats": {
    "totalFiles": 42,
    "totalSize": 1548234,
    "duration": 12500
  }
}

Commands

Chat commands created in the StreamElements dashboard.

custom-commands.json JSON

Your custom chat commands with all configuration options.

Field Type Description
_id string Unique identifier
command string Trigger word (without the ! prefix)
reply string Response message (may contain variables like ${user})
enabled boolean Whether the command is active
cooldown.user number Per-user cooldown in seconds
cooldown.global number Global cooldown in seconds
accessLevel number Required permission level

Access Levels

Value Role
100Everyone
250Regular
300VIP
400Subscriber
500Moderator
1000Super Moderator
1500Broadcaster

default-commands.json JSON

Built-in StreamElements commands with your enabled/disabled settings.

custom-commands.csv CSV

Spreadsheet-friendly format with flattened nested fields.

Timers

Automated messages that post to chat on intervals.

timers.json JSON

Field Type Description
_id string Unique identifier
name string Timer name for reference
message string The message posted to chat
interval number Minutes between posts
chatLines number Minimum chat lines required before posting
enabled boolean Whether the timer is active

timers.csv CSV

Spreadsheet-friendly format for easy viewing.

Overlays

Stream overlay configurations including all widgets and their settings.

index.json JSON

Summary list of all your overlays with basic metadata.

Field Type Description
_id string Unique overlay identifier
name string Overlay name
type string Overlay type
preview string Preview image URL (if available)

{overlay-name}.json JSON

Full overlay definition including all widgets and their configurations.

Field Type Description
_id string Unique overlay identifier
name string Overlay name
settings object Canvas dimensions and display settings
widgets array Array of widget configurations

Widgets

Each overlay's widgets are extracted into a dedicated folder, segregated into standard/ (built-in SE widgets) and custom/ (widgets with custom code).

flowchart TB
    Overlay["Overlay
contains widgets array"] Overlay --> Check{"Has custom code?
HTML, CSS, JS,
data, or fields
"} Check -->|"No"| Standard["📁 standard/"] Check -->|"Yes"| Custom["📁 custom/"] Standard --> StdFiles["widget.json
settings only"] Custom --> CstFiles["widget.json
widget.html
widget.css
widget.js
widget.data.json
widget.fields.json"] subgraph Types["Standard Widget Types"] direction LR T1["alertbox"] T2["chatbox"] T3["eventlist"] T4["goals"] T5["ticker"] T6["labels"] end Standard -.-> Types

Widget classification and file extraction logic

_index.json (Widget Manifest) JSON

Summary of all widgets in this overlay.

Field Type Description
overlayId string Parent overlay ID
overlayName string Parent overlay name
widgetCount number Total number of widgets
widgets array Array of widget summaries

standard/ (Built-in Widgets)

Contains StreamElements' built-in widgets like alertbox, chatbox, eventlist, etc.

{widget}.json JSON

Field Type Description
id string Unique widget identifier
name string Widget display name
type string Widget type (alertbox, chatbox, eventlist, etc.)
enabled boolean Whether widget is active
position object X, Y coordinates and dimensions
layer number Z-index for stacking order
settings object Type-specific configuration options

custom/ (Custom Widgets)

Contains widgets with custom HTML/CSS/JS code. Each custom widget includes:

File Badge Description
{widget}.json JSON Widget settings (same structure as standard)
{widget}.html CODE HTML template with StreamElements variables
{widget}.css CODE Widget styles (SCSS-like syntax supported)
{widget}.js CODE JavaScript code for interactivity
{widget}.data.json JSON Widget data and variable values
{widget}.fields.json JSON Custom field definitions for the widget editor

Note: Not all custom widgets have all code files. Only files with content are included.

Assets

Media files used by your overlays (images, sounds, videos).

asset-manifest.json JSON

Maps each downloaded file to its original URL and usage information.

Field Type Description
originalUrl string Where the file was downloaded from
originalName string Original filename
usedBy array Which overlay(s) reference this asset

Deduplication: Files are deduplicated by content hash, so identical files used by multiple overlays are stored once.

Points / Loyalty

Your loyalty points system configuration and user balances.

loyalty-settings.json JSON

Field Type Description
enabled boolean Whether the points system is active
name string Custom name for your currency
earning object Points earned per interval settings
bonus object Subscriber bonus multipliers

leaderboard.json JSON

Complete leaderboard with all users and their points balances.

Field Type Description
username string Twitch username
points number Current balance
pointsAlltime number All-time points earned
watchtime number Total watch time in minutes
rank number Position on leaderboard

leaderboard.csv CSV

Spreadsheet-friendly format for easy analysis.

Statistics

Channel and chat analytics from StreamElements.

channel-stats.json JSON

Channel-level analytics and metrics including follower counts, stream history, and engagement data.

chat-stats.json JSON

Chat activity statistics including message counts, active chatters, and chat patterns.

Store Items

Loyalty store items that viewers can redeem with their points.

store-items.json JSON

Field Type Description
_id string Unique identifier
name string Item name displayed in store
description string Item description
cost number Points cost to redeem
enabled boolean Whether item is available
quantity.total number Total quantity available (-1 = unlimited)
quantity.current number Remaining quantity
cooldown.user number Per-user cooldown in seconds
cooldown.global number Global cooldown in seconds
userInput boolean Whether user must provide input when redeeming

store-items.csv CSV

Spreadsheet-friendly format.

Chat Filters

Moderation settings for your chat.

chat-filters.json JSON

Contains all moderation rules including:

  • Spam filters - Caps, emotes, symbols, repetition limits
  • Link filters - Whitelist/blacklist domains, permit levels
  • Word filters - Banned words and phrases
  • Moderation levels - Who is exempt from each filter

Privacy Note: This file may contain sensitive moderation rules. Handle with care when sharing.

Variables

Custom variables that can be used in commands and timers.

variables.json JSON

Field Type Description
_id string Unique identifier
name string Variable name (used as ${variablename} in commands)
value string Current value

variables.csv CSV

Spreadsheet-friendly format.

File Integrity Verification

Each file in the export includes a SHA-256 hash in the manifest for integrity verification. This allows you to verify that files haven't been corrupted or tampered with.

File Entry Structure

Field Type Description
path string File path within the archive
size number File size in bytes
sha256 string SHA-256 hash (lowercase hex)

Verification Commands

Linux / macOS

sha256sum path/to/file

Windows PowerShell

Get-FileHash path/to/file -Algorithm SHA256

Python

import hashlib

with open('path/to/file', 'rb') as f:
    print(hashlib.sha256(f.read()).hexdigest())

Tip: Compare the output hash (in lowercase) against the value in manifest.json to verify integrity.