Caution
Tools for Autodarts is developed by the community and is not an integral part of the official Autodarts platform.
Tools for Autodarts is a browser extension that enhances your gaming experience on autodarts.io. It adds numerous quality-of-life features, customization options, and advanced functionality to make your Autodarts experience more enjoyable and personalized.
- Overview
- Installation
- Features
- Configuration
- Development
- Contributing
- Show your support
- Credits
- License
- Auto-Start: Automatically starts the game 3 seconds after a player joins the lobby
- Discord Webhook Integration: Sends invitation links for private lobbies to your Discord server
- Auto-Start Timer: Automatically starts the game after a configurable time delay once the webhook is sent
- Shuffle Players: Randomly reorder players in the lobby
- Extended Recent Players List: Increase the number of recent local players beyond the default limit of 5
- Team Lobby Mode: Removes initial player and auto-selects board for team games
- QR Code: Automatically displays the lobby QR code for easily sharing with other players
- Color Customization: Change the colors of dart throws, scores, and match background for a personalized gaming environment
- Streaming Mode: Includes green screen support, board visualization, and thrown darts display
- Virtual Board Surround: Adds a customizable surround to the dartboard
- Darts Zoom: Shows a zoomed view of your dart throws in the bottom corners or center of the screen
- Configurable position (bottom-right, bottom-left, or center)
- View mode toggle between live camera feed and static board image
- Adjustable zoom level for detailed throw analysis
- Hide Menu: Provides more space for the game view
- Automatic Fullscreen: Automatically enables fullscreen mode during matches for an immersive experience
- Adjustable UI Elements: Modify the size of legs, sets, and match information
- Larger Player Names: Increase the font size of player names for better visibility during matches
- Takeout Visualization: Visual notification when takeout is in progress
- Automatic Next Player: Switches to the next player after a configurable delay when takeout is stuck
- Automatic Next Leg/Set: Automatically advances to the next leg or set after takeout
- Smaller Font for Inactive Players: Reduces the font size of scores for players not currently throwing
- External Boards Support: Easily follow games on external boards
- Fancy Gameshot Animation: Celebratory animation when a player wins
- Enhanced Scoring Display: Improves dart throw visuals with larger numbers and scoring notation
- Shows dart notation (S/D/T, BULL) beneath point values
- Includes smooth animations when scores update
- Animations: Display custom animations for special events like 180s, bulls, busts, and leg wins during gameplay
- Quick Correction: Easily fix misrecognized dart throws with an intuitive interface
- Grid-based correction panel showing all board segments
- Numpad keyboard shortcuts for fast corrections
- Color-coded buttons matching dart board segments
- Keyboard shortcuts for accessing throws (/, *, -) and making corrections
- Instant Replay: Records webcam footage and automatically shows replays of winning throws
- Caller: Voice announcements for scores, checkouts, and each dart thrown during gameplay
- Sound FX: Ambient sound effects for different game events
- Sound Upload: Add your own custom sounds for personalized feedback
- WLED Integration: Trigger lighting effects and HTTP requests synchronized with game events
The Caller feature provides voice announcements during your darts gameplay, similar to professional darts tournaments:
- Call Every Dart: Announces each dart as it's thrown, rather than waiting for the end of a turn
- Call Checkout: Announces possible checkout combinations when a player is on a checkout score
- Custom Sound Library: Add, edit, and organize voice clips for different game events
You can assign sounds to be played based on these triggers:
- Points:
0to180(point totals) - Point Ranges: A range between
0and180, e.g.0-20or100-180(point totals) - Singles:
s1tos20ands25(single segments) - Doubles:
d1tod20andbull(double segments and bullseye) - Triples:
t1tot20(triple segments) - Special Voice Lines:
gameon: At the start of a new gamegameshot: When a player wins the gameyou_require: Plays before announcing checkout combinations (numbers are called separately)busted: When a player bustsdouble,triple: Generic announcements for dart typesoutside: When a dart lands outside the scoring areanext_player: Plays when switching to the next player (fallback if no player name sound is found)bot: Plays instead of player name when the player is a CPU/bot playerplayername: Player name sounds play automatically when it's their turn. Example: If your name iscreazy.ethon Autodarts, simply usecreazy.eth(supports spaces or_likeplayer_nameorplayer name)
- Cricket-Specific:
cricket_hit: When a player hits a Cricket target (15-20 and Bull)cricket_miss: When a player hits a non-Cricket target (Miss-14)
In Cricket games, the caller has specific behavior:
cricket_hitis triggered when a player hits a target that's still open (15-20 and Bull)cricket_missis triggered when a player hits any other number (Miss-14) or hits a target that's already closed by all players- Regular throw sounds (like
t20,d16) are still announced when enabled
Due to browser security policies, especially on Safari and mobile browsers, audio can only be played after user interaction (click, tap, or keypress). The extension will:
- Automatically detect when audio can't be played
- Show a notification prompting the user to interact with the page
- Automatically unlock audio playback once interaction occurs
- Queue up sounds to ensure nothing is missed during this process
The extension comes with ready-to-use caller sets that you can easily import:
- NL - Laura (Female): Dutch female voice caller
- FR - Remi (Male): French male voice caller
- FR - Lea (Female): French female voice caller
- ES - Lucia (Female): Spanish female voice caller
- ES - Sergio (Male): Spanish male voice caller
- AT - Hannah (Female): Austrian German female voice caller
- DE - Vicki (Female): German female voice caller
- DE - Daniel (Male): German male voice caller
- GB - Amy (Female): British female voice caller
- GB - Arthur (Male): British male voice caller
- US - Ivy (Female): American female voice caller
- US - Joey (Male): American male voice caller
- US - Joanna (Female): American female voice caller
- US - Matthew (Male): American male voice caller
- US - Danielle (Female): American female voice caller
- US - Kimberly (Female): American female voice caller
- US - Ruth (Female): American female voice caller
- US - Salli (Female): American female voice caller
- US - Kevin (Male): American male voice caller
- US - Justin (Male): American male voice caller
- US - Stephen (Male): American male voice caller
- US - Kendra (Female): American female voice caller
- US - Gregory (Male): American male voice caller
Simply select one of these presets when adding sounds through the "Import from URL" option in the Caller settings.
Note
Some predefined caller sets may not work in Safari due to browser restrictions. Tools for Autodarts is not responsible for the content of these caller sets.
The caller has a sophisticated fallback system to provide complete coverage even with limited sound files:
- Segment Announcements: If a specific segment sound (e.g.,
s20) isn't available, it automatically plays just the number (20) - Double/Triple Handling: For doubles and triples, it follows the pattern of playing the word followed by the number (e.g.,
d20→double+20) - Miss Handling:
missormprefixed throws will fall back tooutsidesounds - Matchshot Handling: When no
matchshotsound is available, the system will automatically use thegameshotsound instead - Player Announcements: Automatically announces the current player's name at the start of their turn
- Game Start: Plays the "game on" sound at the beginning of a match
- Compatible with all major browsers including Safari on iOS/MacOS
- Automatic audio unlocking for mobile browsers that require user interaction
- Queued sound playback to ensure all announcements are heard in the correct order
The Sound FX feature adds ambient sound effects to your gameplay experience:
Add sound effects for various game events:
- Point Triggers: Sounds can be triggered for any score from
ambient_0toambient_180 - Individual Throws: Sounds for specific throws like
ambient_s20,ambient_d16,ambient_t19, etc. - Combined Throws: Trigger sounds based on a sequence of throws using format
s20_t19_d12 - Special Events: Dedicated sounds for
ambient_gameon,gameshot,busted, and more - Player Turn Sounds:
ambient_next_player: Plays when switching to the next player (fallback if no player name sound exists)ambient_bot: Plays when switching to a CPU/bot playerbot_throw: Plays when a bot player throws a dart- Player-specific sounds using format:
ambient_playernameorambient_player_name
- Lobby Sounds:
ambient_lobby_in: Plays when a player joins the lobbyambient_lobby_out: Plays when a player leaves the lobby
- Tournament Sounds:
ambient_tournament_ready: Plays when "Time to ready up" text appears in tournaments
- Player-Specific Gameshot: Create personalized winning sounds for specific players using the following formats:
gameshot_player name(spaces preserved)gameshot_player_name(with underscores replacing spaces)- With ambient prefix:
ambient_gameshot_player_name
- Cricket Mode: Special triggers for Cricket games:
cricket_hit: Triggered when hitting Cricket targets (15-20 and Bull) that are still opencricket_miss: Triggered when hitting non-Cricket targets (Miss-14) or hitting targets already closed by all players
The Sound FX feature distinguishes between winning a single game (gameshot) and winning the entire match (matchshot):
- Match Win:
ambient_matchshotormatchshottriggers when a player wins the complete match - Game Win:
ambient_gameshotorgameshottriggers when a player wins a single game/leg - Player-Specific Match Win: Create personalized match winning sounds:
matchshot_player_name(with underscores)matchshot_player name(with spaces)- With ambient prefix:
ambient_matchshot_player_name
- Use the
ambient_prefix (e.g.,ambient_180,ambient_t20) to create separate sound sets for caller and ambient sounds - This allows you to have professional voice announcements via the Caller while also having fun sound effects via Sound FX
- Enhanced sound playback with separate audio channels for caller and ambient sounds
- Improved game mode handling for specialized sound triggers
- Better performance with simultaneous sound playback
The Sound FX feature includes a sophisticated multi-level fallback system:
- If an exact match with
ambient_prefix isn't found, it tries without the prefix - For segment triggers like
ambient_t20, it tries multiple fallbacks in this order:- Exact match:
ambient_t20 - Without ambient prefix:
t20 - Split into word+number:
ambient_triple+ambient_20 - Non-ambient word+number:
triple+20 - Just the number:
20
- Exact match:
- Similar fallback chains exist for double segments (
d16) and single segments (s1) - For
missormprefixed throws, it falls back tooutsidesounds - In Cricket games,
misstriggers may fall back tocricket_misssounds - Matchshot Fallbacks: When a player wins a match, the system tries sounds in this order:
- Player-specific matchshot:
ambient_matchshot_player_name - Player-specific gameshot:
ambient_gameshot_player_name - Generic matchshot:
ambient_matchshot - Generic gameshot:
ambient_gameshot
- Player-specific matchshot:
- If no match is found after all fallback attempts, no sound is played
- Queue Management: Enhanced sound queue management to prevent overlapping and ensure proper playback order (improved in v2.0.3)
- Format Support: Plays both URL-based sounds and base64-encoded audio
- IndexedDB Storage: Efficiently stores sound files in browser database to improve performance
- Error Handling: Automatically falls back to alternative sources if a sound fails to play
- Safari Compatible: Works with all major browsers including Safari's strict audio policies
The WLED feature allows you to trigger lighting effects and other HTTP requests based on game events, creating an immersive visual experience synchronized with your darts gameplay.
WLED is a popular open-source firmware for controlling addressable LED strips (WS2812B, SK6812, etc.) with ESP8266/ESP32 microcontrollers. It provides a web interface and HTTP API for controlling lighting effects, making it perfect for integrating with Tools for Autodarts.
- Effect Management: Add, edit, enable/disable, and reorder lighting effects
- Board Filtering: Restrict effects to specific board IDs, with an "other" effect for non-matching boards
- CSV Import: Bulk import effects using CSV format:
[name];[url];[trigger1];[trigger2]... - Drag & Drop: Reorder effects by dragging them in the settings interface
- URL Validation: All URLs must use HTTPS for security reasons
Effects can be triggered by various game events using these triggers:
gameon: At the start of each player's turn (default fallback effect)takeout: When takeout is in progressgameshot: When a player wins a game/leggameshot+[throwName]: When a player wins a game/leg with the specified throw (e.g.gameshot+d10)matchshot: When a player wins the entire matchmatchshot+[throwName]: When a player wins the entire match with the specified throw (e.g.matchshot+bull)busted: When a player busts (scores more than needed)idle: When leaving the match (cleanup effect)
0to180: Triggered by the total points scored in a turn- Range Format:
range_[min]_[max](e.g.,range_100_180for scores between 100-180)
- Singles:
s1tos20,s25(single segments, s25 for single bull) - Doubles:
d1tod20,bull(double segments, bull for bullseye) - Triples:
t1tot20(triple segments) outside: When a dart lands outside the scoring area
- Format:
[dart1]_[dart2]_[dart3](e.g.,t20_t20_t20for three triple 20s) - Triggered only when all three darts are thrown in the exact sequence
lobby_in: When a player joins the lobbylobby_out: When a player leaves the lobby
tournament_ready: Triggered when tournament start event is received via websocket
- Player Names: Use the exact player name as it appears in Autodarts
- Spaces: Player names with spaces are supported (e.g.,
john doe) - Underscores: Alternative format with underscores (e.g.,
john_doe) bot_throw: Triggered when a CPU/bot player throws
- Board IDs: Configure specific board IDs to limit effects to certain boards
other: Special trigger for throws on boards not in the configured board ID list- Format: Board IDs are UUIDs (e.g.,
6a501a61-53a5-468a-a56a-17134ace3099)
- Multiple Effects: If multiple effects share the same trigger, one is randomly selected
- Priority System: More specific effects take precedence over general ones
- Fallback Logic: Falls back to
gameoneffect if no specific trigger matches
- HTTP Requests: Effects trigger HTTP GET requests to the specified URLs
- HTTPS Only: All URLs must use HTTPS protocol for security
- Debouncing: Game events are debounced to prevent rapid-fire triggers
- Error Handling: Failed requests are silently ignored to prevent interrupting gameplay
https://wled-device.local/win/PL=1 # Play preset 1
https://wled-device.local/win/A=128 # Set brightness to 128
https://wled-device.local/win/FX=54 # Set effect to 54
https://wled-device.local/win/R=255&G=0&B=0 # Set color to red
Import multiple effects at once using this format:
Effect Name;https://wled-device.local/win/PL=1;gameon
180 Effect;https://wled-device.local/win/PL=2;180
Takeout;https://wled-device.local/win/PL=3;takeout;busted
- Enable Filtering: Add board IDs (one per line) to restrict effects to specific boards
- Other Effect: Create an effect with trigger
otherfor throws on non-matching boards - Use Cases: Different effects for different dart boards in multi-board setups
- X01 Games: Full support for all triggers and point combinations
- Cricket: Basic support with plans for expanded cricket-specific triggers
- Bull-off: Automatically disabled during bull-off rounds
- Test Effects: Use the play button in settings to test effects before games
- HTTPS URLs: Always use HTTPS URLs for security compliance
- Descriptive Names: Use clear names for easy effect management
- Logical Grouping: Group related effects together using drag & drop
- Backup Settings: Export your configuration regularly
- Effect Not Triggering: Check that the trigger spelling matches exactly
- HTTPS Errors: Ensure your WLED device supports HTTPS or use a proxy
- Board Filtering: Verify board IDs are correctly formatted UUIDs
- URL Format: Confirm WLED URLs follow the correct API format
The Animations feature allows you to display custom GIF animations for special events during gameplay:
- Delay: Set how long to wait before showing the animation (in seconds)
- Duration: Set how long the animation should display (in seconds)
- Object Fit: Choose between 'cover' (fill screen) or 'contain' (maintain aspect ratio)
Animations can be triggered by various game events using these tags:
- Points:
0to180(total points scored in a turn) - Singles:
s0tos20and25(single segments,25for bull) - Doubles:
d1tod20(double segments,bullfor bullseye) - Triples:
t1tot20(triple segments) - Special Events:
bull: When a player hits the bullseyeoutside: When a dart lands outside the scoring areabusted: When a player busts (scores more than needed)gameshot: When a player wins the game or leg
You can also use combination tags to trigger animations based on specific dart throw combinations. Format: [first dart]_[second dart]_[third dart]
Example: s20_s5_d20 would trigger when a player throws single 20, then single 5, then double 20.
You can add multiple triggers for the same animation by entering each trigger on a new line in the animation settings.
Note
If you assign the same trigger to multiple animations, the system will randomly select one of the matching animations to play each time the trigger occurs. This allows for variety in your gameplay experience.
- Settings Import/Export: Transfer your configuration between devices or create backups
- Clipboard Support: Copy and paste settings for easy sharing
The extension provides a comprehensive settings panel where you can configure all features according to your preferences:
- Enable/disable individual features
- Customize colors and appearance
- Set timing for automatic actions
- Configure Discord webhook integration
- Adjust sound settings and upload custom sounds
- Customize streaming mode settings
The extension allows you to easily transfer your settings between devices or create backups:
- Export Settings: Download your current configuration as a file
- Import Settings: Load settings from a previously exported file
- Copy to Clipboard: Copy your settings to the clipboard for easy sharing
- Paste from Clipboard: Apply settings that were copied from another installation
- Reset Settings: Restore all settings to their default values through the Danger Zone section
This makes it simple to:
- Back up your perfect configuration
- Share your setup with friends
- Transfer settings between browsers or devices
- Restore settings after reinstalling the extension
- Start fresh with default settings when needed
This project is built using:
- Vue.js 3
- TypeScript
- Tailwind CSS
- WXT (Web Extension Toolbox)
# Install dependencies
yarn install
# Start development server
yarn dev
# Build for production
yarn build
# Build for Firefox
yarn build:firefox
# Create distribution zip
yarn zipContributions are welcome! Please feel free to submit a Pull Request or create an issue if you have ideas for improvements or have found a bug.
Feel free to fork and make a Pull Request to this plugin project. All the input is warmly welcome!
Give a star if this project helped you.
🎯 Autodarts - The original platform this extension enhances
🎨 Benjamin Zehentner (Discord: ben_1987) - Creator of the Tools for Autodarts logo
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0) - see the LICENSE file for details.
Under this license:
- Attribution — You must give appropriate credit, provide a link to this project, and indicate if changes were made.
- NonCommercial — You may not use this project for commercial purposes or monetary compensation.
