The short answer
Power BI gives you three kinds of embed, and the right one depends on who should see the report. Publish to web makes an iframe anyone can open without signing in, with nothing to pay per viewer, but Microsoft warns that anyone can then reach the data in the report's model: it is for public data only.
Secure embed and the SharePoint Online web part keep the report private: viewers sign in, and each needs Power BI Pro (USD 14 a user a month, paid yearly) or Premium Per User (USD 24), unless the content sits on a Fabric F64 or larger capacity. Embed for your customers, usually called Power BI Embedded, shows reports to people without a Power BI account, but production needs a capacity running all month: from USD 262.80 a month for a Fabric F2, or USD 735.91 for an A1, pay-as-you-go in East US, on Microsoft's pricing pages read on 22 October 2026.
For internal reporting, a Power BI report behind a sign-in is usually the right tool. For a public page that has to load fast, carry your brand, work on phones, be accessible and be readable as text, a chart built into the page often does the job better and costs less to keep online.
Every way to put a Power BI report on a website, compared
| Method | Who can see it | Sign-in | What you pay Microsoft | Security | Best for |
|---|---|---|---|---|---|
| Publish to web | Anyone with the link or the page | None | A Power BI license for the author; nothing per viewer | Public: no row-level security, and anyone can reach the model's data | Public data on a blog or public site |
| Secure embed (Website or portal) | People you give access in Power BI | Microsoft account, in each new browser window | Pro or Premium Per User for every viewer, unless the content is on F64 or larger, or Premium | Item permissions and row-level security apply | Intranets and internal portals |
| SharePoint Online web part | People with access to the page and the report | Microsoft 365, single sign-on | Pro or Premium Per User to embed; viewers as in secure embed | Item permissions and row-level security apply | Teams already working in SharePoint |
| Embed for your organization (user owns data) | Your organization's users, inside your own app | Microsoft Entra ID | Pro or Premium Per User for every user, or F64 or larger | Power BI permissions | Internal apps your developers build |
| Embed for your customers (app owns data) | Whoever your app lets in | Your app's own login, never Power BI's | A capacity: F2 from USD 262.80 a month, A1 USD 735.91, plus development | Your app controls access; row-level security available | Customer portals, SaaS products, public pages with a budget |
Publish to web: public, free to view, no sign-in
Publish to web turns a report into a link and an iframe you paste into a page. Viewers don't need to be Power BI users and don't sign in. Microsoft's prerequisites:
- A Power BI license to publish from My workspace, and Pro or Premium Per User to publish from any other workspace.
- Edit permission on the semantic model and reshare permission on the report. It isn't available for reports shared with you.
- Your Power BI administrator has to enable the Publish to web tenant setting.
In the report, choose File > Embed report > Publish to web (public), confirm Microsoft's warning, and copy the link or the HTML. You can set the size, the default page and a placeholder image, which Microsoft says makes the web page load faster. Each report gets one embed code.
What Publish to web can't publish
Microsoft lists the reports it doesn't support. The ones that most often stop a website project:
- Reports that use row-level security.
- DirectQuery and Live Connection sources, including Analysis Services. Import or composite mode works.
- Shared or certified semantic models, and models stored in a different workspace from the report.
- R and Python visuals, paginated reports, mobile layout views and multiple-language reports.
- Exporting data from the published visuals.
Refresh, traffic and revoking a code
Changes to the report show up in the embed on their own, but Microsoft caches the data for one hour and doesn't recommend Publish to web for data that has to refresh often. If a report gets too many queries in a short time, viewers can't open it until the heavy usage passes. You manage codes in the workspace's Settings > Manage embed codes, and deleting a code disables every link and iframe that uses it. The person who created the code has to keep access to the report, with the license its workspace requires, or the embed stops working.
The security catch with Publish to web
Microsoft's warning on the Publish to web page is blunt. Anyone on the internet can view the report, with no authentication, including detail-level data the report aggregates, and "anyone can access the underlying data in your model" even when the report doesn't display it. In practice:
- Publish only data you'd post as a spreadsheet. If the model holds customer rows, salaries or anything confidential, hiding a column from the visuals doesn't protect it.
- Row-level security can't help. Reports that use it aren't supported.
- Expect the link to travel. Microsoft says viewers can easily share the report on social media.
- There is no password option. Viewing requires no authentication. If people must sign in, use one of the methods below.
- URL filters aren't security either. Microsoft's secure embed page notes that viewers can change or remove URL parameters.
- Review the codes. Microsoft's tenant settings guide tells admins to review embed codes regularly and remove any with private or confidential content.
Why Publish to web is missing or greyed out
If you can't find the option, Microsoft's documentation points to these causes:
- The tenant setting is off, or you aren't in an allowed group. Then the option isn't visible. An admin turns it on in the admin portal under Tenant settings > Export and sharing settings > Publish to web, for the whole organization or for specific security groups.
- New codes need approval. Admins can choose "Allow only existing embed codes", and then you have to ask them to allow yours.
- The report isn't yours to publish. Reports shared with you directly or through an app, and workspaces where you can't edit, don't qualify.
- Private links are on. When admins block public internet access with private links, Publish to web is greyed out for the whole tenant.
- The content is on Power BI Embedded capacity. Microsoft's Power BI Embedded FAQ says that content can't be shared through publish to web.
Secure embed and SharePoint: for people who sign in
Secure embed (File > Embed report > Website or portal) gives you a link or an iframe for any portal that accepts one. Item permissions and row-level security apply, and only signed-in users with view permission see the report. Each viewer needs Pro or Premium Per User, unless both the report and its semantic model are on Fabric F64 or larger, or Power BI Premium capacity. Viewers sign in again in every new browser window or tab, the host page has to use HTTPS, and the option isn't available for Azure B2B guest accounts.
On the page as updated on 24 September 2026, Microsoft adds that because of Chromium security updates, secure embed "no longer works exactly as it used to" and users may have to sign in more than once. It suggests building your own Power BI Embedded solution instead.
The SharePoint Online web part does the same inside modern SharePoint pages, and it's the option Microsoft points to for single sign-on. The person embedding needs Pro or Premium Per User, and viewers need access to both the page and the report. Free users can view only when the content is on F64 or larger, or Premium.
Power BI Embedded: your site, your login
Power BI embedded analytics has two scenarios, and developers build both:
- Embed for your customers (app owns data). Your app authenticates to Power BI with a service principal, the method Microsoft recommends, or a "master user" account. Your users don't sign in to Power BI and don't need a license; your site handles any login itself. Besides Publish to web, it's the embed Microsoft offers for people without a Power BI account. It takes a Microsoft Entra app registration, embed tokens generated by your server and Microsoft's JavaScript client.
- Embed for your organization (user owns data). People sign in with their Microsoft Entra accounts. Microsoft lists three production setups: every user on Pro, every user on Premium Per User, or a capacity of F64 or larger.
Embed for your customers needs a capacity in production. You can develop with free embed trial tokens on a Pro license, but the report shows a "Free trial version" banner until a capacity is bought.
A SKUs, F SKUs and the end of P SKUs
Microsoft's capacity guide lists three offers: Power BI Embedded in Azure (A SKUs), Microsoft Fabric in Azure (F SKUs) and Power BI Premium through Microsoft 365 (P and EM SKUs). All of them run embed for your customers. What matters when you choose:
- Only P capacities and F64 or larger let users with free licenses view content in secure embed, SharePoint and embed for your organization. Below F64, and on every A SKU, each viewer needs Pro or Premium Per User. Secure embed doesn't run on A SKUs at all.
- Microsoft is retiring P SKUs at the end of each customer's agreement term and no longer sells new ones, according to its migration guide (updated 22 July 2026), and its Fabric licensing page calls F SKUs the recommended capacities. For a new purchase, the choice is between A and F.
- A and F capacities are billed by usage with no commitment, unless you reserve, and can be paused. But Microsoft's Power BI Embedded pricing FAQ says embedded content doesn't load while the service is paused, so a report on a public site needs its capacity running every hour of the month.
What each option costs
These are list prices in USD, read on 22 October 2026 on Microsoft's Power BI pricing page, its Power BI Embedded pricing page and its Microsoft Fabric pricing page, for Azure's East US region. Azure prices vary by region and currency, and Microsoft notes its Power BI prices may differ at checkout. Monthly figures are Microsoft's, for a capacity running all month.
| Item | Compute | Price |
|---|---|---|
| Power BI Pro | Per user | USD 14 a user a month, paid yearly |
| Power BI Premium Per User | Per user | USD 24 a user a month, paid yearly |
| Power BI Embedded A1 | 1 v-core, 3 GB of memory | USD 1.0081 an hour, or USD 735.91 a month |
| Power BI Embedded A2 | 2 v-cores, 5 GB | USD 1,465.91 a month |
| Fabric F2 | A quarter of A1 | USD 262.80 a month pay-as-you-go, USD 156.33 with a reservation |
| Fabric F8 | Same as A1 | USD 1,051.20 a month pay-as-you-go, USD 625.33 with a reservation |
| Fabric F64 | Same as P1; free users can view | USD 8,409.60 a month pay-as-you-go, USD 5,002.67 with a reservation |
Microsoft says a one- or three-year Fabric reservation saves about 41% against pay-as-you-go. Region matters: the same F2 costs USD 408.80 a month pay-as-you-go in Brazil South.
| Scenario | What you pay Microsoft |
|---|---|
| Publish to web | A license for the author (Pro if the report is in a shared workspace); nothing per viewer |
| Secure embed or SharePoint, 50 viewers | 50 × USD 14 = USD 700 a month in Pro licenses, paid yearly |
| Secure embed or SharePoint, many viewers | An F64 reservation (USD 5,002.67 a month, on a one- or three-year term) costs about the same as 357 Pro licenses; authors still need Pro |
| Embed for your customers | A capacity from USD 156.33 a month (F2, reserved) or USD 735.91 (A1), plus Pro for whoever publishes the content, plus development |
None of these prices include designing or building the report. That work is separate, whoever does it.
When a custom web chart is the better choice
For internal reporting, Power BI is usually the better tool: people filter and drill down on their own, row-level security decides who sees what, and your team already knows it. A chart built with code into the page earns its cost when the audience is public or external and the chart is part of your website or product. In particular, when it has to:
- Load fast. Microsoft itself suggests a placeholder image so the page loads faster, and a busy public report can hit the heavy-usage state. A chart built into the page ships with it and is measured with the rest of your Core Web Vitals.
- Carry your brand. A Publish to web embed brings Power BI's frame: Microsoft suggests adding 56 pixels to the iframe for its bottom bar and shows gray letterboxing when sizes don't match. Embed for your customers can be branded as your own, at capacity prices.
- Work on phones. Publish to web doesn't support mobile layout views. A custom chart decides which labels and comparisons survive on a small screen.
- Speak more than one language. Publish to web doesn't support multiple-language reports, which matters on a bilingual website.
- Be accessible to everyone who lands on it. Power BI has real accessibility features, from keyboard navigation and alt text to Show data, an HTML table a screen reader opens with Alt+Shift+F11, and Microsoft says a report should be treated "more like an application and less like a document". WCAG's guidance on non-text content describes a chart with a short label, a longer description of its trends and, where practical, the data in a table; non-text contrast asks for 3:1 contrast on the parts of a graphic needed to understand it, such as each line in a graph. On your own page, the summary and the table can sit next to the chart for every reader. Our WCAG 2.2 checklist covers the rest.
- Be readable as text. When the numbers and the explanation are text in your page's HTML, anyone reading the page, including search engines and AI assistants, gets them without running a report.
- Tell a story. A data story walks the reader through a sequence, such as the place, then the trend, then the detail, before it opens up filters.
The cost works differently too. A capacity is a bill every month the report stays online; a custom chart costs design and development up front, then runs as part of the site. Data that changes monthly or quarterly can ship as static files: Cloudflare, for example, states that requests to static assets on Workers are free and unlimited. Live data needs an API and someone responsible for updates, so compare the whole cost.
Most data visualization tools for websites are open-source libraries with no per-viewer fee: D3 and Observable Plot (ISC-style licenses), Vega-Lite (BSD 3-clause), Apache ECharts (Apache 2.0) and Chart.js (MIT). Many teams use both: staff keep working in Power BI, and the public sees a curated chart built from an export of the same model.
Which option to choose
| Your situation | What usually fits |
|---|---|
| Staff with Microsoft 365 accounts need a report in the intranet | SharePoint Online web part, or secure embed in another portal |
| Up to a few hundred internal viewers | Pro licenses (USD 14 each a month) rather than a capacity |
| Several hundred internal viewers or more | An F64 capacity, so free users can view |
| Public, non-sensitive data, low traffic, no brand requirements | Publish to web, with admin approval and a placeholder image |
| Customers log in to your product and each sees their own data | Embed for your customers on an F or A capacity, with row-level security |
| A public page that must be fast, on-brand, accessible, bilingual and readable as text | A custom web chart, built from data exported from your BI model |
What to do next
- Decide whether the data could be published as a spreadsheet. If not, rule out Publish to web.
- Count your viewers and note who they are: staff with Microsoft accounts, customers or the public.
- Price the options with the tables above, in your Azure region.
- Ask your Power BI administrator about the Publish to web and embedding settings before you promise a public embed.
If the chart belongs on a public page or inside a product, Dardo's data visualization service designs and builds either route, a Power BI dashboard or a custom web interface like our Shiimain prototype.
Common questions
How do I embed a Power BI report in a website without a login?
Use Publish to web: in the report, choose File > Embed report > Publish to web (public) and paste the iframe into your page. Anyone with the link can view it, and Microsoft warns they can reach the model's underlying data, so use it only for public data; your Power BI admin must allow it. The other option is embed for your customers (Power BI Embedded), where your site shows the report without a Power BI sign-in, but it needs developer work and a capacity, from USD 262.80 a month for a Fabric F2 pay-as-you-go in East US on 22 October 2026.
Is Power BI Publish to web free? Do I need a Pro license?
Viewers pay nothing and don't need a Power BI license. To create the embed code, Microsoft asks for a Power BI license to publish from My workspace, and Pro or Premium Per User to publish from any other workspace; Pro was USD 14 a user a month, paid yearly, on 22 October 2026. Your admin still has to enable Publish to web, and the creator must keep access to the report for the embed to keep working.
Can I put a password on a Power BI report published to the web?
No. Microsoft states that viewing a Publish to web report requires no authentication, and URL filters aren't a security feature because viewers can change them. If only certain people should see the report, use secure embed or the SharePoint Online web part, where viewers sign in with Microsoft accounts, or embed for your customers, where your site applies its own login.
How much does Power BI Embedded cost?
It is billed by capacity size and running time. On 22 October 2026, in Azure's East US region, an A1 cost USD 1.0081 an hour, or USD 735.91 a month; a Fabric F2 cost USD 262.80 a month pay-as-you-go or USD 156.33 with a reservation; and an F64 USD 8,409.60 pay-as-you-go. Viewers in the embed for your customers scenario need no license, but people who publish the content need Pro, and prices vary by region: the same F2 was USD 408.80 a month in Brazil South.
Why is Publish to web not showing in Power BI?
Usually your Power BI admin hasn't enabled the Publish to web tenant setting, or has limited it to security groups you aren't in; the option then isn't visible. Other causes Microsoft lists: the report was shared with you or through an app, you can't edit the workspace, private links block public internet access (the option is greyed out), or the content is on Power BI Embedded capacity. Reports with row-level security or DirectQuery get a Not supported status.
Is Power BI Publish to web secure?
Not for private data. Microsoft says anyone on the internet can view a published report without authentication, including detail-level data, and can access the underlying data in the model even when the report doesn't show it. Row-level security isn't supported. Review your embed codes and delete the ones you no longer need; deleting a code disables every link that uses it.
Should I use Power BI or a custom chart on a public website?
For internal reporting, Power BI is usually the better tool, because people can filter and explore on their own and your team already knows it. For a public page that has to load fast, carry your brand, work on phones, be accessible and be readable as text, a chart built into the page often fits better and needs no capacity running every month. Many teams use both: Power BI for staff, a curated custom chart for the public.
Sources & further reading
Sources behind this page, with further detail from the original publishers.
- Microsoft Learn: Publish to web from Power BIlearn.microsoft.com
- Microsoft Learn: Embed a report in a secure portal or websitelearn.microsoft.com
- Microsoft Learn: Embed a report web part in SharePoint Onlinelearn.microsoft.com
- Microsoft Learn: Export and sharing tenant settingslearn.microsoft.com
- Microsoft Learn: Power BI embedded analytics overviewlearn.microsoft.com
- Microsoft Learn: Embed content in your Power BI embedded analytics application (for your customers)learn.microsoft.com
- Microsoft Learn: Embed content in your Power BI embedded analytics application for your organizationlearn.microsoft.com
- Microsoft Learn: Capacity and SKUs in Power BI embedded analyticslearn.microsoft.com
- Microsoft Learn: Frequently asked questions about Power BI embedded analyticslearn.microsoft.com
- Microsoft Learn: Understand Microsoft Fabric licenses and capacitylearn.microsoft.com
- Microsoft Learn: Power BI Premium P SKU to Fabric F SKU migration decision guidelearn.microsoft.com
- Microsoft Learn: Consume Power BI reports by using accessibility featureslearn.microsoft.com
- Microsoft: Power BI pricingmicrosoft.com
- Microsoft Azure: Power BI Embedded pricingazure.microsoft.com
- Microsoft Azure: Microsoft Fabric pricingazure.microsoft.com
- W3C: Understanding Success Criterion 1.1.1, Non-text Contentw3.org
- W3C: Understanding Success Criterion 1.4.11, Non-text Contrastw3.org
- Cloudflare: Workers pricingdevelopers.cloudflare.com
- GitHub: D3 licensegithub.com
- GitHub: Observable Plot licensegithub.com
- GitHub: Vega-Lite licensegithub.com
- GitHub: Apache ECharts licensegithub.com
- GitHub: Chart.js licensegithub.com
