This technique was first brought to my attention by Mark Robbins at The Email Design Conference (now Litmus Live) in 2016. During his talk, he showed us what a typical email coded with tables sounds like when read by a screen reader. It was… not ideal. The same email with the
role="presentation" attribute added to each
<table> tag, though, was a lot more easily understood.
Mark’s original examples are offline, but here is a similar comparison from Rémi Parmentier:
As Jay Oram put it:
role="presentation"on each table is for accessibility — for screen readers to know whether or not to read it as a table of data. Best practice is to have
role="none"(not to be read at all) on any HTML table.
Mark added that you should only leave it off if your table element represents an actual table of data.
It was pointed out to someone who had spotted the mysterious attribute in their new company’s emails that finding a
role="presentation" attribute in your email code is a great sign that the developer knew what they were doing.