CSV Pivot Workbench

CSV Pivot Workbench

Summarize CSV by row and column groups. Every subtotal and grand total is computed from source records.

Input: 1 MiB, 5,000 rows, 32 columns and 100,000 cells. Detail groups: 250 row groups and 30 column groups. Including totals: 750 rows, 61 columns and 20,000 cells.

The first record contains column names. Leading and trailing header whitespace is removed; empty or duplicate names are rejected. Quoted delimiters, line breaks and doubled quotes are supported. Data stays as original text, and only completely blank records are skipped.

Paste CSV or select a file to begin.

Downloads use UTF-8 with a BOM, commas and CRLF. An apostrophe is added to text that could be interpreted as a spreadsheet formula, including leading =, +, - or @. On-screen source values are unchanged. Check spreadsheet interpretation again if you edit or resave the file.

How each aggregate is calculated

AggregateCalculation applied to source records
SumSum of valid numeric values, excluding blanks
Record countNumber of source data rows, including blank and text values
AverageSum of valid numbers divided by their count
MinimumSmallest valid numeric value
MaximumLargest valid numeric value

Comments & questions

CSV Pivot Workbench

Turn a long CSV table into grouped row and column summaries. Choose up to three row dimensions and two column dimensions, then calculate a sum, record count, average, minimum or maximum. Hierarchical subtotals and the grand total use the original records, with explicit counts for empty and skipped values.

Key features

  • One to three row dimensions and zero to two column dimensions
  • Sum, record count, average, minimum and maximum
  • Row/column subtotals and grand totals computed from source records
  • Explicit blank-value handling and error-or-skip policy for invalid numbers
  • Visible aggregation definition and processing counts
  • 50-row table pages and CSV headers that identify aggregation settings

How to use

  1. Paste CSV with headers or choose a UTF-8 file.
  2. Select the delimiter and read the CSV columns.
  3. Choose ordered row dimensions and add any column dimensions you need.
  4. Select the aggregate, numeric column, invalid-number policy and subtotal display.
  5. Build the pivot, check its definition and grand total, then save CSV.

Use cases

  • Compare regional and team sales with quarters across columns
  • Count records by task status and owner
  • Summarize measurements using grouped averages, minima or maxima
  • Compare detail groups and subtotals against the source grand total

Frequently asked questions

How do dimensions differ from the numeric column?

Dimensions group records with identical text values. Choose one to three row dimensions and zero to two column dimensions without reusing a dimension column. The numeric column supplies values for sum, average, minimum and maximum. Record count ignores the numeric column and counts every source record.

How are subtotals and overall averages calculated?

They aggregate the original numeric records within each parent group. A group containing 10 and 20, and another containing 100, have an overall average of 130/3, not the average of the two group means, 57.5. Hiding subtotals does not remove the grand total.

What happens to blanks and invalid numbers?

Empty dimension values remain a separate group. Empty or whitespace-only numeric values are excluded from sum, average, minimum and maximum; zero is included. Invalid numbers return an error with a source record number unless you choose to skip them, in which case their count is reported. An intersection with no numeric values shows a dash, or zero for record count.

What numeric formats and precision are supported?

Decimals, signs and exponent notation are supported; currency symbols and grouping commas are not. Calculations use JavaScript binary floating point, not arbitrary precision. Nonfinite values, absolute values above 9,007,199,254,740,991 and nonzero values too small to represent are rejected. The screen shows 12 significant digits; CSV uses the internal number’s default string representation.

How are groups represented in the table and CSV?

Detail groups follow their first-seen hierarchical order, with each parent subtotal after its children. CSV uses row_kind to distinguish detail, subtotal and grand-total rows, and stores row dimensions in separate columns. Value headers identify the aggregate, numeric column, column-dimension tuple and subtotal status. Empty strings are preserved distinctly from literal group names.

Can it handle a large CSV?

Input is limited to 1 MiB, 5,000 data rows, 32 columns and 100,000 cells. Pivots allow 250 detail row groups and 30 detail column groups, with at most 750 rows, 61 columns and 20,000 cells including totals. Exceeding a cap returns an error rather than dropping groups. Cancel or Esc stops the calculation; changing settings clears the old result.

Privacy

CSV contents, chosen dimensions, numeric settings and results are processed in this page’s browser memory. This tool does not automatically send inputs to a server, URL, analytics event or browser storage. Saving CSV requires your action. Changing inputs or settings, or leaving the page, discards the previous result.

