# Changing the font size in a table

What's the recommend way of changing the font size in a particular table? Is there a better way than enclosing all values with, for example, the \tiny function.

• Please also consider the usage of \scalebox{}{} of the graphicx package as mentioned here: tex.stackexchange.com/a/56035/92521 Apr 6, 2016 at 10:09

Scale down your table to the textwidth

\documentclass{article}
\usepackage{graphicx}
\begin{document}

\begin{table}
\resizebox{\textwidth}{!}{%
\begin{tabular}{cc}
Knuth & Lamport
\end{tabular}}
\end{table}

\end{document}


then you have the optimal font size. However, all tabular lines are also scaled down which doesn't matter because it looks nicer.

• use a tabularx with X columns
– user2478
Aug 9, 2013 at 20:50
• I must report that with XeLaTeX it does work, but with LuaLaTeX does not. Feb 10, 2016 at 6:45
• It was not stated but the caption, \caption{demo table}, and label, \label{tab:demo}, go outside of the \resizebox area. Feb 1, 2017 at 19:09
• I have a table in landscape \begin{landscape}. When I used \textwidth for defining the width of the resized box, the resulting box had the width of the text of a portrait oriented page. For anybody having the same problem, use\linewidth instead of \textwidth, it solved the problem in my case. Source: tex.stackexchange.com/a/7686/118906 Apr 26, 2017 at 13:14
• Never use \resizebox with tables. If used on multiple tables with different number of columns, it will yield a different font size for each table in the document. It will be ugly. Aug 27, 2020 at 10:15

Write \tiny immediately after \begin{table}. If you don't use a (floating) table environment, enclose your (e.g.) tabular environment in a group and write \tiny after \begingroup.

\documentclass{article}

\begin{document}

\begin{table}
\tiny
\centering
\begin{tabular}{cc}
Knuth & Lamport
\end{tabular}
\end{table}

\end{document}


EDIT: To change the fontsize for all tables (or even floats of every type), one may use the floatrow package (this also saves typing \centering in every table):

\documentclass{article}

\usepackage{floatrow}
\DeclareFloatFont{tiny}{\tiny}% "scriptsize" is defined by floatrow, "tiny" not
\floatsetup[table]{font=tiny}

\begin{document}

\begin{table}
\begin{tabular}{cc}
Knuth & Lamport
\end{tabular}
\end{table}

\end{document}

• Just one quick additional remark: whenever your figure/table has a caption, be sure to change the font size only after you've specified the caption. This is particularly important if you're specifying tiny or scriptsize for the font size.
– Mico
Aug 31, 2011 at 17:26
• Anyway to specify font sizes between \tiny and \small? \tiny is too small for me to read and \small is the same as normal font size Aug 13, 2013 at 0:16
• @sphere How about \footnotesize? Aug 13, 2013 at 6:53
• Dredging up the past... @Mico, I don't see this behaviour at all. None of my captions (specified with \caption) are affected in any way with a fontsize declaration before them inside a table environment. Jan 21, 2014 at 23:21

An easier way to change the font size for ALL tables:

\usepackage{etoolbox}

\AtBeginEnvironment{tabular}{\tiny}

• Very, very dangerous. A tabular may be hidden in places you do not suspect. For example in \maketitle. Dec 2, 2020 at 15:00
• I tried but didn't find any differences using \maketitle. If it happens, we should set a particular font size for any special tables. Dec 16, 2020 at 16:35
• That was just an example; not every class defines \maketitle using a tabular but some do (e.g. the standard classes for the author). My point is that there might be a tabular hidden somewhere where you do not expect it, and changing the default behaviour of tabular might have unforeseeable consequences. So I stand by my opinion that this is dangerous. (I haven't said "bad" or "wrong". Just dangerous.) Dec 16, 2020 at 16:45