Pivot Table Builder

Group a CSV by one column and sum, average, count, or take the smallest or largest value of another.

Files stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Build pivot controls

Drop your CSV file here

or choose one from your device

One CSV file, up to 5 MB, 50,000 rows and 60 columns. The first row is the column names.

    The column whose values become the rows.

    Optional. The column whose values become the columns. Leave empty for a single column.

    The number to add up. Not needed for Count of rows.

    Optional. Keep only the rows whose value in this column matches the filter value.

    The exact text to keep in the filter field, without regard to case.

    How to use Pivot Table Builder

    1. Drop one CSV file whose first row holds the column names.
    2. Name the row field and, if you want columns, the column field. Choose the value field and the aggregate that should run on it.
    3. Add a filter if you only want part of the file, then download the pivoted CSV.

    Example: Pivot Table Builder

    Total the amount per team for each month.

    You add
    CSV file: team,month,amount with rows A/Jan/10, B/Jan/20, A/Feb/30. Row field: team. Column field: month. Value field: amount. Aggregate: Sum. Filter field: empty.
    You get
    The summary reads Sum of "amount" grouped by "team" across "month". The table has 2 rows and 2 columns from 3 of 3 data rows. The preview shows A with 10 in Jan and 30 in Feb, and B with 20 in Jan. The download teams-pivot.csv contains team,Jan,Feb on the first line, then A,10,30, then B,20,.

    Supported inputs and limits

    One CSV file up to 5 MB, 50,000 data rows, 60 columns and 4,096 characters per cell. The file must be UTF-8, and its first row must name each column once. An unclosed quote, a row with a different number of values, a repeated column name or a file that is not UTF-8 text is reported instead of being guessed at. The pivot itself is capped at 200 rows and 60 columns, so a wider result asks you to filter it first. Count works on any column; sum, average, min and max need a plain decimal number in every kept row of the value column, so 1,200, 1e308, a date or a unit is refused rather than read as a number. Numbers are standard doubles, a whole number past 9,007,199,254,740,991 is refused, and aggregate results are rounded to six decimals before they are written. The filter matches the text without regard to case. Row and column keys keep the order they first appear. The CSV download prefixes a leading =, +, - or @ with an apostrophe and quotes a cell that holds a comma or a line break. The file is read in your browser and is not uploaded.

    Where your input is processed

    This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

    What a pivot does to your column names

    The row field becomes the first column of the result and each distinct value of the column field becomes its own column heading. A combination with no rows is left empty rather than filled with a zero, so a missing group is visible at a glance. If you need a blank shown as 0, replace it in the spreadsheet after the download.

    Questions about Pivot Table Builder

    Why is a cell in the value column refused?

    Sum, average, min and max need a plain decimal number in every row that survives the filter. A value such as 1,200, 12 kg or 2026-09-30 is not one, so the tool names the row and column instead of dropping the cell or reading part of it. Totals are rounded to six decimals, and a whole number past 9,007,199,254,740,991 is refused because JavaScript cannot hold it exactly.

    How do I count rows instead of adding a value up?

    Choose Count of rows and leave the value field as it is. Count does not read the value column, so a text column still works, and each cell shows how many rows fall in that group.

    What order do the rows and columns come out in?

    They keep the order the values first appear in the file, so the same CSV always produces the same table. Re-sort the input if you want a different order; the tool does not sort keys for you.

    Will my spreadsheet run a value as a formula?

    The download prefixes a leading =, +, - or @ with an apostrophe and quotes any cell that holds a comma or a line break. That keeps text such as =cmd as text when the CSV is opened. Check the first few cells if a column mixes numbers and text.

    Project manager: Tony Hines · Content updated 1 October 2026 · Report a problem