Related Tools

CSV Table JoinJSON ↔ CSVMock Data GeneratorWasm Module InspectorHreflang Matrix CheckerAST Query PlaygroundContainer Build GraphDependency Graph ExplorerSemver Range LabCron Schedule AuditorPatch Review WorkbenchSource Map ExplorerLocalization Catalog AuditorStructured Data ReviewerHTTP Archive AnalyzerWebhook Signature LabProtobuf Schema WorkbenchGraphQL Schema LabAvro Schema EvolutionLocal SQL WorkbenchSchema Form BuilderMesh Repair WorkbenchPipe Network LabRobot Arm Kinematics LabThermal Network LabBeam Response LabGear Train DesignerTolerance Stackup LabSensor Calibration FitPCB Stackup PlannerDigital Filter DesignerNetwork Reachability MapSun Shadow MapGPS Error SimulatorDigital Logic SimulatorAnalog Circuit LabMechanism Linkage LabAnalysis Mesh GeneratorOpenAPI Contract InspectorDatabase Migration PlannerDimensional Equation CheckerTruss Force LabBoolean Minimization LabControl Response LabQueueing Simulation LabGeofence Event SimulatorCoordinate Reference LabSurvey Traverse LabRaster Classification LabChoropleth Design LabMap Print ComposerRaster Reprojection LabElevation Contour MakerTerrain Viewshed LabWatershed DelineatorMap Tile PackagerText File Encoding WorkbenchFilesystem Portability AuditorSBOM License ExplorerFile Signature Auditornpm Lockfile Conflict ResolverSource Secret AuditorOffline Web Package BuilderCertificate Chain InspectorTorrent Metainfo InspectorChunked File PackagerEncrypted File VaultDuplicate File FinderArchive WorkbenchDesign Token ManagerSpacing Token DesignerResponsive Type SystemPackaging Dieline DesignerSVG Icon Sprite PackerFlex Layout PlaygroundCSS Grid PlaygroundRegex Equivalence LabMarkdown Repository AuditorLog Template MinerResponsive Layout AuditorEmail Template PreviewInternal Link GraphState Machine TesterPetri Net SimulatorGit History VisualizerCurl Request WorkbenchBinary Protocol DesignerHex File EditorBinary Patch WorkbenchFile Signature WorkbenchAPI Mock SandboxSchema Column MapperEvent Log SessionizerER Diagram DesignerTime Series Gap AuditorStratified Data SplitterData Lineage DesignerDecision Tree LabData Anonymization WorkbenchData Expectation RunnerJSON Schema ValidatorBasket Pattern AnalyzerRobots Policy TesterSEO HTML AuditorAccessibility Structure AuditorSyndication Feed WorkbenchIndexNow Payload BuilderCrawl Log AnalyzerCSP Policy WorkbenchSearch Performance AnalyzerCSV Formula Risk AuditorCORS Response SimulatorCache Header LabCookie Policy InspectorWeb Vitals Trace LabSitemap Health AuditorBatch File RenamerFile Manifest VerifierFolder Space MapFolder Difference ReviewerRoute Order OptimizerGeoJSON Map EditorPolygon Overlay LabCartographic Label PlacerSpatial Table JoinGeoJSON Topology AuditorGPX Track AnalyzerTrack Privacy RedactorScientific Data ProfilerTabular Cleaning WorkbenchRecord ReconciliationData Dictionary BuilderCanonical Graph AuditorRedirect Plan TesterHTTP response and ping reference testBrowser and System InformationJSON ↔ YAML ConverterXML ↔ JSON ConverterHTML FormatterJavaScript Minifier.gitignore GeneratorLicense GeneratorUser-Agent ParserPassword Strength CheckerCode to ImageXML FormatterHTTP Status Code LookupMIME Type LookupJS & SQL String EscapeCSS Box Shadow GeneratorCSS Gradient GeneratorIndent ConverterNumber Base ConverterUnicode Escape ConverterUnicode InspectorJSON Structure DiffMarkdown Table GeneratorBase64 EncoderJSON FormatterURL EncoderSQL FormatterCron Expression GeneratorRegex TesterUUID GeneratorHash GeneratorTimestamp ConverterJWT DecoderHTML Entity ConverterMarkdown PreviewCSS MinifierMeta Tag GeneratorCase ConverterImage to Base64
Explore all Dev Tools tools →Image/Media →Text/Convert →Life/Fun →