Attributes carry additional information about an HTML element and come in name=”value” pairs. Example: <div class=”my-class”></div>. Here we have a div tag and it has a class attribute with a value of my-class.
Property is a representation of an attribute in the HTML DOM tree. So the attribute in the example above would have a property named className with a value of my-class.
Our DIV node
|- nodeName = "DIV"
|- className = "my-class"
|- style
|- ...
|- ...
Attributes are in your HTML text document/file, whereas properties are in HTML DOM tree. This means that
for example when user checks a checkbox, inputs text to textarea or uses JavaScript to change the property value.

