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.com. 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: Adds an Autostart On / Autostart Off toggle beside the lobby's Start Game button. While it is on, the game starts 3 seconds after another player joins
- Those 3 seconds are a grace period: someone who joins the wrong lobby and leaves again cancels the start instead of triggering it
- Every lobby opens with it off — it presses a button that starts a real game, so the choice is never carried over from an earlier lobby
- The toggle is there from the moment the lobby opens, whatever the button beside it currently says, and in every language the site offers
- Discord Webhook Integration: Sends invitation links for private lobbies to your Discord server
- Send manually: Adds a Discord button to the lobby's Players header, next to Shuffle, so you choose when to announce. With this off, the webhook fires as soon as the lobby opens
- Auto-Start Timer: Automatically starts the game after a configurable time delay once the webhook is sent
- The announcement is edited in place once the game starts, so the channel does not fill up with lobbies nobody can join
- Extended Recent Players List: Autodarts remembers your last 6 local players and drops the rest for good. This keeps every name you have entered
- A Saved players strip appears under the lobby's player list — one click adds a player, however long ago you last used them
- The full list is also written back into the site's own Add Player dialog, so it offers everything rather than the last six
- The number of names kept is configurable, and individual names can be removed from the settings page
- Team Lobby Mode: Sets a lobby up for several people throwing on one dartboard
- Your own entry is removed, so the players are the team names you add rather than the account that opened the lobby
- Anyone who joins on their own board is moved onto yours
- Only runs in private lobbies that you host
- QR Code: Pins the lobby's join code to the top right corner, so anyone walking up to the board can scan it without the host opening anything
- Autodarts' own QR button occupies the same corner, so it is hidden while the pinned code is up and comes back the moment you close it
- The ✕ underneath hides the code for the rest of that lobby; from then on the site's own button is there if you want it
- On a tournament page the code goes into the Invite dialog instead, under its title, so the tournament's link can be scanned rather than sent
- Color Customization: Change the colors of dart throws, scores, and match background for a personalized gaming environment
- Four pickers: score card background, text, match background, and the bottom bar that holds the undo and next buttons
- The bottom bar starts at the color autodarts uses, so nothing changes there until you pick one
- Streaming Mode: Replaces the whole match screen with a broadcast overlay — a chroma key background, the dartboard, and a scoreboard you place where you want it
- Switched on and off from the stream icon in the match header, next to the site's own icons. While the overlay is up it covers that header, so the overlay itself carries the way back out: the ✕ in its footer, or a click anywhere on the background
- Design: two scoreboards to choose from, switchable mid-match
- Classic (default): white rows on a black grid, cyan for whatever is live
- Autodarts: follows autodarts' own design language — flat surfaces with no borders or shadows, condensed uppercase names, and one blue for the player at the oche. A bust shows as a red badge rather than a word in the score cell
- Background: either a chroma key colour of your choice (green by default) or an image you upload
- Board: your choice of the live camera picture, or autodarts' own drawn board — the drawn one is a live copy, hit highlight and all, so it stays sharp at any size and works with no board attached. The camera option falls back to the drawn board whenever no camera is running
- While Board View is on, that feature chooses what the board shows and Streaming Mode leaves it alone
- Scoreboard: one row per player with legs, sets and remaining score, the player at the oche marked with a dart in the Classic design and a blue bar in the Autodarts one
- Rows stay in seating order for the whole match. Autodarts re-orders its player list every leg so whoever throws first comes first, which used to make the rows swap places mid-match
- It scales itself down to fit the window — narrow or short, and whichever design and however many players — on top of whatever the Score Scale slider asks for
- Throws (optional): the three darts of the visit in progress plus the turn total, or Bust. Darts of the previous player's visit are not shown once the throw has passed on
- Checkout suggestions (optional): the remaining route for the player at the oche, shifted along as each dart lands
- Averages (optional): leg / set / match average beside each name; the Autodarts design shows the narrowest one the match has reached
- Footer text: your own line along the bottom, or Game provided by Autodarts.com
- Drag the board and the scoreboard anywhere; scale each with the sliders behind the gear in the footer. Reset Positions on the settings page puts them back, and takes effect on an overlay that is already up
- Nothing else the extension draws appears over the overlay — takeout notices, replays and corrections all stay behind it, so they cannot darken the chroma key mid-stream
- Everything on the settings page applies to a match already in progress — no need to leave and come back
- Virtual Board Surround: Adds a customizable surround to the dartboard
- Darts Zoom: A close-up of where each dart of the current visit landed, one tile per dart
- Three positions. Bottom (default) gives each dart a third of the window along the foot of the screen, and moves autodarts' undo and next buttons up to the free space in the top right so they are not covered; Top leaves those buttons alone and puts the same strip under the throw display, as wide as it is — and it follows the throw display when the site changes layout
- In the Bottom position that bar can be dragged anywhere in the window — the top right is only where it starts, and what is free space on one screen is the scoreboard on another. Grab it anywhere, buttons included: it stays a normal press until you actually move, so undo and Next go on working. Where you leave it is remembered, and it is always kept fully on screen, so a spot chosen on a large monitor is pulled back into view on a smaller one rather than lost off the edge. Reset bar position in the settings puts it back in the corner
- On Board adds nothing to the screen at all: autodarts' own board — the camera view, or the vector board when no camera is running — zooms in on each dart as it lands and pulls back out again
- Configurable hold time in milliseconds, 1000 by default; it also pulls back out the moment the visit ends or passes to another player
- Only a dart that has just been thrown moves the board. Correcting one, or taking one back, leaves it where it is — a zoom is how you know a dart landed, so it should not go off while you are fixing the score
- View mode: camera 1, 2, 3, or autodarts' own dartboard — the same choice Board View offers. A camera's close-ups are that camera's own picture; the drawn board's are a copy of the board, which is vector art, so they stay sharp at any zoom and show the site's hit highlight. It puts the board itself on your choice when a game starts and back again whenever the site changes it on its own, unless Board View is on — then that feature decides
- Adjustable zoom level, scaled to the position: the bottom strip is a third of the window wide, so the same level there magnifies far more than a narrower tile would, and it is eased off to suit; the top strip, a third of the throw display wide, takes the level as it is
- New darts fade in as they land (rising from the foot of the screen in the bottom strip); darts already on screen are left alone
- The board shrinks to make room, so the close-ups never cover it — at any window size, including tablets
- An optional centre dot marks the exact point
- Can be limited to your opponents' darts, or to visits where a checkout is on
- Clears when the visit is handed over; a busted visit stays up, since the darts are still in the board
- Stands down entirely during the bull-off, taking up no room at all until the match proper begins
- Three positions. Bottom (default) gives each dart a third of the window along the foot of the screen, and moves autodarts' undo and next buttons up to the free space in the top right so they are not covered; Top leaves those buttons alone and puts the same strip under the throw display, as wide as it is — and it follows the throw display when the site changes layout
- Board View: Start every game — bull-off included — showing the camera, or the drawn board, you actually want
- Autodarts has one button for this and it only cycles (camera 1, 2, 3, drawn board, round again); this presses it for you until your choice comes up
- It waits for a button that can actually be pressed. While a bot, or a seat scored by hand, is at the oche the button is disabled and blank — and blank is not the drawn board, however much it looks like it
- It presses again whenever the site forgets the view: the screen being rebuilt after the bull-off, or the turn passing to a board the site has not been told about yet, both of which put camera 1 back on their own
- Cycling the view yourself — the button, or autodarts' own
1/2/3keys — hands it over to you until the next leg begins - Boards with fewer cameras have a shorter cycle, so asking for one that is not there leaves the view alone rather than pressing forever
- While it is on, it is the one in charge: Darts Zoom's View Mode stops switching the board and only decides where its close-ups come from
- Automatic Fullscreen: Adds a fullscreen toggle to the match header, alongside the site's own icons
- It also goes fullscreen by itself on entering a match, but only when the browser allows it. Fullscreen may only be entered straight off a click, and arriving from the lobby's Start Game is usually too long ago to count — so most of the time the header button is the way in
- Adjustable UI Elements: Modify the size of legs, sets, and match information — the "Leg / Match" averages row wraps onto a second line rather than being cut short when it no longer fits the card
- Larger Player Names: Increase the font size of player names for better visibility during matches
- Both sizes are given in rem — 1 is the browser's base size, 16 pixels by default — and both work in every layout of the match screen, the sidebar of a narrower window included
- Takeout Visualization: Visual notification while the board is waiting for the darts to be pulled
- A Removing Darts… panel in the middle of the screen, in the site's own warning colour and display face
- Click it to put it away; it stays away for that takeout and returns on the next one
- Clicking it also resets the board, for a takeout the board never sees finish — through the match screen's own
Rshortcut, so it works whatever language the site is shown in - Only ever shown for a takeout happening right now, on a board this page is about — the board you are watching when you follow one, otherwise a board playing in this match. A board elsewhere no longer puts it on your screen, and neither does one left mid-takeout by an earlier game
- Automatic Next Player: Presses Next for you when a takeout never finishes
- A countdown appears on the site's own Next button as soon as takeout starts — configurable, 10 seconds by default
- Clicking anywhere calls it off; so does the board coming back before it runs out
- Skipped during the bull-off, which has no next player to move to
- Automatic Next Leg/Set: Starts the next leg once the darts are out of the board
- Counts down on the site's own Next Leg button — configurable, 5 seconds by default — and presses it
- Waits for the board to report the takeout finished, not just for the leg to be won, so the countdown does not run while you are still pulling darts
- Smaller Font for Inactive Players: Reduces the font size of scores for players not currently throwing
- External Boards Support: Follow a board that is not your own — save any board by name and open its live view in one click
- Adds an External Boards section to the My Devices page
- Paste either the board's ID or a link containing it; the ID is picked out for you
- Autodarts removed the per-board stats page in the site rebuild, so Follow is the only action left
- Features While Following a Board: Everything that describes a match also works while you watch one at
/boards/<id>/follow- Colours, smaller inactive scores, larger names, legs/sets and match data, Checkout Guide, Gotcha Helper, Enhanced Scoring Display, Gameshot Animation, Darts Zoom, Board View, Instant Replay, Animations, Caller, Sound FX, WLED and Takeout Visualization all run there
- Automatic Next Player, Automatic Next Leg/Set and Quick Correction stay off: they press the site's own controls, which belong to whoever is throwing rather than to whoever is watching
- Nothing starts until the board is actually in a match, and it starts by itself when one begins — you can sit on the page and wait
- Fancy Gameshot Animation: Celebratory animation when a player wins
- An animated border around the winning card, with the number of darts it took above it
- Works with any number of players, and on every screen size
- The darts count needs clear space above the card, so it is left off rather than laid over something else — on a tablet, a phone or a short window, and on a card with another player stacked directly above it. The border is drawn either way, just inside the card's edge where there is no room around it
- Enhanced Scoring Display: Improves dart throw visuals with larger numbers and scoring notation
- Shows dart notation (S/D/T, BULL) beneath point values, with the whole cell scaled up so a thrown dart reads from the oche
- Only touches darts you have actually thrown — autodarts' checkout suggestion for the darts still to come is left at its own size
- 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: Plays the winning dart back from your own webcam whenever a leg is won
- Point any webcam at your board and pick it in the settings; a rolling recording is kept while you are in a match, and the last few seconds are played over the screen once the leg ends
- This is your webcam, not the board's camera — the browser cannot reach that one. Nothing is uploaded and nothing is written to disk; the recording lives in memory and is dropped when the match does
- Duration sets how many seconds leading up to the winning dart to play (5–30). A little more may be shown, never less
- Start delay sets how long to wait after the leg is won before the replay appears (0–10 seconds), leaving room for autodarts' own celebration
- Shows over the whole page or over the board alone, with adjustable zoom and framing for the picture
- Click the replay to dismiss it early; correcting the winning throw takes it away by itself
- Skipped for the bull-off
- Gotcha Helper: Shows how far ahead the other players are in the Gotcha game variant
- Marks every player ahead of whoever is throwing with the single dart that lands exactly on their score and resets them —
T20,D11,BULL - A gap no single dart can cover is shown as the gap itself, e.g.
+37 - Sits beside the score, in the spot the site keeps for checkout suggestions
- Marks every player ahead of whoever is throwing with the single dart that lands exactly on their score and resets them —
- Checkout Guide: Displays suggested checkout darts in each player's score box
- Autodarts shows these itself while Show checkout guide is on in the match settings; this keeps them on screen when it is off
- Stays out of the way whenever the site is already drawing them, so a route is never shown twice
- Every player gets their own route, not a copy of whoever is throwing
- Gotcha gets a route too, which autodarts works out for no one: the darts that land exactly on the target score, honouring Straight, Double and Master out. It is shown for whoever is throwing, and the Caller announces the number with it
- 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
- Text-to-Speech (TTS): Generate custom caller and sound FX audio directly from text using your device's built-in voices
- WLED Integration: Trigger lighting effects and HTTP requests synchronized with game events
- Quiet Own Darts: Silences autodarts' own Dart landed sound for the darts thrown at your board, which you can already hear
Autodarts plays a thud whenever a dart lands, wherever in the world it was thrown. For a remote opponent that is the only sign anything happened; for the board in front of you it arrives a moment after the real one and tells you nothing you did not just hear.
This turns the sound off for the darts within earshot and leaves it for everybody else.
Its switch is not on this extension's settings page — it sits in autodarts' own sound settings, directly under the Dart landed setting it qualifies, labelled Only on others' turns. Both places autodarts keeps those settings have it:
- In Game Settings, behind the gear in the match header, for changing your mind mid-leg
- Settings → Sound Effects (
/settings/sound-effects), for setting it up outside a game
It is off by default, so the site sounds exactly as autodarts built it until you ask for otherwise. Either switch sets the other, and the choice is remembered between matches.
What counts as within earshot
- Your own throws
- A guest player typed into the lobby, playing on your board
- A friend with an account of their own, throwing at your board
Everyone else — a remote opponent, a bot — keeps the sound. When you are only watching a board rather than playing, that board's darts count as within earshot too.
Note
This only affects autodarts' own dart-landed sound. The extension's Sound FX and Caller are configured separately, and its opponent_throw trigger already covers the same ground for anyone who prefers a sound of their own.
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
- Prefer Combined Throws: When enabled and a sound for the exact dart combination (e.g.
s20_s5_s1) exists, the generic points sound (e.g.26) is skipped for that throw - Custom Sound Library: Add, edit, and organize voice clips for different game events
- Text-to-Speech (TTS) Generation: Generate caller sounds directly from text using the built-in "Generate TTS" button — no external files needed. Select from any voice installed on your device, adjust speed and pitch, and preview before saving. Your last-used voice, speed, and pitch settings are remembered across sessions.
- Bulk Upload with Trigger Assignment: When uploading multiple files, you can assign the same trigger to all files at once, making it easy to set up larger sound sets without manually assigning triggers to each file individually
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 playerbulloff: Once when the bull-off begins, not again as the throw passes between playersplayername: 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)
- Board Status:
board_started: When the board has startedboard_stopped: When the board has stopped or disconnectedmanual_reset_done: After a manual reset (also triggered when a new round starts)takeout_finished: When takeout has finishedcalibration_started: When calibration is startedcalibration_finished: When calibration has finished
- 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 - Point Ranges: A range between
0and180, e.g.0-20or100-180(point totals). Format:ambient_100-180or100-180(with or without theambient_prefix) - 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 dartopponent_throw: Plays when a remote opponent (any real player other than you, on a different board) throws a dart — useful as throw feedback when playing online without looking at the screen. Your own throws and bot throws are excluded (bots usebot_throw), and so are players sharing your board (e.g. a friend visiting to play on your board with their own account) since that board already makes the throw noise- 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 a tournament match of yours is ready for you to mark ready — the site's own match ready notification, in any language
- Board Status Sounds (only during a game):
ambient_board_started: Plays when the board has startedambient_board_stopped: Plays when the board has stopped or disconnectedambient_manual_reset_done: Plays after a manual reset (also triggered when a new round starts)ambient_takeout_finished: Plays when takeout has finishedambient_calibration_started: Plays when calibration is startedambient_calibration_finished: Plays when calibration has finished
- 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
Generate sound effects directly from text without needing external audio files:
- Generate TTS Button: Available in the Sound FX settings toolbar alongside Upload and Delete buttons
- Voice Selection: Choose from any voice installed on your operating system (varies by platform)
- Speed & Pitch Control: Adjust speech rate (0.5x–2x) and pitch (0–2) with sliders
- Prelisten: Preview the generated speech before saving
- Persistent Settings: Your last-used voice, speed, and pitch are remembered across sessions
- Cross-Platform: Works on Desktop (Chrome, Firefox, Edge, Safari), iOS Safari, and Android Chrome using the Web Speech API
- Trigger Assignment: Assign triggers to TTS sounds just like any other sound
Note
TTS sounds use your device's built-in speech synthesis and are generated live during playback. Voice availability and quality depend on your operating system. Short phrases work best for dart calling use cases.
- Multi-File Upload: Upload multiple sound files at once for faster setup
- Bulk Trigger Assignment: When "Generate triggers from filenames" is disabled, you can assign the same trigger to all uploaded files at once
- Efficient Setup: Makes it easy to set up larger sound sets without manually assigning triggers to each file individually
- 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, base64-encoded audio, and TTS (text-to-speech) sounds
- 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: A URL must start with
http://orhttps://. Plainhttp://is what a WLED device on your own network speaks, and it is accepted — the settings page only warns that a browser may treat it as mixed content
Effects can be triggered by various game events using these triggers:
- board_starting: when the board is going to start
- board_started: when the board has started
- board_stopping: when the board is going to stop
- board_stopped: when the board has stopped
- manual_reset_done: after a manual reset (is also triggered when a new round starts)
- throw: when a throw is detected
- last_throw: when the last throw is detected
- takeout_finished: when takeout has finished
- calibration_started: when calibration is started
- calibration_finished: when calibration has finished
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)bulloff: Once when the bull-off begins, not again as the throw passes between playersidle: 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
target[N]: The number a player is on in Around The Clock, Round The World, Shanghai and Bob's 27 —target7for the 7,targetbullfor the bull in a Double or Triple Around The Clock- These modes fall back to the X01 triggers above when no
targeteffect matches, sogameshot,matchshotand the individual dart triggers work there too
lobby_in: When a player joins the lobby — from the second player on, so opening a lobby and adding yourself does not set it offlobby_out: When a player leaves the lobby, as long as somebody is still in it
tournament_ready: Triggered when tournament start event is received via websocket
- Player Names: Use the exact player name as it appears in Autodarts. This is triggered instead of the generic
gameoneffect. - Spaces: Player names with spaces are supported (e.g.,
john doe) - Underscores: Alternative format with whitespaces replaced by underscores (e.g.,
john_doe) bot_throw: Triggered when a CPU/bot player throwsgameshot_[player name]: player specific gameshot triggermatchshot_[player name]: player specific matchshot trigger
- Board IDs: Configure specific board IDs to limit effects to certain boards. Leave the list empty and effects play everywhere
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) - The board is worked out from the page you are on — the board page names it in its own URL, a match page follows whoever is throwing
- 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
- JSON API: Effects trigger HTTP POST requests to the specified URLs with the specified JSON body
- HTTPS Only: All URLs must use HTTPS protocol for security (HTTP may work in the local network)
- Debouncing: Game events are debounced to prevent rapid-fire triggers
- Error Handling: Failed requests are silently ignored to prevent interrupting gameplay
http://wled-device.local/win/PL=1 # Play preset 1
http://wled-device.local/win/A=128 # Set brightness to 128
http://wled-device.local/win/FX=54 # Set effect to 54
http://wled-device.local/win/R=255&G=0&B=0 # Set color to red
WLED API Endpoint: http://wled-device.local/json
{"on":true,"bri":255,"transition":1,"bs":0,"mainseg":0,"seg":[{"id":0,"start":0,"stop":135,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":255,"cct":127,"set":0,"lc":1,"n":"1_0","col":[[0,255,0],[255,0,0],[0,0,255]],"fx":179,"sx":128,"ix":128,"pal":11,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0,"bm":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}The current state of the WLED leds can be fetched at http://wled-device.local/json/state. Refer to https://kno.wled.ge/interfaces/json-api/ for further informations about the json API.
Import multiple effects at once using this format:
Effect Name;http://wled-device.local/win/PL=1;gameon
180 Effect;http://wled-device.local/win/PL=2;180
Takeout;http://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
- ATC, RTW, Shanghai, Bob's 27:
target[1-20,25,bull]for the current target - Cricket: Basic support with plans for expanded cricket-specific triggers
- Bull-off:
bullofftrigger on 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
- 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)
- View Mode: Choose between 'Board Only' (the animation covers the dartboard) or 'Full Page' (it covers the whole page, over a blurred background)
- Bulk Upload with Trigger Assignment: When uploading multiple GIF files, you can assign the same trigger to all files at once when "Generate triggers from filenames" is disabled, making it easy to set up larger animation sets
Clicking an animation dismisses it early, so a long GIF never has to be waited out mid-leg.
Animations can be triggered by various game events using these tags:
- Points:
0to180(total points scored in a turn) - Ranges:
100-180(any turn total within the range;range_100_180also works) - Singles:
s0tos20, ands25or25for the single bull. Prefers25:25also fires whenever a visit totals 25 points, whiles25only ever fires for the bull. Setups that already use25keep working —s25takes over only if you have an animation on it - 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. Use s25 for a single bull and bull for a bullseye — e.g. s25_s25_bull.
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
- What's New: A summary of what changed, shown once the first time you open the settings page on a new release — what needs your attention, and what is worth switching on. Re-open it any time from Release Notes in the advanced panel behind the gear
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.
