Skip to main content

How to Add a Heading for Screen Readers in Power Apps

· 4 min read
Jagdish Kumawat
Founder @ Dewiride

Screen reader users often jump from heading to heading to understand a page. In a canvas app, text only counts as a heading if you mark it as one, and the only control that can do that is the classic Text label, through its Role property. Here's how to add one, even in an app built with modern controls.

Why a Classic Label?​

Microsoft's accessibility guidance asks for at least one heading on each screen, created by setting the Role property of a Label. The Role property is available only on the classic Label control: the modern Text control doesn't have it. So, even in a modern app, use a classic Text label for the heading.

Microsoft also suggests exactly one Heading1 per screen, as its main heading, with Heading2 to Heading4 for subheadings. Role doesn't change how the label looks; it only tells screen readers what it is.

Prerequisites​

Step 1: Insert a Classic Text Label​

Select the container, open Insert, expand Classic and select Text label:

The Insert pane with the Classic category expanded, listing Text label, Button, Blank vertical gallery, Blank horizontal gallery, Blank flexible height gallery and Edit form, with Text label outlined in red

Rename it; the example uses lblTitleHS.

Step 2: Set Role to Heading1​

Role isn't on the Display tab of the properties pane. Choose Role in the property list of the formula bar (or find it on the Advanced tab), and enter:

lblTitleHS → Role
TextRole.Heading1

The preview strip confirms it:

The formula bar with the Role property of lblTitleHS set to TextRole.Heading1, the preview strip reading TextRole.Heading1 = heading1 with Data type text, and the label Career Development Plan in the header

The default is TextRole.Default, plain text.

Step 3: Style It to Match the Modern Controls​

A classic label doesn't follow the modern theme on its own. The example sets:

PropertyValue
TextAppTitle (a named formula; see How to Use Named Formulas in Power Apps)
FontApp.Theme.Font
ColorColor.White (on a header in the theme's primary color)
Size20
FontWeightFontWeight.Semibold
FillPortions1 (stretch across the header)
Height40
PaddingLeft0

How to Use Theme Colors and Fonts in Power Apps Formulas explains App.Theme.

Common Mistakes​

MistakeWhat happensDo this instead
Using a modern Text control for the headingScreen readers read it as plain textUse a classic Text label with Role
Making the heading look big but leaving Role as DefaultIt looks like a heading but isn't oneSet Role to TextRole.Heading1
Several Heading1s on one screenNo single main headingOne Heading1; use Heading2 below it

Troubleshooting​

SymptomLikely causeFix
Role isn't in the property listIt's a modern Text controlUse a classic Text label
The label's font differs from the restClassic labels have their own default fontSet Font to App.Theme.Font
Role didn't change the lookExpected: it only affects screen readersStyle it with Size and FontWeight

FAQ​

Doesn't the screen name already help?​

Yes: screen readers announce a screen's name when it opens. The heading adds a landmark users can jump to and read again.

Can I use Role on other controls?​

Microsoft's accessibility properties reference says Role is available only in the Label control.

Do I need headings if my app has one screen?​

Yes. Microsoft asks for at least one heading on every screen.

Conclusion​

Insert a classic Text label, set Role to TextRole.Heading1, and style it with the theme's font and colors. One Heading1 per screen gives screen reader users something to navigate by, at no cost to how the app looks.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.