Repair a damaged TDMS file

Read what is left after a crash and save a clean copy.

or drop it here. It never leaves your browser.

How it works
  1. Drop the damaged .tdms file above. It is read in this tab and never uploaded.
  2. The reader goes through the file and, at each damaged part, looks for the next valid segment and reads on. The warnings say which bytes were skipped.
  3. Check the curves, then save a repaired copy, or export the values to CSV or Parquet.

What comes back

  • A file cut short by a crash: every complete value up to the cut.
  • Damage in the middle, such as a lost disk sector: the segments after it, when they can be read with certainty. A segment found after damage is kept if it describes its channels itself, or if its size matches exactly the channels known before the damage. Otherwise it is skipped rather than attached to the wrong channel.
  • The repaired copy holds every group, channel and property, and the values read, in the plainest layout of the format: every segment describes its own data. The tests read it back with this reader and with npTDMS. The original file is only read, never changed.

What cannot come back

  • The values inside a damaged part: they are gone from the file.
  • The times after a damaged part. A waveform's time axis counts values from its start, and how many values the damaged part held is not known, so the values after it appear early by that duration. The viewer says so when it happens.
  • Values whose bytes changed while the structure around them stayed valid. TDMS has no checksum, so no reader can tell such values from good ones.
  • DAQmx raw data, which this reader does not decode.