My definition of a programming language is that which is compilable into machine-readable form.
Now you're going to say, "HTML can be compiled into machine-readable form, it's displayed on your screen, isn't it?!". Yes, the content that originated from HTML (and others) is displayed on your screen, but that's because the browser is interpreting the HTML and then displaying it. Like someone else already responded to you and said, HTML is data, or more specifically structured content.
An analogy that may help distinguish HTML (and CSS and the like) from what I consider programming languages would be to take printing a certificate using a word processor. The words and images you insert into the word processor isn't a "programming language". It's a "template" which is used by the printer in order to display the content (on paper), just like browsers that use the HTML to display the content (on the screen).
HTML tags for forms, different types of media, etc. kind of blur the lines a little bit because they instruct the browser to perform certain actions, but that doesn't invalidate the interpretation of HTML as a display template, or data.