Note: at some point it has changed, and e.g. in Word 365 the generated HTML no longer contains such elements. However, the answer is still valid for older Word versions.


Couldn't find any official documentation (no surprise there) but according to this interesting article (original link dead, this links to web archive of it), those elements are injected in order to enable Word to convert the HTML back to fully compatible Word document, with everything preserved.

The relevant paragraph:

Microsoft added the special tags to Word's HTML with an eye toward backward compatibility. Microsoft wanted you to be able to save files in HTML complete with all of the tracking, comments, formatting, and other special Word features found in traditional DOC files. If you save a file in HTML and then reload it in Word, theoretically you don't loose anything at all.

This makes lots of sense.

For your specific question.. the o in the <o:p> means "Office namespace" so anything following the o: in a tag means "I'm part of Office namespace" - in case of <o:p> it just means paragraph, the equivalent of the ordinary <p> tag.

I assume that every HTML tag has its Office "equivalent" and they have more.

Answer from user447356 on Stack Overflow
🌐
W3Schools
w3schools.com › CHARSETS › ref_html_entities_o.asp
HTML5 Entity Names by O
Entities Latin Entities Greek Entities ... J Entities K Entities L Entities M Entities N Entities O Entities P Entities Q Entities R Entities S Entities T Entities U Entities V Entities W Entities X Entities Y Entities Z HTML4...
🌐
Toptal
toptal.com › designers › htmlarrows › letters › lowercase-o-with-acute
Lowercase o with Acute HTML Symbol, Character and Entity Codes — HTML Arrows
HTML symbol, character and entity codes, ASCII, CSS and HEX values for Lowercase o with Acute, plus a panoply of others.
🌐
Toptal
toptal.com › designers › htmlarrows › letters › lowercase-o-with-umlaut
Lowercase o with Umlaut HTML Symbol, Character and Entity Codes — HTML Arrows
HTML symbol, character and entity codes, ASCII, CSS and HEX values for Lowercase o with Umlaut, plus a panoply of others.
🌐
Toolstud
toolstud.io › web › charmap.php
HTML character: ø = ø · toolstud.io
Fonts: italic: ø • bold: ø • code: ø • serif: ø • sans-serif: ø • fixed: ø ... In HTML (and XML), there are 'character entity reference' that are used to represent non-ASCII characters. E.g. the character '→' can be encoded as &rarr;, to use in a non-Unicode-compatible text format.
🌐
Toptal
toptal.com › designers › htmlarrows › letters › lowercase-o-with-slash
Lowercase o with Slash HTML Symbol, Character and Entity Codes — HTML Arrows
HTML symbol, character and entity codes, ASCII, CSS and HEX values for Lowercase o with Slash, plus a panoply of others.
🌐
Webmaster World
webmasterworld.com › html › 3850841.htm
tags - HTML forum at WebmasterWorld - WebmasterWorld
February 16, 2009 - The "o" prefix indicates the Microsoft Office namespace; you'll see it if you copy and paste in content generated from an Office application (e.g. Outlook, Word), or use an Office application to export HTML.
Find elsewhere
🌐
Toolstud
toolstud.io › web › charmap.php
HTML character: ó = ó · toolstud.io
Fonts: italic: ó • bold: ó • code: ó • serif: ó • sans-serif: ó • fixed: ó ... In HTML (and XML), there are 'character entity reference' that are used to represent non-ASCII characters.
🌐
Toptal
toptal.com › designers › htmlarrows › letters › uppercase-o-with-slash
Uppercase O with Slash HTML Symbol, Character and Entity Codes — HTML Arrows
HTML symbol, character and entity codes, ASCII, CSS and HEX values for Uppercase O with Slash, plus a panoply of others.
🌐
W3Schools
w3schools.com › tags › tag_ol.asp
HTML ol tag
<!--> <!DOCTYPE> <a> <abbr> <acronym> <address> <applet> <area> <article> <aside> <audio> <b> <base> <basefont> <bdi> <bdo> <big> <blockquote> <body> <br> <button> <canvas> <caption> <center> <cite> <code> <col> <colgroup> <data> <datalist> <dd> <del> <details> <dfn> <dialog> <dir> <div> <dl> <dt> <em> <embed> <fieldset> <figcaption> <figure> <font> <footer> <form> <frame> <frameset> <h1> - <h6> <head> <header> <hgroup> <hr> <html> <i> <iframe> <img> <input> <ins> <kbd> <label> <legend> <li> <link> <main> <map> <mark> <menu> <meta> <meter> <nav> <noframes> <noscript> <object> <ol> <optgroup> <
🌐
Lenovo
lenovo.com › home
Mastering HTML: Understanding the <ol> Tag
For larger orders, call 1‑855‑253‑6686. ... The HTML <ol> tag is used to define an ordered list in a web page. It stands for "ordered list" and is often paired with <li> (list item) tags. This tag is handy when you want to present information in a sequential or numbered format.
🌐
W3Schools
w3schools.com › tags › att_ol_type.asp
HTML ol type Attribute
<!--> <!DOCTYPE> <a> <abbr> <acronym> <address> <applet> <area> <article> <aside> <audio> <b> <base> <basefont> <bdi> <bdo> <big> <blockquote> <body> <br> <button> <canvas> <caption> <center> <cite> <code> <col> <colgroup> <data> <datalist> <dd> <del> <details> <dfn> <dialog> <dir> <div> <dl> <dt> <em> <embed> <fieldset> <figcaption> <figure> <font> <footer> <form> <frame> <frameset> <h1> - <h6> <head> <header> <hgroup> <hr> <html> <i> <iframe> <img> <input> <ins> <kbd> <label> <legend> <li> <link> <main> <map> <mark> <menu> <meta> <meter> <nav> <noframes> <noscript> <object> <ol> <optgroup> <
🌐
W3C
w3.org › MarkUp › html-spec › html-spec_13.html
Hypertext Markup Language - 2.0 - The HTML Coded Character Set
REFERENCE DESCRIPTION -------------- ----------- &#00; - &#08; Unused &#09; Horizontal tab &#10; Line feed &#11; - &#12; Unused &#13; Carriage Return &#14; - &#31; Unused &#32; Space &#33; Exclamation mark &#34; Quotation mark &#35; Number sign &#36; Dollar sign &#37; Percent sign &#38; Ampersand &#39; Apostrophe &#40; Left parenthesis &#41; Right parenthesis &#42; Asterisk &#43; Plus sign &#44; Comma &#45; Hyphen &#46; Period (fullstop) &#47; Solidus (slash) &#48; - &#57; Digits 0-9 &#58; Colon &#59; Semi-colon &#60; Less than &#61; Equals sign &#62; Greater than &#63; Question mark &#64; Com
🌐
W3C
w3.org › TR › 2011 › WD-html-markup-20110525 › ol.html
ol – ordered list - HTML5
The ol element represents a list (or sequence) of items; that is, a list in which the items are intentionally ordered, such that changing the order would change the meaning of the list.
🌐
W3Schools
w3schools.com › charsets › ref_utf_latin1_supplement.asp
HTML Unicode Latin 1 Supplement
Entities Latin Entities Greek Entities ... J Entities K Entities L Entities M Entities N Entities O Entities P Entities Q Entities R Entities S Entities T Entities U Entities V Entities W Entities X Entities Y Entities Z HTML4...
🌐
RapidTables
rapidtables.com › web › html › html-codes.html
HTML Symbols | HTML Emojis
All HTML character codes of text fonts and symbols from &#0; to &#65535; .
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › HTML › Element
HTML elements reference - HTML: HyperText Markup Language
This page lists all the HTML elements, which are created using tags. They are grouped by function to help you find what you have in mind easily. An alphabetical list of all elements is provided in the sidebar on every element's page as well as this one.
🌐
GeeksforGeeks
geeksforgeeks.org › html › html-ol-tag
HTML <ol> Tag - GeeksforGeeks
July 12, 2025 - The HTML <ol> tag defines an ordered list. An ordered list can be numerical or alphabetical. It's a fundamental HTML element used for structuring content and providing sequential organization.