What is the exact difference between esc_html and wp_filter_nohtml_kses. Everywhere I look says that both strip all the html, the only difference I can see is to do with exactly how they do this. Does esc_html encode the tags and does wp_filter_nohtml_kses strip them altogether?

1 Answer 1


Contrary to what you have been looking at, esc_html does not strip all the HTML, it escapes it, meaning it encodes it into safe HTML entities that do not break HTML tags.

wp_filter_nohtml_kses strips all the HTML.

When in doubt always consult the source code. It is accessible online.

esc_attr is short and sweet, uses _wp_specialchars, defined in wp-includes/formatting.php

wp_filter_nohtml_kses is defined in wp-includes/kses.php, and "Strips all of the HTML in the content."

  • Thanks. I think it's hard enough to appreciate the differences between some of these validation functions. I mustn't have been paying enough attention to the distinction between 'escape' and 'strip'. Mar 9, 2012 at 20:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.