ReadMe is a custom Power BI visual for displaying familiar, GitHub-styled markdown content. Perfect for creating documentation dashboards, formatted release notes, and searchable data dictionaries in your Power BI reports.
- Current Release
- Table of Contents
- Getting Started
- Supported Markdown Features
- Formatting Options
- Development
- Contributing
- Changelog
- Support
- License
While there are many ways to import your markdown, the sections below outlines best practices to import your raw markdown into PowerBi.
Option 1: Connect Power BI to Private GitHub README
This guide outlines the steps to securely connect Power BI to a README.md file hosted in a private GitHub repository.
- In Power BI Desktop, navigate to Get Data > Blank Query. This will open the Power Query Editor.
- With the new query selected, click on Advanced Editor from the ribbon.
Copy and paste the following M code into the Advanced Editor window.
let
Source = Web.Contents(
"https://api.github.com/repos/USER/REPO/contents/PATH-TO/README.md",
[
Headers=[Accept="application/vnd.github.v3.raw"]
]
),
Content = Text.FromBinary(Source),
Table = #table({"Content"}, {{Content}})
in
Table
Note: Remember to replace
USER,REPO, andPATH/TO/README.mdwith your specific GitHub username, repository name, and the full path to your README file.
After you save the code, Power BI will prompt you to enter credentials.
- Click the Edit Credentials button.
- In the dialog box, select the Basic authentication type.
- User name: Enter your GitHub username.
- Password: Paste your GitHub Personal Access Token (PAT).
- Select which level to apply these settings to: Ensure this is set to the base URL,
https://api.github.com/. - Click Connect.
If you need a new Personal Access Token (PAT), it's best to create a fine-grained one with limited scope.
- Navigate to your GitHub Settings > Developer settings.
- Go to Personal access tokens > Fine-grained tokens.
- Click Generate new token.
- Repository access: Select Only select repositories and choose the repository you need to access.
- Permissions: Click on Repository permissions and find the Contents permission. Set it to Read-only. This is the only permission needed.
- Click Generate token, and copy the token immediately.
Error: "A web API key can only be specified when a web API key name is provided." or other credential issues.
This usually means Power BI has cached old or incorrect credentials.
- In Power BI, go to File > Options and settings > Data source settings.
- Find any entries for
https://api.github.comin the list. - Select the entry and click Clear Permissions / Delete.
- Go back to the Power Query Editor and Refresh Preview. You will be prompted to enter the credentials again from a clean slate.
Option 2: Copy/Paste Markdown Into Power BI
Not interested in using a repository? I get it. This guide shows you how to create a simple data source by copying and pasting your markdown content directly into Power BI.
Create a measure that returns markdown text and drag it to the Text Measure input.
Markdown_Measure = "
# Sales Dashboard
## Executive Summary
Our Q4 performance shows **strong growth** across all regions.
### Key Highlights
1. Revenue increased by 15%
2. Customer retention at 95%
3. New market expansion successful
"
Note: Make sure to escape any double quotes within your markdown by doubling them (e.g., ""quoted text"").
- In Power BI Desktop, navigate to Get Data > Blank Query. This will open the Power Query Editor.
- With the new query selected, click on Advanced Editor from the ribbon.
Copy and paste the following M code into the Advanced Editor window.
let
Source = #table({"Content"}, {{"# Sales Dashboard
## Executive Summary
Our Q4 performance shows **strong growth** across all regions.
### Key Highlights
1. Revenue increased by 15%
2. Customer retention at 95%
3. New market expansion successful
> **Note:** All figures are preliminary and subject to final audit.
| Metric | Q3 | Q4 | Change |
|--------|----|----|--------|
| Revenue | $1.2M | $1.4M | +17% |
| Customers | 1,250 | 1,380 | +10% |
For more details, see our documentation."}})
in
Source
Note: Replace the markdown content between the double quotes with your own markdown text. Again, make sure to escape any double quotes within your markdown by doubling them (e.g.,
""quoted text"").
- Click Done to save the query.
- The query will create a table with a single row containing your markdown content.
- Close the Power Query Editor and return to your report.
Error: "Expression.Error: The name 'Content' wasn't recognized."
This usually means there's a syntax error in your M code. Check that:
- All quotes are properly paired
- Double quotes within your markdown are escaped. Use
""instead of" - The table structure is correct:
#table({"Content"}, {{"your markdown"}})
Highlight important information or quotes.
> This is a blockquote
>
> It can span multiple lines
>
> > And can be nestedExample Output:
This is a blockquote
It can span multiple lines
And can be nested
Display code with syntax highlighting.
```js
function example() {
return "Hello World";
}
```Output:
function example() { return "Hello World"; }
Create collapsible content sections.
<details>
<summary><strong>Click to expand</strong></summary>
### Hidden Content
This content is hidden by default and can be expanded by clicking the summary.
</details>Output:
Click to expand
Hidden Content
This content is hidden by default and can be expanded by clicking the summary.
Add reference notes to your content.
This is a sentence with a footnote[^1].
[^1]: This is the footnote content.Output:
This is a sentence with a footnote1.
Create hierarchical document structure with headers.
# Main Title (H1)
## Section Title (H2)
### Subsection (H3)
#### Sub-subsection (H4)
##### Small Header (H5)
###### Tiny Header (H6)Output:
Embed images in your markdown content.
Output:
Create internal navigation links in your documentation.
## Table of Contents
* [Getting Started](#getting-started)
## Getting Started
This section explains how to begin...
Note: The link #getting-started matches the header ## Getting Started (lowercase, spaces become hyphens).
Output:
This section explains how to begin...
Create ordered and unordered lists with proper nesting.
- Unordered list item
- Another item
- Nested item
1. Ordered list item
2. Second item
1. Nested numbered itemOutput:
- Unordered list item
- Another item
- Nested item
- Ordered list item
- Second item
- Nested numbered item
Create structured data tables with alignment.
| Header 1 | Header 2 | Header 3 |
|----------|:--------:|---------:|
| Left | Center | Right |
| Data | Data | Data |
| More | Content | Here |Output:
Header 1 Header 2 Header 3 Left Center Right Data Data Data More Content Here
Create interactive checkboxes.
- [x] Completed task
- [ ] Incomplete taskOutput:
- Completed task
- Incomplete task
Emphasize text with bold, italic, and other formatting.
**Bold text**
*italic text*
***Bold and italic***
~~Strikethrough text~~
<u>Underlined text</u>Output:
Bold text
italic text
Bold and italic
Strikethrough text
Underlined text
Access these settings in Power BI's formatting pane:
| Setting | Description | Default |
|---|---|---|
| Font Size | Base font size, scales titles accordingly | 16px |
| Padding | Internal spacing | 8px |
| Background Color | Visual background color | Transparent |
| Font Family | Choose from 8 font options | System Default |
- Node.js (v18+)
- Power BI Visual Tools:
npm install -g powerbi-visuals-tools
- marked (^15.0.12) - Markdown parsing
- github-markdown-css (^5.8.1) - GitHub-style formatting
- dompurify (^3.2.6) - XSS protection
- d3 (7.9.0) - Data visualization utilities
- powerbi-visuals-api (~5.11.0) - Power BI integration
- powerbi-visuals-utils-formattingmodel (6.1.1) - Formatting utilities
- powerbi-visuals-utils-interactivityutils (^6.0.4) - Interaction utilities
- powerbi-visuals-utils-tooltiputils (^6.0.4) - Tooltip utilities
# Clone the repository
git clone https://github.com/MDeanLindsay/PBI-README.git
cd PBI-README/README
# Install dependencies
npm install# Start development server
npm run start
# or
pbiviz start# Create .pbiviz package
npm run package
# or
pbiviz packageREADME/
├── src/
│ ├── visual.ts # Main visual logic
│ └── settings.ts # Formatting settings
├── style/
│ └── visual.less # CSS styling
├── capabilities.json # Visual capabilities
├── pbiviz.json # Visual metadata
├── package.json # Dependencies
├── tsconfig.json # TypeScript configuration
└── eslint.config.mjs # ESLint configuration
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit changes:
git commit -m 'Add feature' - Push to branch:
git push origin feature/new-feature - Open a pull request
- Added support for measure based markdown
- Added landing page for supported features
- Added styling for summary/detail drop downs
- Initial release
For questions, issues, or feature requests:
- Check existing GitHub issues
- Create a new issue with detailed description
- Include markdown sample and expected vs actual behavior
MIT License
This project includes:
github-markdown-css(MIT) - Copyright (c) Sindre Sorhusmarked(MIT) - Copyright (c) 2011-2018, Christopher Jeffreydompurify(Apache-2.0 OR MPL-2.0) - Copyright (c) Cure53
Made for those who hate native Power BI text tools.
Footnotes
-
This is the footnote content. ↩