Neatbo.

Column correlation matrix

Compute Pearson or Spearman correlations from a complete CSV, preserving original labels, repeated selections, each pair’s effective N and status.

Browser-local processingInputUTF-8 CSVOutputCSV / JSON / SVGUp to 20 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

.csv · .tsv · .txt

Up to 20 MiB per file · File limit: 1

    Options

    Complete the required options first. You can keep the defaults for the rest.

    Comma-separated physical column numbers starting at 1, such as 1,2,3,1. Repeated choices retain distinct selection ordinals.

    Spearman computes average tie ranks separately within each pair-valid subset.

    Pairwise uses rows valid for that pair; listwise uses rows valid for every selected physical column.

    Duplicate or empty headers remain unchanged; no-header input receives labels such as column_1.

    One per line, case-sensitive after trimming. Empty cells are always missing.

    Preparing the tool…

    Before you start

    Select economic, social or other numeric variables by their physical column numbers. Preserve raw labels and repeated choices, compute every variable pair, and use N and status to explain unavailable cells. Pairwise and listwise deletion can produce different valid-row sets.

    How to use this tool

    1. Choose the complete UTF-8 file and check its delimiter and header setting.
    2. Enter physical column numbers, choose Pearson or Spearman, and declare deletion policy and exact missing markers.
    3. Inspect coefficients, N and statuses in the finite preview, then download the full matrix, effective N, status JSON, SVG, original, settings and license.

    Supported inputs and limits

    One nonempty UTF-8 CSV/TSV/TXT file: at most 20 MiB, 50,000 data rows and 2,000,000 cells including a header when present. Rows must have equal width; UTF-8 BOM, quotes and quoted line breaks are supported.

    Select 1–64 ordinals, including repeats. Selected nonmissing cells must be finite binary64 numbers in decimal or scientific notation. Other text, infinity and source underflow refuse the whole task. Original numeric strings and unselected columns remain complete.

    Up to 20 missing markers, 100 characters each and 2,048 characters overall. Fewer than two valid rows or constant columns produce a null coefficient and explicit status, as do detected arithmetic underflow, lost distinctions or nonfinite intermediates. Only an excess beyond ±1 within 32 Number.EPSILON is corrected and recorded.

    Joint budgets: at most 100,000,000 pair-row work units and 20,000,000 actual sort comparisons; files plus full text 32 MiB, compact typed JSON 16 MiB, their aggregate 48 MiB, binary plus metadata transport 64 MiB and conservative estimated memory 512 MiB. Axis ceilings do not promise simultaneous maximum capacity.

    A 30-second absolute deadline covers native file validation, reading, Worker loading, calculation, full-result validation, cleanup and first UI publication after await. Failure or cancellation publishes no partial result. The view shows at most 10×10 cells and 120 characters per label; downloads retain every cell and full label.

    Worked example

    Example input

    Age_55_64,GDP,Age_55_64,Constant,Few,Note
    1,10,7,5,NA,alpha
    2,20,7,5,NA,beta
    2,NA,8,5,NA,"quoted, note"
    4,40,8,5,NA,γ
    NA,50,9,5,NA,missing
    6,60,10,5,12,tail
    
    Example options
    {"columns": "1,2,3,1", "method": "pearson", "deletion": "pairwise", "delimiter": ",", "headerMode": "first-row", "missingMarkers": "NA"}

    Example output

    ,Age_55_64,GDP,Age_55_64,Age_55_64
    Age_55_64,0.9999999999999999,1,0.9185586535436918,0.9999999999999999
    GDP,1,1,0.961644737891902,1
    Age_55_64,0.9185586535436918,0.961644737891902,0.9999999999999998,0.9185586535436918
    Age_55_64,0.9999999999999999,1,0.9185586535436918,0.9999999999999999
    

    When something does not work

    Check UTF-8, quotes, delimiter, row widths and column numbers. Correct invalid numeric tokens or declare exact missing markers. If a joint budget or deadline refuses the task, reduce rows or selections and start again with the original file and settings.

    Frequently asked questions

    Are duplicate headers or repeated selections merged?

    No. Axis labels retain the raw headers. JSON records the zero-based physical column index, one-based column number and selection ordinal, so matching labels remain distinguishable.

    How does pairwise Spearman handle missing data?

    It first filters rows valid for both variables, then computes each variable’s average tie ranks within that subset. Different pairs can use different rows and N.

    Does an empty coefficient mean zero correlation?

    No. Null accompanies a constant, insufficient or numerical status. A zero coefficient is a valid number. Inspect N and status; complete raw records, validity masks and policy recover each pair’s row membership.

    Does the example reproduce the original author’s numbers?

    No. The saved source contains no complete numeric CSV or matrix. This page uses a verified synthetic fixture. The original label question was resolved in R; Spearman, N, status and SVG are extensions in this tool.

    Documentation & further reading

    Related tools