One of the key specifications of programming languages is their ability to compute algorithms written out in pseudocode. So is HTML a programming language according to this standard? The short answer is no.  

However, the exact capabilities of HTML are a matter of debate. Depending on who you talk to and the type of job they have in the tech sector, HTML can either be characterized as obsolete or an umbrella term for technologies that breathe life into the web.    

And while there is no general consensus among programmers and coders about the effectiveness of HTML, most agree that it should be referred to as a markup language rather than a programming one. Keep reading to find out more about what exactly HTML is.

Encapsulate This!

HTML is short for HyperText Markup Language. It consists of elements called tags and is the basic code structure for creating websites. These tags define the purpose of the data on a webpage. HTML, by definition, is a tool that describes the data to the browser, which then displays the information in accordance with HTML’s characterization.  

However, these aren’t the same functions as those of computer languages. HTML doesn’t provide an executable script. It simply enables the browser to read and interpret the text as webpage content. This way, the browser knows what part of the document or a page is a title or a heading.

For example, if we type in the following:

<section>
    <h1>Yes, I am the headline.</h1>
    <p>And I am a paragraph.</p>
</section>

Here, we’re telling the browser that "Yes, I am the headline" is the headline in this section, while "And I am a paragraph" is the section's paragraph. As such, HTML serves a strictly structural rather than a functional purpose, which should put to bed any debate surrounding that fundamental question: is HTML considered a programming language?

Programming Logic

A programming language, by definition, is used to create programs. It enables programmers to give direct instructions to the computer. Such languages turn our data into CPU instructions, which rewrites the input data into a specific output.

In layman's terms, a programming language turns our words into understandable action commands for the machine and allows you to create applications. HTML doesn’t have the ability to turn logic into functionality.

The Language Debate

But this hasn’t stopped programmers from having heated debates about the dynamism of HTML. Is it a programming language or web technology? This is one of the questions at the heart of that debate. 

Developing Capabilities

We’ll begin with the most straightforward argument: a markup language isn't a programming language. But the truth is that a markup language can be a programming language. 

This isn’t the case with HTML, at least not yet. But other markup languages such as LaTeX and TeX have earned their right to be called programming languages. Multiple projects such as Mars Rover Controller or a BASIC Interpreter won awards after relying on these markup languages for development.

Both types of coding languages work with variables, loops, control structures, and more. In our programming language vs. markup language comparison, we’ve identified many similarities between the two. As such, the general argument that markup languages cannot be programming languages isn’t accurate. Still, that doesn’t change the fact that HTML isn't a programming language.

Turing Complete

A Turing complete system is one where a written program is used to find solutions to any computational problem. It is an essential component within the programming logic.

Unlike C++ or Java, most programmers agree that HTML has no programming logic and isn’t one of the programming languages. HTML doesn't possess conditional statements like If/Else, and it doesn't run events or tasks. You can't write functions, declare variables, or do math or determine expression. Essentially, with HTML, you cannot manipulate data at all.

However, specific HTML elements do have self-sufficient internal control logic. These elements will react to the user input and run conditional actions which depend on the element's current state and a variable's value.

Such is the case for the <dialog> or <details>/<summary> elements. These will either open if the "close" attribute is present or close if the "open" attribute is active. This proves that relying entirely on programming logic is the wrong approach when trying to answer: why is HTML not considered a programming language. Also, you don’t need JavaScript or CSS to make it work. 

Imperative or Declarative

Another aspect that keeps cropping up is that only declarative and imperative programming languages count. Imperative languages tell the computer what kind of function it needs to perform and how to do it. On the other hand, declarative languages are only concerned with the actual outcome rather than how the computer accomplishes its tasks.

So, what kind of language is HTML? All of the instructions you provide when using HTML follow the declarative language model. While it doesn’t focus on computations the way imperative languages do, HTML does automate processes.

The True Nature of HTML

By now, you should have arrived at the somewhat broad conclusion that HTML is a markup language and not a programming language, even though it meets some of the criteria for being defined as the latter. The latest iteration, HTML5, isn't a programming language, but it can reach that status with further development and improvements.

There was a time when JavaScript was considered as being merely a scripting language. But it evolved and flourished and is now considered to be a high-level programming language. One day, HTML may, too, be unanimously recognized in all circles as a programming language.