Non-Lazy DMs use Obsidian for D&D

Graph view in Obsidian of my three D&D campaigns

Last month, I wrote about how I use Obsidian for D&D as a player in a 4e campaign (I play a half-elf hybrid wizard/cleric). This is about my second weekly game, in which I am the Dungeon Master for a 5e campaign. I’m a relatively new DM (I’ve got 39 games under my belt at the time this writing, and Obsidian is at the center of my workflow for improving my DMing skills, getting inspiration, preparing for a game, running the game, and making sure my players are having fun.

In many ways, my setup is the Non-Lazy DM’s approach to preparing for D&D games: high-effort, high-touch, and high-return. But I only do it because I enjoy it!

Plugins I use

This is going to be a long article, so if you’re just after the plugins I use, here they are up front!

I go into detail for some, but not all of these, in the article below.

Additionally, feel free to skip around to different sections by clicking on the hamburger menu on the upper right-hand corner and selecting the session that interests you.

Outside the game

Although I use Obsidian while playing D&D, I use it most for D&D between games: fleshing out the world, getting inspiration for new adventures, or preparing for specific sessions.


Many DMs run published campaigns, but I’m not one of them. I don’t think there’s anything wrong with running published campaigns; I just personally enjoy world-building and being able to tailor the environment to what I know my specific players will like. However, I still do read campaign books, for D&D as well as for other systems, for inspiration. I am also a voracious fantasy reader, and consider everything fair game for “stealing” for my games.

One thing I’ve begun experimenting with is processing my fiction reads the way I do my nonfiction reads. What better place to look for inspiration about creating a fantasy world than other fantasy worlds? How could I use a Bene Gesserit-like faction in my campaign?

I recently reread the first Dune book in preparation for the movie coming out later this year, but while I was reading it, I remembered how much I love the world it’s set in. I read books on Kindle, either on my actual physical Kindle ereader or on the Kindle app on my mobile, and I took highlights while I was reading Dune. You can see my full highlights here, synced via Readwise. I highlight turns of phrases I like, character descriptions that sounded cool, or passages that are particularly revealing of the type of world the story of Dune is set in. Below is an example of a quote I highlighted:

Schools were started to train human talents.” “Bene Gesserit schools?” She nodded. “We have two chief survivors of those ancient schools: the Bene Gesserit and the Spacing Guild. The Guild, so we think, emphasizes almost pure mathematics. Bene Gesserit performs another function.” “Politics,” he said. (Location 248)

It really resonated with me as a good characterization of two important factions in the Dune universe.

Then, just as I do with nonfiction books, I create a separate note about the book itself, attempting to summarize the parts of it that might be interesting or useful to me in the future. Below is a screenshot of my page on the first book of Dune. I identify “Key truths” about the world, because I also like to use that terminology when creating secrets or themes for a fantasy world or city I’ve created.

My notes on the book Dune

Here are my full notes on Dune.

Then, I also think about tropes or patterns of character, plot, or setting present in the book. I’ve started collecting these in a a page called Forms in my vault. I think it’s useful to spot things that occur again and again in fantasy fiction, whether they’re overused or not. If they’re tropes that I’d rather not repeat, having a “formula” of the trope helps me either avoid it or consciously subvert it in my games. Sometimes, I just take a form wholesale and incorporate it as is.

Here’s an example of a page I created that was inspired by the Bene Gesserit– a short note about “Nuns who think and fight”.

I haven’t been doing it for very long, but it’s already come in useful when thinking of major events and players in my world.

Adventure creation

Adventures are smaller-scale and higher-resolution than campaigns or worlds, so I often need more specific notes than forms.

I read and highlight adventure blog posts and articles using Readwise’s recently announced Reader app, and then they, along with tweets, books, and PDFs, get sent to Readwise and then Obsidian using the Official Readwise plugin for Obsidian. I’ve written about this process in depth, but here’s what that looks like for Mike Shea’s Return of the Lazy Dungeon Master - affiliate link.

My notes on Return of the Lazy Dungeon Master

An advantage of using Reader (which is currently in a private beta, so I’m not allowed to share screenshots of it) is that I can even highlight text locked behind a paywall. For example, I have a D&D Beyond subscription and I’ve bought all the books available on their store, but most reading apps don’t know that, so it’s been hard to find one that will let me highlight text from one of the WotC sourcebooks. Not so with Reader. Here’s what my highlights from the first chapter of Volo’s Guide to Monsters looks like in my Obsidian vault after it’s synced from Reader:

My highlights from Volo’s Guide to Monsters

Readwise is great because I can highlight something on my Kindle and worry about processing it later in Obsidian. I process incoming Obsidian notes daily from 9-10pm– that doesn’t mean I get through them all, just that I have a scheduled time to go through highlights and notes every day.

For D&D-specific notes, that also involves summarizing what I’ve learned into the notes I already have on how to be a dungeon master:

My notes on session prep as a DM

The referencing feature on Obsidian lets me confidently paraphrase without stealing. All I need to do is put a [^lazydm] where I want the superscript to be within the text, and then at the end of the note, I put something like:

[^lazydm]: Shea, M. (2018). _Return of the lazy dungeon master_. [[Return of the Lazy Dungeon Master|My highlights]].

That gets parsed as a footnote by Obsidian and lets me properly credit authors.

When I find good tools that help me flesh out adventures, I try to update my page on DM tools and inspiration, so they’re all in one place.

While creating adventures, I like to use Obsidian Admonition to call out specific parts of the text for me as I’m running the adventure, like this:

Sample of how I use Obsidian Admonition

Random tables

I definitely have overarching plans about the wider plot in the world at large, but I also like to be surprised. Throwing random elements into games is one of the ways that I can keep myself on my toes and remind myself that I’m not the only one making the story.

There are many random tables in both official and unofficial D&D sourcebooks, but I only use those as starting points. For me, creating random tables that are tailored to my characters and to the things they care about is where it’s at!

I’ve experimented with creating my own random generators for various things, as well as using existing ones like Donjon, but it’s an Obsidian plugin, Jeremy Valentine’s Dice Roller, that I have settled on.

The name “Dice Roller” makes you think it’s only for rolling dice, but it’s much more than that. Its REAL value, in my opinion, is in how it lets me create tables for ANYTHING, and then randomly pull one row out of it. Here’s how it works.

First, you create a table. I had a session where my players discovered a place I called Shipwreck Beach, and had a lot of fun going through several of the ships that were there. Here’s a table of “encounters” I put together for that session.

### Ship encounters

| Roll | Encounter                                                             |
| ---- | --------------------------------------------------------------------- |
| 1    | Carnivorous Ship, ToB II p. 56                                        |
| 2    | Map Mimic:       |
| 3    | Random curse: p.249 of GM's Book of Random Encounters - d100          |
| 4    | Clockwork weaving spider (1, ToB p. 66)                               |
| 5    | 1d6 Cobbleswarm (2, ToB p. 68)                                        |
| 6    | a feral little girl wearing a periapt of proof against poison         |
| 7    | A large gold coin bearing the crest of the Kryn Dynasty and the queen |
| 8    | Book about the Arms of the Betrayer Gods                              |

Note the ^ship identifier at the bottom there– it can be called whatever you want, but you’ll use that identifier when rolling on that table. I also included the Roll column, in case I decided on the spot to let players roll instead of doing it myself.

Next, in another note (or the same one, if you want), include this line:

Shipwreck encounter: `dice: [[Shipwreck Beach#^ship]]`

When you flip to Preview mode, you’ll see this in the place of the line above:

Random Shipwreck encounter using Obsidian Dice Roller

That’s it!! This has made a HUGE impact on my games, because it’s so easy to create or modify tables. I use random encounter tables sparingly during the game, but often use it before a game, to introduce something fresh that I hadn’t thought of.

Session prep

As you might have guessed, I mostly use Sly Flourish’s Lazy DM steps for encounter creation, saved as an Obsidian template:

type: session
world: Exandria
campaign: "The Slayers Five"
date: {{date}}
game_date: 836-03-
location: Rumblecusp
characters: [Boris, Lira, Ora, Jamedi, Flint]
tags: [TVZ]

## [[Session Summary]]:



## Housekeeping

## Recap


## Strong start


## Scenes

- [ ] 
- [ ] 
- [ ] 
- [ ] 
## Secrets and Clues

- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 
- [ ] 

## [[Loot]]

- [ ] 


## Log

Before each session, I’ll go through each of these sections.

I add metadata to every session for use with the Dataview plugin later, in case I want to do a search for all sessions that involved a particular NPC or that took place in a certain location, for example.

I fill out the Session Summary section after the game, but I put it at the top so I can immediately see what happened in the session in case I need to refresh my memory on it in the future. I also identify this section with a ^summary so that I can embed it in the next session, as a recap - more on that below.

In the Housekeeping section, I write down things I want to mention before we dive into the narrative of the session. Usually, these topics are scheduling- or rules-related. For example, if my players have just levelled up and I see that one of them has chosen a feat, I might make a note of it here to make sure that they know what it means. My players are pretty new, so I think it’s better to err on the side of more communication rather than less.

In the Recap section, I call the sumary from the previous session and embed it into the current session using something like ![[38_8360310-8360311 Seduction at the Moonlight Chateau#^summary]]. When in preview mode, Obsidian shows just that section labelled with ^summary from the previous game. I like to start the game by either reading out the summary myself, or asking one of the players to recount what they remember. That way we’re all on the same page when we begin.

In Strong start, I write a paragraph or two of prepared text that I use to kick off the story. This is usually the only text I’ll read out word for word during the game.

Scenes are a list of events that I THINK will happen. My players frequently surprise me, which I welcome, so I also list these with checkboxes so that I can keep track of where the story deviated from the plan.

Sly Flourish does recommend a separate section for Fantastic Locations, but I tend to prepare these as separate pages. For example, here are my notes on a possible location, The Charred Circus. I don’t include them within the session note itself, but I do make sure I have a few that characters could go to. Then, I link to all of them from the note I have for the city they’re in, like this one for Port Damali.

Secrets and Clues is where I put a list of 10 things that players MIGHT find out somehow. This is where I look when a player rolls a natural 20 on a Perception check. The idea is to describe what the secrets are, but not get too caught up in trying to plan when or how the players will find out those secrets. I try to include things that might be interesting for the players, as well as a few potential adventure hooks. Here’s a list that I made for a previous game. I have never used all 10 up in one game, but I like having more than I need.

In Loot, I put in any items I know the party will likely get to. If they’re in a boss fight, I usually save in this section all the things I’ve decided beforehand they’ll get. If I don’t have something specific like that in mind, I sometimes randomize a bunch of non-magical trinkets. The Loot page contains items I’ve picked out for specific characters.

Post-session processing

If your players are anything like mine, you’ll often find yourself with a bunch of unused material and a lot of stuff you still had to improvise on the spot, despite adequate preparation. That’s okay! I actually enjoy when my players do something unexpected. I encourage and reward creative play… but it does mean that I have to do a bit of a debrief after each session.

I try not to prepare things that may really be “wasted”. Things like locations, NPCs, or general plot hooks can usually be recycled. After games, I spend some time tying off loose ends, noting down decisions the party made and the reasoning behind those decisions, and tweaking connections between NPCs or places based on how the party reacted.

  • Fleshing out bits of the world, with each city or NPC getting a page
  • Tagging cities and NPCs with Location or NPC, and then within the city, doing a query for NPC and city name to get everyone living in that city.

I use metadata for every page in my campaign so that I can use the excellent Dataview plugin later to find whatever I want. You already saw my session template, but here’s an NPC template that I use:

type: NPC
faction: []
location: []
world: Exandria
campaign: "The Slayers Five"
date: [{{date}}]
description: ""
race: []
gender: []
class: []

I insert this template for every single NPC in my world, whether my players get to it or not. Because I use it so often, I’ve set up a hotkey for inserting templates in the Obsidian settings:

Setting a hotkey for template insertion

That way, all I have to do is hit CMD + ; and select the right template from the list, and the text above is inserted at the beginning of the note as frontmatter, with all the fields I need to fill out. The date is also automatically generated.

Using the Dataview plugin, I can then embed queries on location pages so that I can see NPCs in that place at a glance. For example, here’s the snippet I put under the People section in my Port Damali page:

table shop as Shop, faction as Faction, description as Description from "Exandria"
WHERE contains(type, "NPC") and contains(location,"Port Damali")

(If you try this, remove the backticks \ in the snippet above– those are just to show you the syntax for a dataview query.)

That query, when rendered in Preview mode in Obsidian, looks like this:

Rendered Dataview query in Obsidian Preview mode

Having the metadata for every NPC, monster, item, and place in my world is essential for creating queries like this. I’ve also found it useful to maintain a model of the metadata I use:

- `type`
	- `NPC`
	- `PC`
	- `shop`
	- `place`
	- `item`
	- `session` for D&D play sessions
	- `quest`
	- `race`
	- `faction`
	- `family`
	- `monster`
	- `condition`
	- `deity`
	- `other` for anything else
- `characters` (for sessions): characters involved in this session
- `deceased`
	- `true`
	- `false`
- `family`
- `faction`
- `race`
- `gender`
- `class`
- `description`
- `date`
- `game_date`
- `world`
	- `Exandria`
	- `Forgotten Realms`
	- `Exandya`
- `campaign`
	- `Order of the Wandering Mind`
	- `The Slayers Five`
	- `Die vergessene Schwester`
	- `Temporary White Circle`
- `shop` (for proprietors)
- `shop_type` (for shops)
	- `general` : general goods store
	- `alchemy`: potions
	- `magical items`: sells magical items
	- `services`: magical spells, messaging, brothel
	- `tavern`: food and drink
	- `inn`: lodging
	- `herbalism`
	- `smithy`
- `location`: city of residence
- `origin`: city of origin

During the game

I keep a “World” page for each of my D&D campaigns, including a list of sessions:

Campaign Page with list of sessions

During the game, I use the session page that I mentioned above, and start filling in the Log section. I tend to take way fewer notes as a DM than as a player, just because I’m busy doing other things, but I do always write down things that the players do that I might need to remember later.

One thing that comes up frequently in my games is the need to improvise encounters, NPCs, or locations. I’ve had great success in creating a Random Rolls page that collates many of these random tables in one note. If you click on that link, you unfortunately won’t be able to see the results rendered, because the Dice Roller plugin isn’t available for Obsidian Publish, but maybe you’ll get an idea of things I’m rolling on. Most of the tables referred to are from this Random Tables note, but every now and then I’ll include tables in location notes instead.

I always have this Random Rolls page up as part of my DM workspace, in case I need to quickly improvise something. Here’s what the NPC section looks like:

Random rolls on the NPC random tables

I can use any or all of those things that I want, or use them as inspiration for something else I make up on the spot. Either way, it means I’ll never be completely at a loss for the name of an NPC. ;)

Initiative Tracker

I use D&D Beyond for character sheets, but I use Jeremy Valentine’s initiative tracker to handle combat because there are a few critical features that D&D Beyond’s Encounter Tracker doesn’t yet support:

  • Status conditions
  • (Easy to tweak) homebrew monsters
  • Hiding monsters’ names from the players

The Initiative Tracker plugin supports all of these. When activated, it appears as a side panel in Obsidian:

Jeremy Valentine’s initiative tracker for Obsidian

I can easily see everyone’s HP and AC at a glance, and also apply special status conditions when necessary. My players don’t have to know whose turn it is– they just have to know when their turn is. I warn them verbally when they’re “on deck”, and they haven’t had an issue with that.

D&D Beyond does allow you to create homebrew monsters, but the only real benefit to doing so is to be able to use it in their Combat Tracker, so I’ve been using another plugin by Jeremy Valentine, the author of this one, to create monster statblocks


The 5e statblocks plugin lets me easily create homebrew creatures just by using this format:

name: string
size: string
type: string
subtype: string
alignment: string
ac: number
hp: number
hit_dice: string
speed: string
stats: [number, number, number, number, number, number]
fage_stats: [number, number, number, number, number, number, number, number, number]
    - <ability-score>: number
    - <skill-name>: number
damage_vulnerabilities: string
damage_resistances: string
damage_immunities: string
condition_immunities: string
senses: string
languages: string
cr: number
    - <description>
    - <spell level>: <spell-list>
    - [<trait-name>, <trait-description>]
    - ...
    - [<trait-name>, <trait-description>]
    - ...
    - [<legendary_actions-name>, <legendary_actions-description>]
    - ...
    - [<reaction-name>, <reaction-description>]
    - ...

(Again, remove the backticks \ at the starting and ending lines of the snippet above if you copy and paste this into your vault.)

I usually start with a “real” monster from official or unofficial sourcebooks, then tweak it from there. For example, here’s a sample one that I tweaked from Tome of Beasts:

Sample of 5e statblock plugin in action

The best part about this plugin is that it integrates with the Initiative Tracker. When you create a statblock and save it, that monster then becomes available for use within the Initiative Tracker, as you can see from the screenshot above.


I subscribe to Obsidian Publish, partly to give back to the fine Obsidian developers who’ve made a tool I use daily and partly because I’ve found that it’s reduced friction in publishing. I use it primarily for non-D&D-related things, but D&D is part of my life, so it’s there as well. You can find my notes on the D&D campaign I DM here.

Some of the plugins that I use unfortunately don’t render correctly when Published, but the developers are working on that.

I publish my campaign notes mainly because I love seeing other DM’s thought processes and systems, so I thought I’d return the favour by sharing mine as well. In case you were wondering, my players don’t know I publish these notes– or, at least, I hope they don’t!

Player-facing campaign vault

I used to drop handouts into a WhatsApp group with my players, but it became increasingly unwieldy to look for something. We switched to Slack, but that had the same problem of needing to scroll back through lots of photos before finding the right one. Photos aren’t very searchable in those apps.

A few months ago, I switched to Obsidian for handouts. I created a separate vault for the campaign and shared it with my players via Dropbox. I did have to talk them through the setup, but it’s worked out very well for us as a free alternative.

In the vault, I put things like:

  • Pictures and other handouts
  • Session videos and summaries
  • Links for everything we use as a group
  • House rules

Session page

I create a page for every session we have, which has a section for the video recording of that session (unlisted and just for us, sorry), a player-friendly summary, and a log. The log is where I dump photos I give them during the session. Here’s what that looks like:

Session page for my player-facing vault

I don’t put any other notes in the log; that’s the players’ jobs (if they want to).

I like to have a “Story Thus Far” page that embeds the video and summary sections of all the sessions, so any of us can read through it to remember what’s happened. It’s fun to see how far we’ve come as a group.

Story Thus Far page in my player-facing vault

About our game

The About our game page has a list of links to all the tools we use, our schedule, and a few things about the campaign and the world.

About our game page in my player-facing vault


I keep a house rules page that shows all the extra rules I’ve put into the game. I mostly play with all the WoTC-produced sourcebooks, but I’ve added some extra rules about things that my players are interested in, such as strongholds (for which I use Matt Colville’s Strongholds & Followers book) and smith’s tools.

Rules page in my player-facing vault

I also have some other pages on rules that come up often, such as Ship statblocks (since the campaign is set on a coast) and suggested downtime activities.


I call my approach to game preparation the Non-Lazy DM’s approach as a tongue-in-cheek nod to Mike Shea’s content, but there’s truth to the moniker, too. My setup is extremely detail-oriented, time-consuming, and fun… at least for me! And that’s the key: I wouldn’t be doing any of this if I didn’t find it truly enjoyable to world-build to this level of detail.

If you’re a non-lazy DM too, thanks for sticking around! I hope this has given you some ideas for how you could use Obsidian to run your games and stimulate your imagination, too.

See Also