Before HTML5, developers used framesets to create SPA-like functionality with multiple frames each with a unique name. The target attribute in tags tells the browser which frame to load the content into, for example, target=”content”. If a frame with the target name doesn’t exist, the browser creates a new window with that name. To avoid frame semantics and open a link in a new tab, developers use target=”_blank”, with the underscore representing a special value. is discouraged in HTML5.
https://kyrylo.org/html/2024/10/25/why-does-target-blank-have-an-underscore-in-front.html