Quoting the official W3C recommendation, Mathematical Markup Language (MathML for short) “is a markup language for describing mathematical notation and capturing both its structure and content. The goal of MathML is to enable mathematics to be served, received, and processed on the World Wide Web, just as HTML has enabled this functionality for text”.
MathML can be used to encode both mathematical notation and mathematical content: while tags describe abstract notational structures (the so called “presentation MathML”), others provide a way of unambiguously specifying the intended meaning of an expression (the so called “content MathML”).
Unfortunately, there are two big caveats to consider when leveraging MathML. First, writing formulas by hand can be a little bit tedious (unless you happen to have a very strong attraction to XML-based languages); however, tools to convert formulas written by using other (much easier to write) syntaxes (e.g. AsciiMathML, MathJax) do in deed exist. Second, browser support for this language is far from perfect, but tools to remediate (e.g. MathJax) exist ass well!