.sav

SavForge

Loading engine — 15 MB, first visit only

Excel to SPSS, audited cell by cell before you ever download.

SavForge writes native .sav binaries with the ReadStat engine used across statistical software, then reopens its own output and reconciles every value, label and missing-value rule against your source. The file only ships when the ledger is clean.

How your data is handled
  • Processed entirely in this browser tab
  • Nothing uploaded, stored or logged
  • Unicode-safe, incl. Bengali (SPSS 21+)
  • Data and metadata verified before download
1

Load your file

Values are read as raw text first — leading zeros, ID codes and long numbers are never silently altered by type guessing.

Drop your Excel file here
.xlsx / .xls · or click to browse

Notes for SPSS users

Will the file open natively in SPSS?

Yes. Output is a native .sav binary written by SavForge's built-in engine, whose output is validated against pyreadstat/ReadStat — the reference implementation used by R's haven. Files open in SPSS, PSPP, R and Stata without import dialogs.

What counts as "verified"?

Numbers must match exactly (bit-level doubles), dates to the second, strings byte-for-byte after SPSS's trailing-space convention. Variable names, labels, value labels and user-missing definitions are also read back and compared. Any discrepancy withholds the download and is listed in the ledger.

Dates and Excel's quirks

Excel serial dates become true SPSS DATETIME variables (seconds since 14 Oct 1582), with Excel's fictitious 29 Feb 1900 handled by the parser rather than passed through.

Exporting .sav back to Excel

Reverse mode reads the .sav natively — no SPSS licence needed. Choose whether cells carry raw codes or their value labels, and whether headers use variable names or labels. The Codebook sheet preserves the full variable dictionary either way, and the exported .xlsx is reopened and reconciled before download just like forward conversion.

String limits

String variables support up to 255 bytes per cell in this version. Longer cells are flagged in the variable plan before conversion — nothing is truncated silently.