📄 radixui/themes/docs/components/table

File: table.md | Updated: 11/15/2025

Source: https://www.radix-ui.com/themes/docs/components/table

Radix Homepage

Made by WorkOS

Radix Homepage

Made by WorkOS

ThemesThemes PrimitivesPrimitives IconsIcons ColorsColors

Documentation Playground Blog

Overview

Getting started Styling Layout Releases Resources

Theme

Overview Color Dark mode Typography Spacing Breakpoints Radius Shadows Cursors

Layout

Box Flex Grid Container Section

Typography

Text Heading Blockquote Code Em Kbd Link Quote Strong

Components

Alert Dialog Aspect Ratio Avatar Badge Button Callout Card Checkbox Checkbox Group Checkbox Cards Context Menu Data List Dialog Dropdown Menu Hover Card Icon Button Inset Popover Progress Radio Radio Group Radio Cards Scroll Area Segmented Control Select Separator Skeleton Slider Spinner Switch Table Tabs Tab Nav Text Area Text Field Tooltip

Utilities

Accessible Icon Portal Reset Slot Theme Visually Hidden

Components

Table

Semantic table element for presenting data.

View source Report an issue View in Playground

| Full name | Email | Group | | --- | --- | --- | | Danilo Sousa | danilo@example.com | Developer | | Zahra Ambessa | zahra@example.com | Admin | | Jasper Eriksson | jasper@example.com | Developer |

<Table.Root>
	<Table.Header>
		<Table.Row>
			<Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>
			<Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
			<Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>
		</Table.Row>
	</Table.Header>

	<Table.Body>
		<Table.Row>
			<Table.RowHeaderCell>Danilo Sousa</Table.RowHeaderCell>
			<Table.Cell>danilo@example.com</Table.Cell>
			<Table.Cell>Developer</Table.Cell>
		</Table.Row>

		<Table.Row>
			<Table.RowHeaderCell>Zahra Ambessa</Table.RowHeaderCell>
			<Table.Cell>zahra@example.com</Table.Cell>
			<Table.Cell>Admin</Table.Cell>
		</Table.Row>

		<Table.Row>
			<Table.RowHeaderCell>Jasper Eriksson</Table.RowHeaderCell>
			<Table.Cell>jasper@example.com</Table.Cell>
			<Table.Cell>Developer</Table.Cell>
		</Table.Row>
	</Table.Body>
</Table.Root>

API Reference


Root

Groups the Header and Body parts. This component is based on the table element and supports common margin props .

| Prop | Type | Default | | --- | --- | --- | | size | Responsive<"1" \| "2" \| "3"> | "2" | | variant<br><br>Prop description | "surface" \| "ghost" | "ghost" | | layout | Responsive<"auto" \| "fixed"> | No default value |

Contains the column headings for the table, based on the thead element.

Body

Displays the table data. This component is based on the tbody element.

Row

A row of table cells. Based on the tr element.

| Prop | Type | Default | | --- | --- | --- | | align | Responsive<"start" \| "center" \| "end" \| "baseline"> | No default value |

Cell

A basic table cell. This component is based on the td element, but uses justify instead of align to control how horizontal space is distributed within the table cell.

| Prop | Type | Default | | --- | --- | --- | | justify | Responsive<"start" \| "center" \| "end"> | No default value | | width | Responsive<string> | No default value | | minWidth | Responsive<string> | No default value | | maxWidth | Responsive<string> | No default value | | p | Responsive<enum \| string><br><br>See full type | No default value | | px | Responsive<enum \| string><br><br>See full type | No default value | | py | Responsive<enum \| string><br><br>See full type | No default value | | pt | Responsive<enum \| string><br><br>See full type | No default value | | pr | Responsive<enum \| string><br><br>See full type | No default value | | pb | Responsive<enum \| string><br><br>See full type | No default value | | pl | Responsive<enum \| string><br><br>See full type | No default value |

ColumnHeaderCell

The header of a table column. Based on the th element and provides the same props interface as the Cell part.

| Prop | Type | Default | | --- | --- | --- | | justify | Responsive<"start" \| "center" \| "end"> | No default value | | width | Responsive<string> | No default value | | minWidth | Responsive<string> | No default value | | maxWidth | Responsive<string> | No default value | | p | Responsive<enum \| string><br><br>See full type | No default value | | px | Responsive<enum \| string><br><br>See full type | No default value | | py | Responsive<enum \| string><br><br>See full type | No default value | | pt | Responsive<enum \| string><br><br>See full type | No default value | | pr | Responsive<enum \| string><br><br>See full type | No default value | | pb | Responsive<enum \| string><br><br>See full type | No default value | | pl | Responsive<enum \| string><br><br>See full type | No default value |

