Parse and convert JCAMP data

Usage no npm install needed!

<script type="module">
  import jcampconverter from 'https://cdn.skypack.dev/jcampconverter';


JCAMP converter

Parse and convert JCAMP data

Zakodium logo

Maintained by Zakodium

NPM version build status Test coverage npm download DOI


Node JS

npm install jcampconverter


bower install jcampconverter


convert(jcamp, [options])

Converts the jcamp using options.
Returns an object with information about the converted file and uncompressed spectra data.


  • jcamp - String or ArrayBuffer containing the JCAMP data
  • options - Object with options to pass to the converter


  • keepRecordsRegExp - regexp to select which records should be placed in the info field. By default: :/^$/} (nothing is kept)
  • withoutXY - do not parse XYDATA or PEAKTABLE fields. Useful to only extract metadata fields (combine this option with keepRecordsRegExp)
  • chromatogram - use the new GC/MS data format output (default: false)
  • canonicDataLabels - canonize data labels (uppercase) (default: true).
  • canonicMetadataLabels - canonize data labels (uppercase) (default: false).
  • dynamicTyping - When parsing field convert to number if a number (default: true)

2D NMR options:

  • noContour - if true, the contour levels will not be generated. Instead the raw data will be available in result.minMax.z (default: false)
  • nbContourLevels - number of contour levels to use in each positive and negative sides (default: 7)
  • noiseMultiplier - default: 5
  • keepSpectra - Generate array for 2D NMR spectra (default: false)

Use as a module


var converter = require('jcampconverter');
var jcamp = require('fs').readFileSync('path/to/jcamp.dx', 'utf8');

var result = converter.convert(jcamp);

// if there is only one spectrum it will be in

// the converter will also keep the full jcamp tree

Testing and build

npm install
npm test
npm run build


npm run benchmark