Local utility · v1
XPT ⇄ CSV Converter
Read and write real SAS XPORT V5 files in your browser. Inspect metadata and preserve a sidecar schema for CSV round trips.
ASCII subset only. 20 MiB/file, 100,000 rows/dataset, 256 variables, 32 datasets. No upload, telemetry or persistent storage. Independent review required.
Verified subset: independent R haven checks cover values, ordinary and tagged missing values, labels and formats; R foreign checks multi-dataset output. These fixtures do not establish compatibility with every SAS file. Legacy 136-byte descriptors have only a spec-derived pandas check. V5 cannot always reveal whole-record truncation.
Choose an XPT or CSV file, or try the example.
1. Read XPT
2. CSV to XPT
New CSV columns default to character. Configure numeric types explicitly. Dates stay raw SAS numbers; formats are metadata, not applied values.
3. Inspect and download
No dataset loaded.
Support, missing values and limitations
V5 136/140-byte NAMESTR reading; 140-byte writing. Numeric read lengths 2–8; writing requires length 8. Names: 1–8 letters/digits/underscore, starting with letter/underscore. Character length 1–200, labels ≤40 and format names ≤8 bytes. Non-ASCII, V8/V9, CPORT, precision beyond 53 significant bits, invalid structures and ambiguous all-character tails are rejected.
Empty numeric CSV fields represent ordinary SAS missing. Tokens .A–.Z and ._ retain special missing values; they are never collapsed to ordinary missing. Character empty strings represent blank SAS values. XPT character padding is removed on reading; writing strings with trailing spaces is rejected. CSV decimal numbers use JavaScript IEEE-754 precision. Shortened numeric storage must be explicitly changed to 8 before XPT re-export. Format/informat names and attributes are retained; format catalogs, indexes and sort metadata are not supported. CSV alone loses this metadata: always download the sidecar.
V5 has no row count: a tail whose row count is ambiguous is rejected. No silent truncation. Blank padding and special missing values follow the SAS official format specification (v3.0, October 2021), retrieved 2026-09-09.