How to Make a Header Row in Google Sheets

To make a header row in Google Sheets, type a label for each column in row 1, then click View > Freeze > 1 row. Row 1 now stays at the top of the sheet while you scroll. Bold the labels so they stand out, check Data has header row when you sort, and turn on Repeat frozen rows when you print.

A header row is the first row of a list, where each cell names the column below it, such as Name, Email, and Date. Google Sheets has no single “make this a header” button. Freezing the row, which means pinning it in place, is what makes it behave like one. The steps below follow Google’s own help pages, starting with Freeze, group, hide, or merge rows & columns.

Before You Start

  • Where this works: The main steps are for Google Sheets in a web browser on a computer. The Android and iPhone or iPad apps can freeze a row too, and those steps have their own section below.
  • Permission: You need to be able to edit the spreadsheet. If you can only view or comment, ask the owner for edit access.
  • Who sees it: A frozen row is part of the sheet, so other people who open the spreadsheet see it as well.
  • One header per sheet: Freezing applies to the sheet (tab) you are on. Repeat the steps on each tab that needs a header.

How to Make a Header Row on a Computer

  1. Open your spreadsheet in Google Sheets.
  2. Click cell A1 and type the label for the first column. Press Tab to move to B1 and type the next label. Keep going until every column that holds data has a label.
  3. Click the 1 at the left edge of the sheet to select the whole row.
  4. Click Bold in the toolbar. If you like, add a fill color as well. Here is how to add or remove fill color in Google Sheets. A bottom border in Google Sheets also helps separate the header from the data.
  5. With row 1 still selected, click View at the top of the window, then Freeze.
  6. Choose 1 row.
Google Sheets View menu with Freeze expanded and 1 row highlighted
With the bold header row selected, choose View > Freeze > 1 row.

A thicker line appears under row 1. Scroll down and the labels stay where they are while the rest of the rows move underneath them. That is how you confirm it worked.

If a label sits on the left while the numbers below it sit on the right, you can left align the numbers in that column or right align the label so they match.

How to make a header row in Google Sheets
Illustration: how to make a header row in Google Sheets.

How to Undo It

Click View > Freeze > No rows. The row unfreezes, but your labels and formatting stay. Nothing is deleted by freezing or unfreezing.

If you also want the header’s bold text or colors gone, you can clear formatting in Google Sheets for that row.

If Your Data Already Starts in Row 1

You need an empty row at the top before you can type labels. Google’s Add or move columns & cells page gives the steps.

  1. Right-click the 1 at the left edge of the sheet.
  2. Choose Insert 1 row above.
  3. Type your labels in the new, empty row 1.
  4. Freeze the row with View > Freeze > 1 row.

Your existing data moves down one row, and formulas that point at it adjust on their own. The other insert options are covered in inserting rows and columns in Google Sheets.

Freeze a Header Row on Android, iPhone, or iPad

The Google Sheets app uses a touch menu instead of the View menu.

  • Android: Open the spreadsheet in the Google Sheets app. Touch and hold the row, then tap Freeze in the menu that appears.
  • iPhone or iPad: Open the spreadsheet in the Google Sheets app. Tap the row number, tap the right arrow in the menu that appears, then tap Freeze.

To undo it, open the same menu and tap Unfreeze. If you do not see Freeze right away, look for an arrow or a three-dot button in that menu, since the menu can change between app versions.

Freeze More Than One Row, or a Column

Some sheets have a title in row 1 and the column labels in row 2. In that case, click a cell in row 2, click View > Freeze, and pick the option that covers both rows. The same menu also freezes columns, which keeps something like a list of names in column A visible while you scroll to the right.

Freeze only what you need. Every frozen row takes space away from the part of the sheet that scrolls, and on a small window a large frozen area can leave almost no room to work. The drag method and common fixes are covered in freezing columns (or rows) in Google Sheets.

Sort Without Moving the Header

A plain sort treats row 1 like any other row, so your labels can end up in the middle of the list. Google’s Sort & filter your data page gives this order:

  1. Freeze the header row first.
  2. Highlight the cells you want to sort.
  3. Click Data > Sort range > Advanced range sorting options.
  4. Check Data has header row. The column list now shows your labels instead of column letters.
  5. Pick the column to sort by and the order. To sort by a second column, click Add another sort column.
  6. Click Sort.

The rows are rearranged, and the header stays in row 1. If the result is not what you wanted, press Ctrl + Z (Command + Z on a Mac) right away to undo it.

How to use a header row for sorting, printing, and tables in Google Sheets
Illustration: how to use a header row for sorting, printing, and tables in Google Sheets.

Add Filter Buttons to the Header

