Set up the DM Screen, the connector and Roll20.
Everything here is a public test. Features and workflows may change as testing reveals what works best at real tables.
1 · Your DM profile
Create a profile on the sign-in page. Your console state (campaigns, characters, notes, inventory snapshots, encounter rosters, drafts) is saved to that profile as you work, so the same console opens on any browser you sign in from. The profile menu can export everything as a JSON file, and the import page brings such a file back in.
2 · The connector
Install Compass Bridge in Chrome, then open the DM Screen. The header shows Bridge with the connector version when it is connected. Sync health in the sidebar checks the connector, your open D&D Beyond tabs, the Roll20 Turn Order and the Compass dice relay in one place.
3 · D&D Beyond
Import the party
Open your campaign's character sheets in Chrome, sign in to D&D Beyond, then use Sync D&D Beyond on the party overview. Choose the current campaign or the open tabs, scan, review, and import. Later refreshes read only the sheets you pick.
Connector 0.8.93 and later keeps the sheet tabs it has read loaded, so Chrome's Memory Saver does not discard them between scans. From 0.8.94 the connector also expands a collapsed tab group that holds the sheets for the duration of a scan (Chrome freezes tabs in collapsed groups). If a scan still sits on "Still reloading … waiting for the sheet reader", click the sheet tab once so it loads, then scan again.
Notes, inventory and the review queue
Session notes and inventory changes stay local until you send them. Notes are written into the sheet's Background journal as tagged blocks and verified; inventory additions, moves, removals and coin transfers are performed on the sheet through D&D Beyond's own controls and read back before they count.
Encounter builder and magic items
Load the monster catalogue once from your signed-in account; it reads only names, types, CR, sources and links. The magic item workshop composes an item, imports builder details for an existing one, and creates it privately in your homebrew collection.
4 · Roll20 initiative, step by step
Everything below works with a free Roll20 game: the connector reads and writes the Turn Order and chat the way you would, no Mod or API script.
One-time setup
- Install the connector and sign in to the DM Screen; the header shows Bridge with a version when it is connected.
- Open your Roll20 game in the same Chrome window and open the Turn Order window. Keep it open during play.
- On the DM Screen's Initiative panel, click Import Roll20 once to link the game. The link is remembered per campaign.
Before the fight
- In Roll20, drag-select the party's tokens and the monsters for this round, right-click → Add Turn. GM-layer tokens are fine; the DM Screen treats them as hidden.
- On the DM Screen, click Roll party. Characters without a score are rolled with their D&D Beyond bonus and advantage setting, and each roll is posted to Roll20 chat. Scores already rolled in Roll20 are left alone; Reroll all starts over.
- Type each monster's initiative bonus in the
+box on its row and click Roll creatures. Results are whispered to you only. - Click Export to Roll20. Scores land on the tokens and the Turn Order is sorted; both screens now show the same list.
During the fight
- Next turn on the DM Screen, or the arrow in Roll20's Turn Order — both move together and highlight the same combatant.
- Each turn is announced in chat ("It is Cirala's turn!") and the controlling player is whispered. Monsters announce as "It is the DM's turn!" unless you give the row a reveal name in shown as…. GM-layer or unnamed rows are never announced.
- Add a monster mid-fight in Roll20 (right-click → Add Turn): it appears on the DM Screen by itself, and an accidental duplicate turn is removed for you.
Options above the list
- Sync turns with Roll20 — the two-way link; off = DM Screen only.
- No duplicate turns — automatic removal of a second turn for the same token.
- Announce in Roll20 chat — style (system line, emote, named voice, as you) and an editable template;
{name}and{round}are filled in. - Rolls to chat, Whisper the player — the roll lines and the private nudge.
- Roll20 token names… — only when a Roll20 character or player is not named like the D&D Beyond character; the DM Screen tells you when a whisper cannot be delivered.
Pro Mod features
Selected-token rolls, exact timers and synchronized deletion need the DM Screen Initiative Mod installed in a Pro game. Everything above works without it.
When a click does nothing — what it means
| You clicked | What you see | What to do |
|---|---|---|
| Roll party (greyed) | No characters in this campaign | Sync D&D Beyond on the party overview, or switch campaign. |
| Roll party | "Everyone already has an initiative score" | Scores are kept; use Reroll to roll again. |
| Creatures (greyed) | No creature rows | Add the tokens in Roll20 (select → right-click → Add Turn) and Import, or add a creature below the list. |
| Import / Export (greyed) | Header says Bridge offline | Install or enable the connector, then refresh the DM Screen. |
| Import | "No Roll20 game is open in this Chrome window" | Open the game as GM in this same Chrome window. |
| Import | "…its Turn Order window is not visible" | Open Roll20's Turn Order (⇅ on the toolbar) and import again. |
| Import | "Linked, but the Turn Order is empty" | Nothing to read yet: add tokens in Roll20, or just roll and export. |
| Import | "N Roll20 games are open" | Close the other games (or import from the one you want in front). |
| Export | "Nothing to export yet" | Roll party / Creatures first so rows have scores. |
| Export | "N of these are label rows, not tokens" | Roll20 had no rows for those characters, so plain entries were added. For token-bound turns, add the tokens in Roll20 first, then export. |
| Export | "Link uncertain Roll20 tokens" dialog | Two Roll20 rows could be the same character; pick one per name. |
| Export | ↥ Export shows a dot | Scores changed here since the last sync; export to update Roll20. |
| Next turn | "The linked Roll20 game is closed" | Reopen the game with the Turn Order visible, then Import to relink. |
| Next turn | "Roll20 is on … which matches no row here" | Roll20 has a row the DM Screen never saw; click Import. |
| ▶ on a row | Roll20 advances several turns | Intended: with sync on, Roll20 is walked forward to that row. |
| Roll20's own next arrow | DM Screen does not follow | After ~10 s a status line says Roll20 stopped answering: Import to relink. Also check the connector version in the header. |
| Announce / Whisper (greyed) | Needs a link, or a newer connector | Import once; update the connector from the Connector page. |
| Whisper | "Roll20 has no player or character named …" | Open Roll20 token names… and enter that player's Roll20 name or the sheet's name. |
| Add selected tokens | "Roll20 offers no Add Turn for the current selection" | Select the tokens on the map and right-click one of them first — or simply use Roll20's own Add Turn; duplicates are removed automatically. |
If something looks off
Click Import Roll20: it re-reads the tracker and re-links every row by token. It is always safe.
5 · Loremaster's Compass desktop app
With the app running, its dice reach an open Roll20 chat through the connector over a local-only connection, and the initiative lookup answers by Roll20 token name from the campaign that is active in Compass. Switch the app to the campaign you are running before rolling.
6 · Three-way sync: D&D Beyond, the DM Screen, Roll20
With a DM Screen open, the game linked (Import once on the initiative panel) and your Roll20 tab open, a change made on any side reaches the other two. The DM Screen is the hub: nothing talks D&D Beyond-to-Roll20 directly, and every hop is a line in Recent activity tagged with where it came from.
| Edit made on… | D&D Beyond sheet | DM Screen | Roll20 token |
|---|---|---|---|
| HP, temporary HP | written (HP Management) | updated | Bar 3 / Bar 1 |
| Max HP (Aid, drains) | written as the Max HP Modifier | updated | Bar 3 max |
| AC | read on Sync only | updated | Bar 2 |
| Conditions, exhaustion | written (Conditions pane) | updated | tooltip segment |
| Death saves | written at 0 HP | updated | tooltip segment |
| Auras (Twilight Sanctuary, Spirit Guardians…) | started by a feature use on the sheet | chip with countdown | aura 2 ring + tooltip |
How each direction works
- D&D Beyond → DM Screen: the connector reads each campaign character from D&D Beyond every 30 seconds while a DM Screen is open (no tabs, no reloads) and reports what changed. A page load reconciles once against what the DM Screen shows.
- DM Screen → D&D Beyond: Party overview → Write HP back to D&D Beyond. Edits are debounced per character and written one sheet at a time, then read back from the character record before they are reported. A change that just arrived from the sheet is never written back.
- DM Screen ↔ Roll20: Initiative → Roll20 → Bars follow D&D Beyond syncs pushes bars, the tooltip status segment and aura rings onto the party's tokens on the map you are looking at; a token a player edits comes back within a few seconds. Sync token bars does the push by hand (e.g. after moving to a new map).
- One writer per browser: if two DM Screen tabs are open, one shows read-only in the top bar and only watches. Close the other tab to hand over.
Tokens at the table
- Tooltip: the connector keeps a managed segment —
◆ Poisoned (2) · Exhaustion 1 · Twilight Sanctuary (9)— and switches the hover on. Anything you typed yourself stays after⟂. When there is nothing to report your own text stands alone. - Aura rings use the token's aura 2; aura 1 is never touched.
- Each bar sync writes every copy of a character's token on the map (by learned id, exact name, or first name).
- Bar layouts (Table settings): what each bar carries, separately for party tokens and NPC tokens — HP / max HP, temp HP, AC, concentration turns left, the aura's roll, or leave alone. Every write and every read-back follows these tables. Compendium monsters drop in with HP on Bar 1 (green), the party keeps HP on Bar 3 (red); nothing needs converting. A game with a fourth bar (yellow) shows it once the map has been read.
- A token dropped onto the map: a party member's token gets its bars, tooltip and aura at once; any other token joins Roll20's Turn Order with d20 + its sheet's initiative bonus (Dex when the sheet was never opened), placed below the current turn (Dropped tokens join the Turn Order).
- Rows that are not party members carry a 🤝 / ⚔ toggle: allies share the party's auras, foes are the ones Spirit Guardians hits.
Numbers, durations, attacks
- Click any HP, temp HP or max HP number (initiative rows and party cards):
-10takes damage (temporary HP first),+5heals,35sets. Enter applies, Escape cancels. - A condition added with a number of turns counts down at the start or end of that character's turn on every forward turn change — Next turn, a jump, or the Roll20 follow — and is removed (on the sheet and the token) when it runs out. Previous never re-ticks.
- Attack cards posted to Roll20 chat (Compass rolls, Beyond20) appear under Table cards on the initiative panel with the totals Roll20 rolled. Apply hit… applies the damage to a character; for life-drain style attacks also reduce max HP is pre-ticked and lowers the maximum by the damage. Restore max HP in a card's quick actions undoes the drains after a long rest.
- Auras start from a Beyond20 feature or spell card, from the feature's limited-use box ticked on the sheet (Channel Divinity on a Twilight cleric → Twilight Sanctuary), from the caster rolling its dice in chat, or by hand from + aura on the card. Whichever arrives first starts it; the others never restart a running aura. Concentration auras end each other; the initiative clock ends timed ones.
- Aura dice. The DM Screen rolls each running aura's dice once and shows the number on the chip and the token tooltip. Spirit Guardians (3d8) rolls on every turn change — everyone starting a turn inside that turn takes that number. Twilight Sanctuary (1d6 + cleric level) rolls once at the end of the caster's turn and holds it for the round — everyone ending a turn inside gets that number. The 🎲 on the chip hands the roll to the player instead: the DM Screen then only records what they post to Roll20 chat.
- Who is inside is read from the Roll20 map after every turn change: a creature counts when the centre of any square it occupies lies within the radius, measured from the caster token's edge the way Roll20 draws the ring. A party member or 🤝 ally ending its turn in a Twilight Sanctuary gets the temp HP (sheet, token bar, or the NPC temp bar); a foe starting its turn in Spirit Guardians gets a Full / Half / Saved prompt on the initiative panel that applies the damage to its HP bar once the save is known. Aura effects to chat posts a line worded for the ability ("Edam bolsters Robin with Twilight Sanctuary, granting 14 temporary hit points").
- Light and vision. Each initiative row carries a three-row stack: conditions and auras; the light the token carries (+ light: torch, lamp, lanterns, the Light and Daylight spells… bright and dim radius as Roll20's dynamic lighting, burning down on the clock); and the token's vision profile (👁): by stat block, vision only, night vision of a range, or no vision. By stat block goes through the source order under Table settings — a party member's D&D Beyond sheet (its darkvision becomes night vision), Roll20 (a sheet's senses line, or the vision the compendium put on the token when it was dropped), an LMC creature — and the first source that knows the creature decides. A token with no stat block anywhere is left sightless until its row says otherwise. Vision from stat blocks (this map) does every token on the current map at once. A Twilight Sanctuary sheds dim light 30 ft from the caster's token while it runs.
- Automation switches (Table settings → Automation, all on by default): Concentration checks — a concentrating party member who takes damage gets a Kept / Lost prompt in the top bar (DC 10 or half the damage); Lost ends their concentration effects everywhere and says so in chat. 0 HP handling — a party member at 0 gains Unconscious and Prone (Unconscious lifts when healed); a monster whose HP bar reaches 0 gets the dead marker, leaves the Turn Order and is announced. Hit / miss on Table cards — an attack card is compared with the chosen target's AC before Apply. Work on the players' page — token work happens on the map the player ribbon is on when it holds tokens, else the page you look at.
- Who is affected? A spell card in chat whose spell is on the caster's D&D Beyond sheet (the ownership gate — nothing else opens it) gets Affect…: tick the creatures (self-centred areas pre-tick who stands inside), mark Full / Half / Saved or Failed / Saved, adjust the amount, Apply. Party members go through their sheets, other tokens through their HP bar or tooltip, one chat line each; a concentration spell ends the caster's other concentration effects and its chips vanish if concentration is lost. The Spellbook panel lists what each character can cast and which spells have automation.
- Bar layouts are enforced on the map: a dropped NPC token is converted into the NPC layout at once (HP with its max and link moved to the HP bar, the old bar cleared); changing a layout converts every NPC token on the map; Convert tokens on this map does it by hand. Party tokens are written from the sheet on every sync.
- Encounter builder → map: Send to map creates each creature's token from its Roll20 journal character (the name must match a journal entry — a compendium drag or an imported stat block), numbered, in rows, in the Turn Order with the catalogue's initiative bonus, bars in the NPC layout, vision as the token carries it. Remove from map takes them back out of the map and the Turn Order.
- Non-party rows: rename with ✎ (the token and the Turn Order follow), 🤝 / ⚔ for ally or foe, conditions with durations shown in the token tooltip, light and vision profiles. Duplicate names are numbered when dropped (Goblin, Goblin 2 …).
- Previous gives the turn back: conditions and auras regain a turn, up to the duration they started with. Click the number on an aura chip to set the clock by hand (
600is an hour); the countdown continues from there.
Reporting a bug
Note which panel and which action failed, the connector version from the header, and the text of any status line. Export your console state first so nothing is lost. Please do not send character or campaign data you would not want stored.