I know this might seem insignificant but I noticed that `.mode html` produces output with ALL CAPS HTML element tags like `<TR><TD>foo</TD><TD>bar</TD></TR>`. XHTML requires lowercase tags and it's normative in every HTML5 code-base I have seen to use lowercase tags. Below is a proof-of-concept to fix the issue: ``` Index: src/shell.c.in ================================================================== --- src/shell.c.in +++ src/shell.c.in @@ -2231,26 +2231,26 @@ } break; } case MODE_Html: { if( p->cnt++==0 && p->showHeader ){ - raw_printf(p->out,"<TR>"); + raw_printf(p->out,"<tr>"); for(i=0; i<nArg; i++){ - raw_printf(p->out,"<TH>"); + raw_printf(p->out,"<th>"); output_html_string(p->out, azCol[i]); - raw_printf(p->out,"</TH>\n"); + raw_printf(p->out,"</th>\n"); } - raw_printf(p->out,"</TR>\n"); + raw_printf(p->out,"</tr>\n"); } if( azArg==0 ) break; - raw_printf(p->out,"<TR>"); + raw_printf(p->out,"<tr>"); for(i=0; i<nArg; i++){ - raw_printf(p->out,"<TD>"); + raw_printf(p->out,"<td>"); output_html_string(p->out, azArg[i] ? azArg[i] : p->nullValue); - raw_printf(p->out,"</TD>\n"); + raw_printf(p->out,"</td>\n"); } - raw_printf(p->out,"</TR>\n"); + raw_printf(p->out,"</tr>\n"); break; } case MODE_Tcl: { if( p->cnt++==0 && p->showHeader ){ for(i=0; i<nArg; i++){ ```