Start With Table Semantics
Use a real table for tabular relationships, with a caption where context is not already clear, scoped headers and accessible names for controls. Do not turn a data grid into an unlabeled collection of generic div elements.
7 minute read · Updated 2026-09-05
Practical requirements for the screen where most back-office work actually happens.
An accessible data table needs semantic headers, clear labels, keyboard-operable controls, visible focus, announced sorting, meaningful selection and responsive behaviour that preserves relationships between labels and values.
Use a real table for tabular relationships, with a caption where context is not already clear, scoped headers and accessible names for controls. Do not turn a data grid into an unlabeled collection of generic div elements.
Sort controls should announce direction. Row selection needs a label tied to the record. Bulk actions should state how many records they affect and remain unavailable when nothing is selected.
Loading, empty dataset, no filter results, partial data, permission restrictions and errors communicate different situations and require different recovery actions.
Horizontal scrolling can be appropriate for comparison-heavy tables. A card transformation can work for record lists, but only if field labels remain present and action order stays predictable.
No. Use tables when users compare the same fields across records. Use cards or lists when scanning identity and one primary action matters more.
It can be when the region is keyboard reachable, clearly indicated and does not trap focus. Test it with keyboard and screen-reader workflows.
Keep frequent actions visible when space permits and group secondary actions in a consistently named menu. Do not rely on hover alone.