Written and maintained by CASRAI Editorial Board
Published · Last updated
On this page
Short answer: multirow is a command from the CTAN package multirow that makes one tabular cell span several rows. Load the package with \usepackage{multirow}, then write \multirow{2}{*}{text} in the first of the rows you want to span and leave the same column empty in the rows below. The sections below give the full argument syntax, the negative row count, the width options and the usual errors, all taken from the package documentation (version 2.9).
What multirow is used for in research
Tables in papers and theses often need a row label that covers a group of rows: a treatment name over several measurements, a variable group over several coefficients, or a merged header cell. In LaTeX, multicolumn merges cells horizontally, and the multirow package supplies the vertical counterpart. The package description on CTAN is “Creates tabular cells that span multiple rows”. It is maintained by Pieter van Oostrum, released under the LaTeX Project Public License 1.3, and version 2.9 is dated 2024-11-12 (CTAN package page, read 2026-11-08).
If the spanned text sits too high or too low, see the companion guide on centering cell content vertically in LaTeX tables.
Install or access
The package is distributed on CTAN at ctan.org/pkg/multirow, with the manual at multirow.pdf and the issue tracker at github.com/pietvo/multirow. It is free software. Load it in the preamble:
\usepackage{multirow}
The distribution contains three style files: multirow.sty, bigstruts.sty and bigdelim.sty. For a browser-based workflow, see web LaTeX editors for research.
Step-by-step: span rows in a table
The full syntax
\multirow[vpos]{nrows}[bigstruts]{width}[vmove]{text}
Only nrows, width and text are required. The optional arguments, as defined in the package README (v2.9):
vpos:t,corb. Without it, “the text is centered vertically within the range spanned by nrows”.nrows: the number of rows to span.bigstruts: only for use withbigstrut.sty.width:*, an explicit width, or=(see below).vmove: a length by which the text is raised (lowered if negative).
A basic example
- Load
multirowin the preamble. - In the first row of the span, put
\multirow{2}{*}{Group A}in the cell. - In the following row(s), leave that column empty by starting the row with
&.
\begin{tabular}{|l|l|l|}
\hline
\multirow{2}{*}{Group A} & Mean & 4.2 \\
& SD & 0.8 \\
\hline
\multirow{2}{*}{Group B} & Mean & 5.1 \\
& SD & 1.1 \\
\hline
\end{tabular}
The package manual states the rule plainly: it is up to you to leave the other rows empty, “or the stuff created by multirow will over-write it”. The manual’s own example uses the same pattern, with \multirow{4}{1in}{...} in the first row and following rows beginning with an empty first cell.
Negative row counts
A positive nrows means this row and the nrows minus 1 rows below it. A negative value means this row and the (-nrows minus 1) rows above it. That lets you place the command in the last row of the span, as in the manual’s \multirow{-3}*{bbbb} example.
Width argument: *, a fixed width, or =
| Width | Behaviour (package README v2.9) |
|---|---|
* |
Natural width; the text is set in LR mode. For several lines inside the cell, put a tabular or array inside the argument. |
A length such as 1in |
The text is set in a parbox of that width, and \\ line breaks are allowed. |
= |
Takes the column width. Works only with p{}-type columns and similar, tabularx X columns and tabulary L, C, R, J columns. |
Changing text alignment with \multirowsetup
The command \multirowsetup is expanded just before the text and is initially just \raggedright. Redefine it to change the alignment of fixed-width cells, for example \renewcommand{\multirowsetup}{\centering}. (For general macro redefinition syntax, see newcommand in LaTeX.)
Spanning rows and columns together
If one entry must span both rows and columns, the manual says “you must put the multirow inside the multicolumn. The other way around will not work.” Its example is:
\multicolumn{2}{c}{\multirow{3}{*}{Multi-multi}}
Output and how to read it
In the compiled table, the spanned text appears once, centered vertically across the rows it covers (unless you set vpos or vmove), and the rows beneath it show empty cells in that column. Horizontal rules are your choice: the manual’s examples use \hline and \cline{2-2} so that the rule does not cut through the spanning cell.
Troubleshooting
| Symptom | Cause and fix (from the package documentation) |
|---|---|
| Text overprinted or overwritten in a cell below the span | The cells in the spanned rows were not empty. Leave them empty. |
| Text does not wrap inside the cell | With *, text is set in LR mode. Use an explicit width, or = in a suitable column type, or nest a tabular. |
| Combined row and column span fails | The command order is wrong: put multirow inside multicolumn. |
| Text is left-aligned in a fixed-width cell | The default \multirowsetup is \raggedright; redefine it. |
| Text sits too high or low | Set vpos or vmove; see the vertical-centering guide. |
If the cause is not listed, the package issue tracker linked above is the maintainer’s channel for bug reports.
Free alternatives
multirow is itself free software under the LPPL 1.3, so no paid alternative is needed. The same CTAN distribution also ships bigstruts.sty and bigdelim.sty alongside multirow.sty.
FAQ
What does \multirow{2}{*}{text} mean?
Span two rows, with the text at its natural width (*), vertically centered across those two rows by default.
How do I use multirow in LaTeX?
Add \usepackage{multirow}, put \multirow{n}{*}{text} in the first row of the span, and leave the same column empty in the next n-1 rows.
Can I use multirow and multicolumn in one cell?
Yes. Nest multirow inside multicolumn, never the reverse.
How do I put the text in the bottom row of the span?
Give multirow a negative row count and place the command in the last row of the span.
Sources
- CTAN, multirow package page: ctan.org/pkg/multirow (read 2026-11-08).
- multirow README, v2.9: mirrors.ctan.org/…/multirow/README (read 2026-11-08).
- multirow source documentation: multirow.dtx (read 2026-11-08).







