Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Chartdown

NossimonovNossimonov590 downloads

Render Chartdown map blocks (battlemaps, hex charts, region maps) as SVG, right in your notes.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates20

Write TTRPG maps as plain text in your notes; see them as maps. Chartdown is a Markdown-inspired language for battlemaps, hex charts, and region maps — this plugin renders every ```chartdown fence in place, entirely on your machine.

```chartdown
# Ambush at Redford Crossing
map: battlemap
grid: square 20x15
scale: 5ft
[terrain]
river redford "The Redford" : path A9 F9 K9 P10 T10 width=2
road tollroad "Old Toll Road" : path K1 K15
ford : on redford on tollroad difficult
[tokens]
goblins g1 g2 : C12 E13
ogre "Gruk" : G9 size=2 hidden
party start : J14..L15
```

What you get

  • Maps in your prep notes — versionable, diffable, no graphical editor. Edit the fence, reopen the note, the map follows.
  • GM/player split, fail-closed — hidden tokens, [gm] notes, and triggers render only in GM view. Each map has a toolbar toggle; the settings tab sets the default.
  • Export SVG — one click writes the map (in the current view) next to the note and reveals it in your system file explorer.
  • Export UVTT — one .dd2vtt per map level, with walls, doors, windows, and lights mapped for VTT import (Foundry, Roll20 via importers, Arkenforge, …) and the map image rasterized in-app. Note: .dd2vtt files are hidden in Obsidian's own file explorer (unknown extension) — they're real files in your vault folder, and the export reveals them.
  • .cd files open to their map — keep a map as its own file, not only as a fence inside a note. Opening one shows the rendered map with the same toolbar; a Source button swaps to the text, and edits save in place. Exports take the file's own name, so sunless-hollow.cd writes sunless-hollow.svg beside it. While this plugin is enabled it claims the .cd extension for the vault; disable it and those files go back to being unopenable, since nothing else knows what they are.
  • Multi-level battlemaps, themes, light and sight — the full Chartdown language.

Try the language first in the playground — no install, runs in your browser.

Long source? Fold it with a callout

A detailed map is a long fence, and a long fence disrupts the read. Wrap it in a collapsed callout — the - after the type is what starts it folded:

> [!note]- Map source (Chartdown)
> ```chartdown
> # Garl's Estate
> map: battlemap
> grid: square 30x22
> …
> ```

The map renders when you expand it, toolbar and all.

Not <details>. You will see that idiom recommended for GitHub, where it folds properly — but Obsidian does not parse a fence inside a raw HTML block, so the map never renders and you get the source as text (Chartdown#225). A callout is the one that works in both, which matters if the same file is read here and on GitHub.

Co-write your maps with an AI assistant

Chartdown is plain text, which means any LLM you already use can write it with you: describe the scene in prose ("the estate has a treasury, a ballroom, slave cells below…"), get a ```chartdown fence back, paste it in your note, and it renders. The plugin ships no AI, no API keys, and makes no network calls — you bring the assistant; you just have to teach it the language once per conversation:

  • Chat assistants (ChatGPT, Claude, …): give it the single-file language reference — https://nossimonov.github.io/Chartdown/llms-full.txt — by pasting it into the chat (or just the link, for assistants that browse). Then describe your scene, or paste an existing map and describe the changes; ask it to reply with one ```chartdown block.

  • Tool-using agents (Claude Code and other MCP clients): the @chartdown/mcp server hands the agent the whole loop — the spec, fail-loud validation, and PNG rendering, so it can check its own work before you see it:

    claude mcp add chartdown -- npx -y @chartdown/mcp
    

Each map's toolbar closes the round trip: Copy Chartdown puts the map's source on your clipboard, opening with a comment that points at the language reference — so wherever you paste it, an LLM chat included, the reader knows what it's looking at and where the spec lives. Paste Chartdown brings the reply back: it accepts a bare document or a ```chartdown fence straight from the chat, validates it, and only then replaces the map in your note — an invalid paste changes nothing and tells you the offending line. (The paste button grays out while the clipboard is empty; the check looks only at clipboard format metadata, never the content — your clipboard is read exactly once, on an explicit paste click.)

Manual installation

Until the plugin is in the community store: download main.js, manifest.json, and styles.css from the latest release, place them in <your vault>/.obsidian/plugins/chartdown/, then enable Chartdown under Settings → Community plugins. (Or point BRAT at Nossimonov/obsidian-chartdown.)

Development

Development happens in the Chartdown monorepo (packages/obsidian), which is where the tests and issue tracker live — please file issues and PRs there. This repository carries the store-facing artifact: src/ and styles.css are synced verbatim from the monorepo by the release workflow (every release commit pins the exact source it was built from), and release assets carry build-provenance attestations. The plugin imports @chartdown/core and @chartdown/render-svg, published from the same monorepo.

License

MIT. The Chartdown language specification is CC-BY-4.0.

HealthExcellent
ReviewPassed
About
Write TTRPG maps as plain text in Markdown using Chartdown syntax and render chartdown fences in-place, entirely on your machine. Export SVG or .dd2vtt for VTT import; create multi-level battlemaps with lighting, sight, themes, and GM-only hidden tokens.
TTRPGExport
Details
Current version
0.6.0
Last updated
3 weeks ago
Created
2 months ago
Updates
20 releases
Downloads
590
Compatible with
Obsidian 1.5.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
NossimonovNossimonovnossimonov
GitHubnossimonov
  1. Community
  2. Plugins
  3. TTRPG
  4. Chartdown

Related plugins

Hex Cartographer

Visual Fantasy Hex Map Editor for GMs, RPG Authors & Worldbuilders

Charted Roots

Family tree visualization with GEDCOM/Gramps import and Canvas/PDF/Markdown export. Charts, maps, timelines, citations, fictional calendars. For genealogists, worldbuilders, and TTRPG campaigns.

Slides Extended

Create markdown-based reveal.js presentations. Fork of Advanced Slides.

TTRPG Tools - Maps

A toolbox for interactive fantasy maps.

Fantasy Statblocks

Create, manage and view a Fantasy Bestiary with Dungeons and Dragons style statblocks.

Pandoc Plugin

Commands to export to Pandoc-supported formats like DOCX, ePub and PDF.

Voice

Listen to your notes as natural speech with text-to-speech (TTS). Read notes aloud, play them like an audiobook in the voice player, download MP3 audio and listen offline hands-free on mobile.

Yanki

Sync flashcards from a folder in your vault to Anki. Pure Markdown syntax. No fuss.

Wechat Converter

将 Markdown 转换为微信公众号排版,并支持一键发送到微信公众号(支持自定义 CSS和公众号贴图)、飞书、小红书、知乎、微博、CSDN等20+平台。

Mermaid View

Handle Mermaid files as first-class citizens, rendering them fullscreen when opened.