Yes this is the correct behaviour of setting styling to the header of a table. If you google the definition and usage of <thead> , then n8n is applying the styling to all <th> columns using the <thead> instead of duplicating the styling to each <th>
However, from a practical perspective this behaviour creates a styling limitation in real use-cases:
When the Header Attributes are applied to the <thead> element rather than to the individual <th> cells, certain CSS properties (like padding) affect the entire header row instead of each header cell.
In contrast, the Cell and Row styling options for regular table rows in n8n allow per-cell granularity — I can apply padding to each <td> and get proper spacing between cells. For the header row this is currently not possible, since padding applied via <thead> does not behave the same as padding on individual <th> elements.
Because of this, the documented behaviour (“attributes applied to the table’s headers <th>”) would actually be more consistent and more useful, as it would provide the same level of control for header cells as for normal cells.
Suggestion:
To resolve this cleanly, it might make sense to introduce two separate styling options in the HTML Table node:
one specifically for <thead> (styling the entire header row)
one specifically for <th> (styling individual header cells)
This would align header styling with the existing separation of Row and Cell styling for <tr> and <td> and would avoid the current limitations.
Question:
Is the current implementation (applying attributes only to <thead>) intended long-term, or would aligning the behaviour with the documentation — or offering separate <thead> / <th> options — be considered as a potential improvement?
n8n is not a html templating engine so therefore has limitations for producing basic html capabilities.
You are more than welcome to build the html manually using Set or Code nodes to your unique needs
Since n8n is open source, you can also fork it and build this property into the existing html node
Lastly, you can build a custom node which has all the flexibility you need for creating html
The challenge with your above question whether this will be baked in future is that the n8n team will likely not spend time on catering for the nth degree of customisation of html for everyone, as you can think this would get our of hand very quickly. The html node is only a small utility and probably not used as widely or as core a function to the capabilities of the entire platform.