RowHeaderCell

The header of a table row. Based on the th element and provides the same props interface as the Cell part.

| Prop | Type | Default | | --- | --- | --- | | justify | Responsive<"start" \| "center" \| "end"> | No default value | | width | Responsive<string> | No default value | | minWidth | Responsive<string> | No default value | | maxWidth | Responsive<string> | No default value | | p | Responsive<enum \| string><br><br>See full type | No default value | | px | Responsive<enum \| string><br><br>See full type | No default value | | py | Responsive<enum \| string><br><br>See full type | No default value | | pt | Responsive<enum \| string><br><br>See full type | No default value | | pr | Responsive<enum \| string><br><br>See full type | No default value | | pb | Responsive<enum \| string><br><br>See full type | No default value | | pl | Responsive<enum \| string><br><br>See full type | No default value |

Examples


Size

Use the size prop to control how large the text and padding of the table cells should be.

| Full name | Email | | --- | --- | | Danilo Sousa | danilo@example.com | | Zahra Ambessa | zahra@example.com |

| Full name | Email | | --- | --- | | Danilo Sousa | danilo@example.com | | Zahra Ambessa | zahra@example.com |

| Full name | Email | | --- | --- | | Danilo Sousa | danilo@example.com | | Zahra Ambessa | zahra@example.com |

<Flex direction="column" gap="5" maxWidth="350px">
	<Table.Root size="1">
		<Table.Header>
			<Table.Row>
				<Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>
				<Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
			</Table.Row>
		</Table.Header>

		<Table.Body>
			<Table.Row>
				<Table.RowHeaderCell>Danilo Sousa</Table.RowHeaderCell>
				<Table.Cell>danilo@example.com</Table.Cell>
			</Table.Row>
			<Table.Row>
				<Table.RowHeaderCell>Zahra Ambessa</Table.RowHeaderCell>
				<Table.Cell>zahra@example.com</Table.Cell>
			</Table.Row>
		</Table.Body>
	</Table.Root>

	<Table.Root size="2">
		<Table.Header>
			<Table.Row>
				<Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>
				<Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
			</Table.Row>
		</Table.Header>

		<Table.Body>
			<Table.Row>
				<Table.RowHeaderCell>Danilo Sousa</Table.RowHeaderCell>
				<Table.Cell>danilo@example.com</Table.Cell>
			</Table.Row>
			<Table.Row>
				<Table.RowHeaderCell>Zahra Ambessa</Table.RowHeaderCell>
				<Table.Cell>zahra@example.com</Table.Cell>
			</Table.Row>
		</Table.Body>
	</Table.Root>

	<Table.Root size="3">
		<Table.Header>
			<Table.Row>
				<Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>
				<Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
			</Table.Row>
		</Table.Header>

		<Table.Body>
			<Table.Row>
				<Table.RowHeaderCell>Danilo Sousa</Table.RowHeaderCell>
				<Table.Cell>danilo@example.com</Table.Cell>
			</Table.Row>
			<Table.Row>
				<Table.RowHeaderCell>Zahra Ambessa</Table.RowHeaderCell>
				<Table.Cell>zahra@example.com</Table.Cell>
			</Table.Row>
		</Table.Body>
	</Table.Root>
</Flex>

With a backplate

Use variant="surface" to add a visually enclosed backplate to the table.

| Full name | Email | Group | | --- | --- | --- | | Danilo Sousa | danilo@example.com | Developer | | Zahra Ambessa | zahra@example.com | Admin | | Jasper Eriksson | jasper@example.com | Developer |

<Table.Root variant="surface">
	<Table.Header>
		<Table.Row>
			<Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>
			<Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
			<Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>
		</Table.Row>
	</Table.Header>

	<Table.Body>
		<Table.Row>
			<Table.RowHeaderCell>Danilo Sousa</Table.RowHeaderCell>
			<Table.Cell>danilo@example.com</Table.Cell>
			<Table.Cell>Developer</Table.Cell>
		</Table.Row>

		<Table.Row>
			<Table.RowHeaderCell>Zahra Ambessa</Table.RowHeaderCell>
			<Table.Cell>zahra@example.com</Table.Cell>
			<Table.Cell>Admin</Table.Cell>
		</Table.Row>

		<Table.Row>
			<Table.RowHeaderCell>Jasper Eriksson</Table.RowHeaderCell>
			<Table.Cell>jasper@example.com</Table.Cell>
			<Table.Cell>Developer</Table.Cell>
		</Table.Row>
	</Table.Body>
</Table.Root>

PreviousSwitch

NextTabs

Edit this page on GitHub.