the_title( string $before = '', string $after = '', bool $echo = true )

Display or retrieve the current post title with optional markup.



(string) (Optional) Markup to prepend to the title.

Default value: ''


(string) (Optional) Markup to append to the title.

Default value: ''


(bool) (Optional) Whether to echo or return the title. Default true for echo.

Default value: true


(void|string) Void if $echo argument is true, current post title if $echo is false.

More Information

This function displays or returns the unescaped title of the current post. This tag may only be used within The Loop, to get the title of a post outside of the loop use get_the_title. If the post is protected or private, this will be noted by the words “Protected: ” or “Private: ” prepended to the title.

Security considerations

Like the_content() , the output of the_title() is unescaped. This is considered a feature and not a bug, see the FAQ “Why are some users allowed to post unfiltered HTML?” . If the post title is <script>alert("test");</script>, then that JavaScript code will be run wherever the_title() is used. For this reason, do not write code that allows untrusted users to create post titles.


File: wp-includes/post-template.php

function the_title( $before = '', $after = '', $echo = true ) {
	$title = get_the_title();

	if ( strlen( $title ) == 0 ) {

	$title = $before . $title . $after;

	if ( $echo ) {
		echo $title;
	} else {
		return $title;


Version Description
0.71 Introduced.

© 2003–2019 WordPress Foundation
Licensed under the GNU GPLv2+ License.