Generate comprehensive, bidirectional documentation from Power BI PBIP/TMDL semantic models — instantly, in your browser.
No PBIP file? Try the live demo with Contoso sample data — no setup required, runs entirely in your browser.
PBIP (Power BI Project) is a developer-friendly file format introduced in Power BI Desktop that stores your semantic model and reports as plain text files instead of a binary .pbix. It integrates with Git and CI/CD pipelines.
TMDL (Tabular Model Definition Language) is the text-based format within PBIP that describes every table, column, measure, relationship, and role in your semantic model — one .tmdl file per object, readable and diffable in any editor.
If you've enabled "Save as Power BI Project" in Power BI Desktop (Preview → Developer mode), your workspace folder already contains PBIP files ready for this tool.
You write DAX measures and want to know:
- What tables and columns does each measure reference?
- Where (which pages, which visuals) is each measure displayed?
- Which measures depend on other measures?
What you get: Measure Catalog with full DAX + referenced columns/measures, "Used in Visuals" grouped by page, and measure dependency chains.
You own the source systems and want to know:
- Which physical tables (e.g.
dbo.FactSales) were loaded into the model? - Were columns renamed between source and model?
- Which DAX measures and report visuals ultimately consume each source table or column?
What you get: Expanded Data Sources view showing physical→model table mapping, column renames detected from Power Query, and a "Where Used" catalog per model column.
You need the big picture:
- How large is this model? How many measures, tables, visuals, data sources?
- What are the most-used measures and source tables?
- Are there any dynamic features (field parameters, calculation groups) that behave differently than PBIR JSON suggests?
What you get: Executive Summary at the top of every export with model stats, top measures by visual coverage, and top source tables by consumption.
- Open the tool: jonathanjihwankim.github.io/pbip-documenter
- Select your persona (Power BI Developer / Data Engineer / Product Owner) — the app highlights the most relevant section after parsing
- Click Open Project Folder and select your PBIP project folder
- The tool auto-discovers
.SemanticModeland.Reportfolders - Browse the parsed model in the sidebar — tables, measures, relationships, data sources, visuals, and more
- Download documentation:
- Full Report (.html) — self-contained with DAX highlighting, collapsible sections, column usage, data source drill-down
- Full Report (.md) — clean Markdown with tables, ASCII layout grids, ideal for Git wikis
- JSON — machine-readable with
whereUsedblocks per column andconsumersblocks per data source
| Manual | PBIP Documenter | |
|---|---|---|
| 10 tables, 11 measures, 15 visuals | ~45 minutes | < 10 seconds |
| Source → model column lineage | Spreadsheet by hand | Auto-detected from M queries |
| Visual lineage tracing | Not feasible | Built-in |
| Relationship diagrams | Draw by hand | Auto-generated SVG |
| Keeps up with model changes | Start over | Re-run instantly |
| Privacy | Varies | 100% client-side |
Point the tool at your PBIP project folder and get professional, bidirectional documentation:
- Measure Catalog — DAX expressions with syntax highlighting, display folders, format strings, referenced columns and measures, "Used in Visuals" by page
- Table Inventory — columns with data types, descriptions, sort-by, summarize-by, and hidden status
- Relationships — from/to columns, cardinality, cross-filter direction, active/inactive
- Roles — permission levels and RLS filter expressions per table
- Data Sources — expanded view with physical table names (schema + table from Navigation steps), Power Query column renames, computed columns, and full consumer catalog (measures + visuals + pages)
- Column Usage (Where Used) — per table, every visible column shows which measures reference it and which visuals display it
- Source Trace Lineage — click a physical source table to open a forward lineage diagram: source → model table → measures → visuals
- Executive Summary — model stats at a glance: tables, measures, relationships, pages, visuals, data sources, dynamic features, broken references
- Top Measures — ranked by number of visuals they appear in
- Top Source Tables — ranked by downstream visual coverage
- Dynamic Features — field parameters and calculation groups that PBIR JSON doesn't fully represent
- Relationship Diagram — SVG with pan, zoom, and zoom-to-fit; star-schema layout
- Visual Lineage — full model, visual trace, measure impact, column impact, and source trace modes
- Visual Usage Diagram — field-to-visual mapping
- HTML — fully self-contained, embeds CSS + SVG, DAX syntax highlighting, collapsible sections, table of contents
- Markdown — clean document with fenced DAX blocks, ASCII page layout grids, and structured tables
- JSON — machine-readable with
whereUsedandconsumersblocks for downstream tooling
Your files never leave your browser. All parsing happens client-side — nothing is uploaded anywhere.
Requires the File System Access API:
| Browser | Support |
|---|---|
| Chrome 86+ | ✅ Supported |
| Edge 86+ | ✅ Supported |
| Opera 72+ | ✅ Supported |
| Firefox | ❌ Not supported |
| Safari | ❌ Not supported |
The tool expects a standard PBIP project layout:
Show folder structure
MyProject/
├── MyProject.SemanticModel/
│ └── definition/
│ ├── database.tmdl
│ ├── model.tmdl
│ ├── relationships.tmdl
│ ├── expressions.tmdl (optional — shared M expressions / parameters)
│ ├── tables/
│ │ ├── Sales.tmdl
│ │ ├── Product.tmdl
│ │ └── ...
│ └── roles/ (optional)
│ └── Reader.tmdl
└── MyProject.Report/ (optional — enables visual analysis)
└── definition/
└── pages/
└── Page1/
├── page.json
└── visuals/
└── visual1/
└── visual.json
| Tool | Description |
|---|---|
| PBIR Visual Manager | Manage isHiddenInViewMode and visual properties in PBIR reports |
| PBIP Impact Analyzer | Analyze what breaks when you change a measure, column, or table |
| PBIP Documenter | Generate bidirectional documentation from TMDL (you are here) |
This tool is free forever — built and maintained solo by Jihwan Kim (Microsoft MVP). If PBIP Documenter saves you even 30 minutes of documentation work, please consider sponsoring.
| Tier | Amount | Recognition |
|---|---|---|
| Gold | 50+ EUR/mo | Logo + link on README and app footer |
| Silver | 10+ EUR/mo | Name + link on README + shoutout in release notes |
| Bronze | Monthly supporter | Name + link on README |
| Coffee | One-time | Name listed in Hall of Sponsors |
| Name | Tier |
|---|---|
| Alessandro Tiberti Bertin | Bronze |
MIT — Jihwan Kim
Built for: Power BI · Microsoft Fabric · PBIP · PBIR · TMDL · Semantic Models · DAX · Data Governance · CI/CD · Developer Tools