A filter puts a small button in each header cell, so you can hide the rows you do not need or sort from the header itself.

  1. Select your data, including the header row.
  2. Click Data > Create a filter.
  3. Click the filter button in a header cell and choose Filter by values or Filter by condition.

Keep in mind that anyone with access to the spreadsheet sees the filter you add, and anyone who can edit can change it. To take it off, click Data > Remove filter. The full steps are in creating a filter in Google Sheets.

Print the Header on Every Page

On a long printout, only the first page shows the labels unless you tell Sheets to repeat them. This setting only works with frozen rows, so freeze the header first. The steps are on Google’s Print from Google Sheets page.

  1. Freeze the header row if you have not already.
  2. Click File > Print.
  3. Click Headers & footers.
  4. Choose Repeat frozen rows.
  5. Check the preview. The header should now be at the top of each page.
  6. Click Next to continue to printing.

The same section can repeat frozen columns across pages too. In Chrome a print window opens. In Firefox or Safari, a PDF downloads instead, and you print it from your PDF viewer. More print settings are covered in printing a Google Sheet on one page.

The same settings apply when you save a Google Sheet as a PDF with File > Download.

Header Row vs. Page Header

These two are easy to mix up. A header row lives in the sheet and labels your columns. A page header is text that only appears on paper, at the top of each printed page. You set it in the same Headers & footers section of the print settings, which offers page numbers, the workbook title, the sheet name, and the current date and time. To change the wording or position, click Edit custom fields, make your changes, and click Confirm.

Comparison of a header row and a printed page header in Google Sheets
Illustration: a header row labels the columns in the sheet, while a page header is text printed at the top of each page.

Google Docs uses page headers as well, and adding a header in Google Docs walks through it.

Use a Table Instead

If you want the header styled for you, convert the list to a table. Google’s Use tables in Google Sheets page describes it.

  1. Select your data, including the row of labels.
  2. Click Format > Convert to table.
  3. Pick a column type for each column if Sheets asks.

Sheets applies basic formatting automatically and names the table and each column header. To recolor the header, click the table menu next to the table name and choose Table header color. You can also use the names in formulas, such as =SUM(DeptSales[Sales Amount]). To go back, open the table menu and choose Revert to unformatted data, which removes the table style and keeps the data. Avoid Delete table unless you mean it, because that option removes the table and its data.

Tips for a Header That Works Well

  • Use one row and one label per column. Sorting and filters read the header one column at a time.
  • Make each label different. Two columns both called “Amount” are hard to tell apart in the sort list and in formulas.
  • Do not leave blank rows above the header. If there is a title above it, freeze both rows.
  • Be careful with merged cells. A merged cell stretches across several columns, which can get in the way when you sort or filter. A separate label in each column is safer. Splitting one back apart is part of merging and unmerging cells in Google Sheets.
  • Wrap long labels. A long label can be cut off by the next column. Here is how to change text wrapping in Google Sheets so it fits on two lines.

Troubleshooting

The header still scrolls away

The row is not frozen on this tab. Each sheet in a spreadsheet has its own freeze setting. Click View > Freeze > 1 row on the tab you are looking at.

The wrong rows are frozen

Click View > Freeze > No rows to clear it, then freeze again and choose 1 row.

You cannot freeze or type in row 1

You may have view-only or comment-only access, or the owner may have protected the sheet or that range. Ask the owner for edit access.

Repeat frozen rows does nothing

That print option only repeats rows that are frozen. Close the print settings, freeze the header, and open File > Print again.

The sheet will not scroll

Too many rows may be frozen for the size of your window. Click View > Freeze > No rows, then freeze only the header.

If the View menu is missing from the top of the sheet, bring back the hidden menus in Google Sheets first.

Frequently Asked Questions

Is there a “header row” setting in Google Sheets?

Not a single one. In a regular sheet you type labels in row 1 and freeze it with View > Freeze > 1 row. The closest thing to a built-in header is a table, which you make with Format > Convert to table.

Why does my header row get sorted with my data?

Sorting a range without Data has header row checked treats row 1 like any other row. Freeze the header, then sort with Data > Sort range > Advanced range sorting options and check that box.

Can the header be a row other than row 1?

Yes. Freeze every row down to the one with your labels, for example rows 1 and 2 when row 1 holds a title. A frozen area always starts at the top of the sheet, so you cannot freeze only a row in the middle.

Does freezing a row change my data?

No. Freezing only changes how the sheet scrolls. Choosing No rows in the Freeze menu puts it back.

Will other people see my frozen header?

Yes. The frozen row is saved with the sheet, so it shows for everyone who opens the spreadsheet. To make the labels easier for them to read, you can also make the font bigger in Google Sheets.

Next Step

Once the header is frozen, try a sort with Data has header row checked to see it stay in place. A sheet you plan to put on a website can be embedded in WordPress.