1
Emoji Wall
Logan Fick edited this page 2026-03-31 11:51:58 -04:00

Emoji Wall

The emoji_wall module provides a browser-based overlay for OBS that displays floating emojis and custom emotes from chat as animated particles. It supports all Unicode emoji characters (including ZWJ sequences, skin tone modifiers, and flag sequences) as well as any custom emotes configured in your Owncast instance.

This is a built-in module that ships with Owlbot and is enabled by default.

Quick Start

When Owlbot starts, it logs the overlay URL with a unique token:

Emoji wall overlay URL: https://stream.logal.dev/owlbot/emoji_wall/srQPcfouonD5r26K-mwOElNVZtjTHyV5gi4Dv7Y_CWs
  1. Copy the URL from the startup log and add it to OBS as a Browser Source.
  2. Set the browser source dimensions to match your canvas size (e.g. 1920x1080).
  3. When viewers send messages containing emojis or custom emotes in chat, they appear as floating animations on the overlay.

Web UI

The module serves an overlay page at /owlbot/emoji_wall/<token>/ designed for use as an OBS browser source. The page connects to the bot via Server-Sent Events and renders incoming emojis and emotes as animated floating elements.

Configuration

Configure the overlay behavior in config.yaml under modules.emoji_wall:

modules:
  emoji_wall:
    # Minimum emoji size in pixels.
    # Default: 20
    min_size: 20

    # Maximum emoji size in pixels.
    # Default: 60
    max_size: 60

    # Minimum animation duration in seconds.
    # Default: 3
    min_duration: 3

    # Maximum animation duration in seconds.
    # Default: 10
    max_duration: 10

    # Maximum number of emojis on screen at once.
    # Default: 50
    max_count: 50

    # Direction emojis travel. Named presets: up, up-right, right,
    # down-right, down, down-left, left, up-left, random.
    # Also accepts a degree value (0-359, where 0 is up, clockwise).
    # Default: "up"
    direction: "up"

    # Maximum rotation angle in degrees. Each emoji gets a random
    # rotation between -max_rotation and +max_rotation.
    # Set to 0 to disable rotation.
    # Default: 25
    max_rotation: 25

Token

The overlay token is auto-generated on first run and stored in config.yaml. You can also set a custom token manually:

modules:
  emoji_wall:
    token: "your-custom-token-here"

The token prevents casual discovery of your overlay URL. Anyone with the token can connect to the emoji wall SSE endpoint, but the data transmitted (emojis from public chat) is not sensitive.

Query Parameter Overrides

All configuration options can be overridden via query parameters on the overlay URL. This lets you create multiple overlays with different settings without modifying config.yaml:

https://stream.logal.dev/owlbot/emoji_wall/srQPcfouonD5r26K-mwOElNVZtjTHyV5gi4Dv7Y_CWs?direction=random&max_count=100&min_size=30&max_size=80

Direction Values

The direction setting controls which way emojis travel:

Value Direction
up Emojis rise from bottom to top (default)
up-right Emojis travel diagonally upward-right
right Emojis travel left to right
down-right Emojis travel diagonally downward-right
down Emojis fall from top to bottom
down-left Emojis travel diagonally downward-left
left Emojis travel right to left
up-left Emojis travel diagonally upward-left
random Each emoji gets a random direction
0-359 Numeric degree value (0=up, 90=right, 180=down, 270=left)

Examples

# Falling confetti effect
modules:
  emoji_wall:
    direction: down
    min_size: 15
    max_size: 30
    min_duration: 2
    max_duration: 5
    max_rotation: 360

# Large dramatic emojis
modules:
  emoji_wall:
    direction: random
    min_size: 50
    max_size: 100
    min_duration: 5
    max_duration: 15
    max_count: 20