Features
DM Hero is packed with features to make your life as a Dungeon Master easier. Let's explore them all!
Fuzzy Search
The Problem
You're mid-session. A player asks "What was that NPC's name? The one in Baldur's Gate?" You know it's something like "Elminster" but you can't remember exactly...
The Solution
Press / and type "Elminstr" - DM Hero finds "Elminster" even with your typo!
How It Works
DM Hero uses FTS5 (Full-Text Search 5) combined with Levenshtein distance matching:
- FTS5: Indexes all your content for instant retrieval
- Levenshtein: Measures how "close" your search is to actual names
- Cross-Entity: Searches NPCs, Locations, Items... everything!
Search Tips
| What you type | What it finds |
|---|---|
gandlf | Gandalf (typo tolerance) |
wizard elf | All elven wizards |
"prancing pony" | Exact phrase match |
tavern waterdeep | Taverns in Waterdeep |
Metadata Search
Search includes metadata fields too:
- Search "elf wizard" to find NPCs with race=Elf AND class=Wizard
- Search "legendary weapon" to find legendary rarity weapons
- Search "lawful good" to find all Lawful Good NPCs
Entity Linking
In-Text References
In any description field, create clickable links to other entities:
The {{npc:Gandalf}} met with {{npc:Frodo}} at {{location:Bag End}}.
He carried the {{item:Staff of Power}} and spoke of {{lore:The Ring}}.
How to Use
- Type
{{in any description field - Select the entity type:
npc,location,item,faction,lore,player - Type the entity name
- Close with
}}
What You Get
- Clickable badges: Click to navigate directly
- Hover previews: See entity details without leaving
- Automatic updates: If you rename an entity, links update too
- Bidirectional awareness: Linked entities know about each other
Example Workflow
Writing about a location:
## The Prancing Pony
A famous inn in {{location:Bree}}. The innkeeper {{npc:Barliman Butterbur}}
serves the best ale in the region.
Rumor has it that {{faction:The Rangers}} often meet here in secret,
and the {{item:Mysterious Map}} was last seen in the back room.
Campaign Maps
Overview
Upload your world maps and make them interactive!
Getting Started
- Go to Maps in the sidebar
- Click Upload Map
- Select an image (PNG, JPG, WebP)
- Give it a name and description
Placing Markers
- Open a map
- Click the + button → Add Marker
- Click on the map where you want the marker
- Select an entity to link it to
- Save!
Markers are color-coded by entity type:
- 🟢 NPCs (Green)
- 🔵 Locations (Blue)
- 🟠 Items (Orange)
- 🟣 Factions (Purple)
Location Areas
Mark regions on your map:
- Click + → Add Area
- Click the center point
- Adjust the radius
- Link to a Location entity
Great for showing city districts, forest boundaries, or territory control!
Measurement Tool
Need to know distances?
- Click the ruler icon
- Click points on the map (A → B → C)
- See total distance calculated!
Important: Set your map's scale in the edit dialog:
- Map scale (e.g., "100 km across")
- Unit type (km, miles, meters)
Map Features
- Pan & Zoom: Smooth navigation
- Drag markers: Reposition anytime
- Filter by type: Show only NPCs, only Items, etc.
- Entity labels: Names appear when zoomed in
- Persistent zoom: Remembers your zoom level per map
Chaos Graph
What Is It?
A visual representation of an entity's connections. Click the graph icon on any entity to see it.
Reading the Graph
- Center: Your selected entity (highlighted)
- Surrounding nodes: Connected entities
- Solid lines: Direct relationships
- Dashed lines: Inter-connections (how surrounding entities relate to each other)
Interaction
- Hover over a node: Highlights its connections
- Click a node: Navigate to that entity's chaos graph
- Filter chips: Show/hide entity types
- View/Edit buttons: Quick actions on hover
Why "Chaos"?
Because a well-developed campaign world looks beautifully chaotic! All those interconnected NPCs, locations, items, and factions create a web of relationships.
Use Cases
- Session Prep: See all connections before a session
- Improvisation: Quickly find related NPCs mid-game
- World Building: Discover gaps in your connections
- Player Questions: "Who knows about the artifact?" - visualize it!
Multiple Campaigns
Switch Worlds Instantly
Run multiple campaigns? No problem! DM Hero supports unlimited campaigns with instant switching.
How It Works
- Click your campaign name in the header
- See all your campaigns
- Click to switch - all entities update instantly
- Create new campaigns with the + button
Completely Separated
Each campaign has its own:
- NPCs, Locations, Items, Factions, Lore
- Players and Sessions
- Calendar settings
- Maps and markers
Perfect for running different game systems or parallel campaigns!
Image Gallery
Multiple Images Per Entity
NPCs can have more than one face! Upload multiple images to any entity:
- Different expressions (happy, angry, mysterious)
- Different ages (young adventurer → grizzled veteran)
- Different outfits (formal, combat, disguise)
- Action scenes and portraits
Gallery View
Click any image to open the full gallery:
- Swipe through all images
- Fullscreen mode
- Set primary image for cards
- Delete unwanted images
AI-Generated Collections
Use the AI image generator multiple times to build a collection of portraits. Keep the best ones!
Documents & Notes
Attach Text Documents
Every entity can have attached documents - perfect for:
- Detailed backstories
- Secret DM notes
- Handouts for players
- Historical records
- Letters and journals
Private Notes
Keep your DM secrets separate! Notes are hidden from the main description but always accessible to you.
Use Cases
| Entity | Document Ideas |
|---|---|
| NPC | Secret motivations, voice notes, stat block |
| Location | Room descriptions, trap details, treasure |
| Item | Full magical properties, curse details |
| Faction | Internal politics, secret members |
Audio Recordings
Session Audio
Record your sessions? Attach audio files to session entries:
- MP3, WAV, OGG supported
- Built-in audio player
- Multiple recordings per session
- Perfect for memorable moments
Use Cases
- Record important NPC dialogue
- Capture player reactions
- Store ambient music references
- Keep voice acting samples
Location Hierarchy
Nested Locations
Create hierarchical location structures:
The Kingdom of Valdris
├── Capital City Ironhold
│ ├── The Royal Quarter
│ │ ├── King's Palace
│ │ └── Noble Gardens
│ ├── Market District
│ │ ├── The Golden Goose (Tavern)
│ │ └── Blacksmith Row
│ └── The Undercity
└── Darkwood Forest
├── Elven Outpost
└── The Witch's Hut
Breadcrumb Navigation
When viewing a location, see the full path above:
Kingdom of Valdris → Capital City Ironhold → Market District → The Golden Goose
Click any parent to jump up the hierarchy!
Benefits
- Organize complex cities
- Track dungeon levels
- Manage regional territories
- Find related locations instantly
Bidirectional Relations
Automatic Linking
When you create a relationship, both sides update automatically:
- Add "Gandalf" as ally of "Frodo"
- Open "Frodo" → shows "Gandalf" as ally
- No duplicate work!
Relationship Types
Create any relationship you need:
- ally, enemy, friend, rival, family
- mentor, student, employer, servant
- loves, hates, fears, respects
- Or create your own!
Cross-Entity Relations
Link any entity type to any other:
- NPC → Location (lives at)
- NPC → Item (owns)
- NPC → Faction (member of)
- Item → Location (hidden at)
- Faction → Faction (allied with)
Faction Memberships
NPCs in Organizations
Track which NPCs belong to which factions:
- Open an NPC
- Go to Memberships tab
- Add faction membership
- Set their rank (Initiate, Member, Leader, etc.)
View From Faction
Open any faction to see all members listed with their ranks. Perfect for:
- Guild rosters
- Cult hierarchies
- Military units
- Noble houses
Reference Data
Custom Values
Don't like the default options? Create your own:
- Races: Add homebrew races
- Classes: Custom classes and professions
- Location Types: Your world's unique places
- Item Types: Special categories
- Faction Types: Organization styles
How to Access
- Go to Settings → Reference Data
- Select a category
- Add, edit, or remove options
- Available immediately in all dropdowns
Localized
Custom values support multiple languages - add German and English names!
Dark & Light Mode
Eye-Friendly Themes
Switch between dark mode and light mode:
- Dark Mode: Perfect for late-night sessions, easy on the eyes
- Light Mode: Great for printing, bright environments
How to Switch
Click the sun/moon icon in the header. Your preference is saved automatically.
Consistent Design
Both themes feature the signature gold accent colors for that fantasy feel.
Session Participants
Track Attendance
Every session records who played:
- Create or edit a session
- Select participating players
- View attendance history
Player Statistics
See at a glance:
- Sessions attended per player
- Last session played
- Characters used
Perfect for tracking group dynamics and rewarding consistent attendance!
Rich Markdown Editor
Supported Features
DM Hero descriptions support full GitHub-flavored Markdown:
Text Formatting
**Bold text**
*Italic text*
~~Strikethrough~~
`inline code`
Headers
# Heading 1
## Heading 2
### Heading 3
Lists
- Bullet point
- Another point
- Nested point
1. Numbered
2. List
3. Items
Tables
| Name | Race | Class |
|------|------|-------|
| Gandalf | Maiar | Wizard |
| Aragorn | Human | Ranger |
Code Blocks
```python
def roll_dice(sides):
return random.randint(1, sides)
```
Blockquotes
> "Not all those who wander are lost."
> — Gandalf
Live Preview
As you type, see your formatted text instantly!
In-Game Calendar
The Problem
"Wait, how many days have passed since we left Waterdeep?"
The Solution
DM Hero tracks your campaign's internal timeline.
Setting Up
- Go to Settings → Calendar
- Define your calendar:
- Month names
- Days per month
- Starting date
Using the Calendar
When creating Sessions, set the in-game date. DM Hero tracks:
- How many days have passed
- What happened on which day
- Time between events
Session Timeline
View sessions on a timeline showing:
- Real-world dates (when you played)
- In-game dates (when it happened in the story)
- Duration of in-game time
AI Integration (Optional)
Requirements
- OpenAI API key (get one at openai.com)
- Enter it in Settings → AI
Name Generation
Stuck on a name? Click the magic wand icon:
- NPCs: Generate names filtered by race
- Locations: Generate names by type (city, tavern, etc.)
- Items: Generate fantasy item names
- Factions: Generate organization names
Image Generation
Create portraits and scenes with DALL-E:
- Open an entity
- Click Generate Image
- Optionally add a custom prompt
- Wait for magic! ✨
Tips for better images:
- Be specific: "elderly dwarven blacksmith with a braided beard"
- Include setting: "in a dimly lit forge"
- Mention style: "fantasy art style, detailed"
Privacy Note
When using AI features:
- Your prompt is sent to OpenAI
- Generated content is stored locally
- No other data is shared
Data & Privacy
Local-First
All your data stays on your machine:
- Desktop App:
%APPDATA%/dm-hero/ - Docker: In your mounted volume
- No cloud sync: Your data never leaves your computer
Database
DM Hero uses SQLite - a robust, battle-tested database:
- Single file:
dm-hero.db - Easy to backup: Just copy the file
- No server needed
- Works offline
Soft Delete
When you delete something, it's not truly gone:
- Marked as deleted (recoverable)
- Hidden from view
- Can be restored if needed
Export/Backup
Regular backups recommended:
# Find your database
# Windows: %APPDATA%/dm-hero/data/dm-hero.db
# Docker: your-volume/dm-hero.db
# Copy to backup location
cp dm-hero.db dm-hero-backup-$(date +%Y%m%d).db
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
/ | Open global search |
Esc | Close dialog/modal |
Ctrl+S | Save current entity |
? | Show keyboard shortcuts |
Tips & Tricks
1. Use Templates
Create a "Template NPC" with common fields filled in. Copy it when creating new NPCs.
2. Consistent Naming
Use consistent naming conventions:
- Locations: "The Name" or just "Name"
- NPCs: "Firstname Lastname" or "Nickname"
- Items: "The Adjective Item" for legendary items
3. Tag with Relations
Instead of tagging, use relations:
- Create a faction "Quest Givers"
- Add all quest-giving NPCs as members
- Now you can find them all easily!
4. Session Prep Workflow
- Check the Chaos Graph for key NPCs
- Review related locations
- Note important items
- Prepare faction movements
5. Post-Session Routine
- Create a Session entry
- Update NPC statuses (dead? moved?)
- Update item locations (who has what now?)
- Add new NPCs/locations encountered
Getting Help
- GitHub Issues: Report bugs or request features
- Documentation: You're reading it!
- Community: Share your tips with other DMs
Happy DMing! 🎲✨
