Data format

NPY converter

An .npy file is a single NumPy array saved to disk: a short header describing the element type, the shape and the memory order, then the raw array bytes. It is deliberately the simplest thing that can round-trip an array exactly, and the specification fits on one page.

Private for supported formats — processed in your browser

Convert supported files

Runs on your device

Drop NPY files here

Batch files can each use a different output. Nothing uploads for local conversions.

Working inputs include camera RAW, browser-local audio/video, PDF, CBZ/CBR comics, office documents, ebooks, markup, 3D models, structured text, images, and archives.

Where NPY comes from

NumPy's developers introduced the format in 2007 (version 1.0 of the NPY specification) because the alternatives were all wrong for the job: pickle was insecure and Python-specific, raw binary lost the shape and dtype, and text lost precision and speed. Later revisions added a larger header for arrays with very many dimensions (2.0) and UTF-8 header encoding (3.0). The .npz variant is simply a ZIP of several .npy files.

How NPY works

  • The file begins with the magic byte 0x93 followed by 'NUMPY' and a two-byte version.
  • The header is a Python dictionary literal giving descr (the dtype), fortran_order and shape, and it must be padded so the array data starts on a 64-byte boundary — the alignment is what makes memory-mapped reads possible.
  • The dtype string carries endianness explicitly, so '<f8' is little-endian float64 and '>i4' is big-endian int32.
  • fortran_order distinguishes column-major from row-major storage; ignoring it transposes the array silently.
  • The data is the array's bytes verbatim, with no compression and no per-element framing.

When to use NPY

  • Saving model weights, embeddings or intermediate results between processing steps
  • Exchanging numeric arrays between machine-learning pipeline stages
  • Handing a numeric result to a colleague without CSV's rounding
  • Converting a stored array into CSV or a spreadsheet for inspection

Strengths and limitations

Strengths

  • Exact round trip: dtype, shape and byte order all survive
  • Loads far faster than text and can be memory-mapped
  • A tiny, stable, fully documented specification

Limitations

  • Uncompressed, so large arrays are large files
  • One array per file; anything more needs .npz
  • Carries no column names or units — the array is numbers with no meaning attached

Compatibility

NumPy reads and writes it natively, and independent readers exist for JavaScript, Rust, Go, C++, Java and Julia. Novus Convert decodes one- and two-dimensional numeric arrays locally with bounded shape and dtype validation, writing JSON, CSV or XLSX, and can also produce .npy from tabular input. Object-dtype arrays are refused outright, because loading one in NumPy requires pickle and therefore code execution.

The dtype, shape and storage order are read and reported; the format itself has no field-name or unit channel, so CSV and spreadsheet targets receive positional column headings.