HTML <bdi> Tag

The HTML <bdi> tag is used to create the 'bdi' element. This element is used on a span of text that needs to be isolated from its surroundings for the purposes of bidirectional text formatting.

This is useful when the text-direction is unknown, such as displaying user content where the directionality could change depending on the user. For example, a website with left-to-right text may display a list of usernames. Some users might have a username that runs right-to-left (such as Arabic, Hebrew, Persian, Thaana, Urdu, etc). In this case, the <bdi> element allows you to honor the correct directionality of the username.

While it's true that you can use the <bdo> tag to explicitly set the text direction, that tag is no good when the text direction is unknown (such is the case with user generated content). This is where the <bdi> comes in handy, as you can isolate the text with the unknown text direction from its surrounding text.


The <bdi> tag is written as <bdi></bdi> with the text with the unknown directionality inserted between the start and end tags.

Like this:


Here is a list of usernames from an online forum website. Note that each username is marked up with the <bdi> tag.

Below is an example of what would happen if we didn't use the <bdi> tag. Notice that the position of the third username (إيان) and the number of posts has been switched around. The number of posts is now to the left of the username. This is because the browser thinks that the post count is part of the Arabic text. To overcome this, we can use the <bdi> tag as we did above.


Attributes can be added to an HTML element to provide more information about how the element should appear or behave.

The <bdi> element accepts the following attributes.


* Note that the global dir attribute defaults to auto on this element (it never inherits from the parent element like with other elements).

Global Attributes

The following attributes are standard across all HTML elements. Therefore, you can use these attributes with the <bdi> tag , as well as with all other HTML tags.

For a full explanation of these attributes, see HTML 5 global attributes.

Event Handlers

Event handler content attributes enable you to invoke a script from within your HTML. The script is invoked when a certain "event" occurs. Each event handler content attribute deals with a different event.

Most event handler content attributes can be used on all HTML elements, but some event handlers have specific rules around when they can be used and which elements they are applicable to.

For more detail, see HTML event handler content attributes.