Need help with dcmjs?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

184 Stars 65 Forks MIT License 488 Commits 46 Opened issues


Javascript implementation of DICOM manipulation

Services available


Need anything else?

Contributors list


JavaScript implementation of DICOM manipulation. This code is an outgrowth of several efforts to implement web applications for medical imaging.


Note: this code is a work-in-progress and should not be used for production or clinical purposes

See live examples here


Overall the code should:

  • Support reading and writing of correct DICOM objects in JavaScript for browser or node environments
  • Provide a programmer-friendly JavaScript environment for using and manipulating DICOM objects
  • Include a set of useful demos to encourage correct usage of dcmjs and modern DICOM objects
  • Encourage correct referencing of instances and composite context when creating derived objects
  • Current target is modern web browsers, but a set of node-based utilities also makes sense someday

Architectural goals include:

  • Use modern JavaScript programming methods (currently ES6) but avoid heavy frameworks
  • Leverage modern DICOM standards but avoid legacy parts
  • Support straightforward integration with multiple JavaScript deployment targets (browser, node, etc) and frameworks.

Parts of DICOM that dcmjs will focus on:

  • Enhanced Multiframe Images
  • Segmentation Objects
  • Parametric Maps
  • Structured Reports

Parts of DICOM that dcmjs will not focus on:

  • DIMSE (legacy networking like C-FIND, C-MOVE, etc). See the dicom-dimse project for that.
  • Physical Media (optical disks). See this FAQ if you need to work with those.


In Browser

In Node

// To install latest _stable_ release
npm install --save dcmjs

// To install latest code merged to master npm install --save [email protected]

For Developers

git clone
cd dcmjs
npm install
npm run build
npm test

For Maintainers

Publish new version automatically from commit:

Use the following "Commit Message Format" when drafting commit messages. If you're merging a 3rd party's PR, you have the ability to override the supplied commit messages by doing a "Squash & Merge":

Note: Be wary of

in commit message descriptions, as this can force a major version bump.

Be sure to use lower case for the first letter of your semantic commit message, so use

. It is advised to use the git-cz, i.e.:
  • install git-cz
npm install -g git-cz
  • how to commit
git-cz --non-interactive --type=fix --subject="commit message"

More info at git-cz.

Note: a new package version will be published only if the commit comes from a PR.

Community Participation

Use this repository's issues page to report any bugs. Please follow SSCCE guidelines when submitting issues.

Use github pull requests to make contributions.


Currently dcmjs is an early-stage development experiment, but already has valuable functionality.


  • Bidirectional conversion to and from part 10 binary DICOM and DICOM standard JSON encoding (as in DICOMweb)
  • Bidirectional convertion to and from DICOM standard JSON and a programmer-friendly high-level version (high-level form is called the "naturalized" form in the code).

In development

  • Creation of (correct) enhanced multiframe DICOM objects from legacy image objects
  • Creation of (correct) derived DICOM objects such as Segmentations and Structured Reports


  • Create a test suite of input and output DICOM objects
  • Test interoperability with other DICOM implementations
  • Add documentation



The developers gratefully acknowledge their research support:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.