Power BI Project Analyzer
Inspect a Power BI file or project. See what the report uses, trace what depends on what, and find structural problems in the model and the report.
Or drop a .pbix, .pbit or .zip file here
Up to 150 MB for a project zip, 1 GB for a .pbix or .pbit, 20,000 files. If your browser says it will upload a file or folder, it still stays on your device.What it reads
- A .pbix or .pbit file: the report, and for a .pbit also the model
- A .zip of a Power BI Project (.pbip) folder, or the project folder itself
- Semantic models saved as TMDL or model.bim
- Reports saved in the PBIR format
- A semantic model, a report, or both. Field checks need both
Not supported
- Some .pbix models: multithreaded XPress9 and other DataModel variants are not read (save a .pbit or a .pbip instead)
- Reports in the PBIR-Legacy format (report.json)
- Whether DAX or M is correct, or how fast it runs
- Dependencies that need context to resolve (listed as unresolved)
What each format can do
These are the usual results. After an analysis, the Scope and limits tab shows what was actually possible for that file, which can differ.
| Format | Report | Model | DAX | M code | Relationship checks | Report-field checks | Dependencies and impact | Documentation and export |
|---|---|---|---|---|---|---|---|---|
| .pbix | Supported | Supported when the DataModel is a readable variant | Supported with the model | Query names only | Supported with the model | Supported with the model | Supported with the model (fields are listed without it) | Supported |
| .pbit | Supported | Supported | Supported | Query names only | Supported | Supported | Supported | Supported |
| .pbip folder or zip | Supported (PBIR) | Supported (TMDL, model.bim) | Supported | Not analyzed | Supported | Supported | Supported | Supported |
| TMDL folder or model.bim on its own | Not applicable | Needs definition.pbism beside it | Needs definition.pbism | Not analyzed | Needs definition.pbism | Not applicable | Needs definition.pbism | Needs definition.pbism |
How a .pbix model is read: Power BI stores it in a compressed DataModel part. The analyzer decodes it in your browser with small WebAssembly modules and reads the model's metadata with SQLite, all inside background workers on your device, and only when a .pbix with a model is opened. Whether a given file can be read depends on its structure and on the extraction path it takes. Variants it does not read, such as multithreaded XPress9 compression or a damaged part, are reported with the reason and the report is still analyzed. Testing on a genuine .pbix has been limited to one file that held no measures or visuals. A .pbit template keeps the model as readable JSON, but it has been tested on files written from the documented layout, not on a template saved by Power BI Desktop, so that compatibility is unverified. Size and compression-ratio limits apply: a part that is too large or compresses suspiciously well is refused with the reason. Older .pbix files that store the report as Report/Document are recognized but not read.
How to prepare your project
- In Power BI Desktop choose File, Save as, and pick the Power BI Project (.pbip) type.
- Zip the whole project folder, so that the
.SemanticModeland.Reportfolders are inside the archive. Or select the folder directly. - Or choose a
.pbixor.pbitfile as it is. If the model of a .pbix cannot be read, save a .pbit (File, Export, Power BI template) or a project and analyze that. - Choose the zip or the folder above. To see how a report looks first, load the sample project, which includes a few deliberate mistakes.
What it checks
Every finding is classified as an error (a confirmed structural problem), a warning (worth a look, may be intentional), info (an observation) or unsupported (found but not analyzed). Each one shows its rule, the files it comes from and a suggested next step, and is marked Verified (the files prove it), Potential issue (a person should confirm it) or Not run (part of the input could not be analyzed).
- Project structure. A .pbip file that points to a missing report, a report that references a model that is not in the archive, folders without a definition.
- Semantic model. Duplicate table, column and measure names, relationships that refer to missing tables or columns, related columns of different data types, duplicate or competing active relationships, missing sort-by and hierarchy columns, and measures with no expression.
- Report. Pages listed in pages.json that do not exist, and fields used by visuals and filters that are not in the linked model.
It reads file structure and metadata only. It does not run or validate DAX or Power Query M, check performance, or read data. A result with no findings means the checks above found nothing, not that the project is correct.
Dependencies, impact and documentation
After an analysis, the Dependencies tab lets you pick a table, column, measure, visual or other object and see what it refers to, what refers to it, and everything that would be affected if it changed, with the path that connects them. The Documentation tab turns the same data into a project reference you can download as Markdown, or as CSV inventory and dependency lists.
- Relationships. Joins between tables and their columns, with active state and cardinality. A relationship is shown as structure only. It is never treated as proof that a measure or visual depends on another table.
- Measures and columns. References in DAX are found by scanning the expression, skipping strings, comments and variables. A reference is linked only when it points to exactly one table, column or measure. Anything else is listed as unresolved with the reason.
- Reports. The fields that visuals, pages and report filters name are linked to the model. This is what the files configure, not what a visual shows at run time.
- Status. Every link is Verified, Partial, Unresolved or Not analyzed. A missing link never proves that no dependency exists.
Frequently asked questions
Is my project uploaded anywhere?
No. The archive or folder is read and analyzed inside your browser tab. Nothing is sent to BI Dev Tools or anyone else. The JSON export is created on your device and contains inventory and findings only, never your files, DAX or M code. Names and descriptions are copied as the author wrote them (see What is in the documentation exports?).
Can I analyze a .pbix file?
Yes. The report is read: pages, visuals and the fields they use. The semantic model inside a .pbix is decoded and read in your browser, so tables, columns, measures, relationships and roles are available and the report's fields are checked against them. Support depends on the file: model variants the analyzer does not read, such as multithreaded XPress9, are reported with the reason and the report is still analyzed. Genuine .pbix testing has been limited, so treat unexpected results with care. You can also export a .pbit template (File, Export, Power BI template) or save a Power BI Project (.pbip) in Power BI Desktop. Nothing is uploaded in any case.
Can I analyze a .pbit template?
Yes. A template keeps the model as readable JSON, so the model checks, dependencies and documentation run as they do for a project. This has been built from the documented layout and has not yet been tested on a template saved by Power BI Desktop, so treat unexpected results with care and report them. A template holds no data, so there is nothing to refresh or read.
Which report formats are supported?
Reports saved in the PBIR format, which is a definition folder of small JSON files. Reports in the older PBIR-Legacy format (a single report.json) are detected, but their contents are not read because Microsoft does not document that format. Saving the project again in a current Power BI Desktop converts it.
Why does it not check my DAX?
Validating DAX needs the real engine. This tool reads the project files only, so it can tell you a measure is empty or duplicated, but not whether its formula is right. To tidy the formatting of a measure use the DAX Formatter.
How large a project can it handle?
Archives up to 150 MB with up to 20,000 files. Only project files (JSON, TMDL, model.bim and similar) are read, up to 40 MB each. Images, cached data and other binary files are listed but never opened.
What does "partly read" or "not run" mean?
If a file could not be opened, or uses TMDL or JSON that this analyzer does not understand, it is marked as partly read. Checks that need the whole model are then skipped instead of guessed, so a table or field is never reported missing just because it was in a file that was not understood. The Scope and limits tab lists every check as ran, ran in part or not run, with the reason, and the JSON export says the same.
What does lineage mean here, and what can it not tell me?
Lineage is the set of references written in the project files: which measure names another measure or column, which visual lists which field, which columns a relationship joins. It is not the result of running the model. It can not follow a reference that depends on context, such as a column an expression creates itself, calls to user-defined DAX functions, role filters, Power Query M, field parameters or visual fields written by alias. Those are left unresolved or not analyzed instead of being guessed, so a lineage view can be incomplete but should not contain a link that the files do not support.
What is in the documentation exports?
Names, descriptions, display folders, counts, relationships, roles, dependency links, unresolved references, findings and limitations, as they appear on the page. Names, descriptions and display folders are copied exactly as the model's author wrote them, so they can contain sensitive text if the author put it there. Check an export before you share it. Annotations are not exported, except three markers that Power BI itself writes (for example the result type of a table), and only when the value is a short plain word. Every other annotation is counted, and its name and value are left out. DAX and M code, connection strings, credentials and role members are never included. The exports are created on your device. In the CSV files a value that starts with = + - or @ gets a leading apostrophe so a spreadsheet does not run it as a formula.
Why was my report not checked against the model?
Field checks need the report and its semantic model in the same archive, linked by a relative path in definition.pbir. If the report connects to a model in a workspace, or the model folder is missing, the fields cannot be compared and the report says so.
Related tools and resources
Explore the DAX topic page and the Power BI DAX Measures Library, or tidy measures with the DAX Formatter.