Skip to content
Go to file


Failed to load latest commit information.
Latest commit message
Commit time



JS9: astronomical image display everywhere


What does it do?

  • display FITS images, binary tables, data cubes, and multi-extension files
  • colormaps, scaling, pan, zoom, binning, blending, print, export ...
  • region support: create, manipulate, import, export, ...
  • drag and drop images, regions, catalogs
  • server-side and local analysis using the JS9 public API
  • control JS9 using scripts from the Linux shell or Python
  • runs on Macs, Linux, Windows, iPads, iPhones, ...
  • runs as a Desktop app in all modern browsers
  • utilizes WebAssembly (FITS processing at near native speed!)

How can I try it out?

Go to JS9 web site and drag a FITS data file onto the JS9 display:

You can even specify a remote FITS file and associated image display parameters as part of the URL:

The JS9 web site also contains on-line documentation, demos, and release downloads.

To install or not to install ...

For many users, there is no need to install JS9: simply use the JS9 web site to display your data. You can even upload your FITS files to the web site and run our server-side analysis.

Installing JS9 allows you to create your own web pages, tailor site parameters, and add your own local and server-based analysis tasks. Grab the latest version from JS9 on GitHub:

git clone

Load a local page into your browser:


(NB: Chrome needs to run with the --allow-file-access-from-files switch to use the file URI.)

For Desktop use, install Electron.js and use the js9 script to start the Desktop app and load an image:

js9 -a ~/data/m13.fits

For more advanced support (web-based support, support for handling large files), build the JS9 helper and install JS9 in a web directory:

# configure location to install the JS9 web files,
# where to find cfitsio library and include files,
# where to install programs and scripts,
# what sort of helper to build:
./configure --with-webdir=[path_to_web_install] \
            --with-cfitsio=[path_to_cfitsio]    \
            --prefix=[path_to_prog_install]     \

# the usual ...
make install

# start helper
cd path_to_web_install
# in the bash shell:
node js9Helper.js 1>~/logs/js9node.log 2>&1 &
# or, in the tcsh shell:
node js9Helper.js >& ~/logs/js9node.log &

What about scripting?

The js9 script allows you to control a JS9 web page from the Linux command line using the JS9 Public API (scripting requires installation of JS9 and either node.js or Electron.js):

js9 Load chandra.fits '{"scale":"log","colormap":"red","contrast":5.78,"bias":0.15}'
js9 Load spitzer.fits '{"scale":"log","colormap":"blue","contrast":6.3,"bias":0.54}'
js9 ReprojectData chandra.fits

Python users can install pyjs9:

git clone
import pyjs9
j = pyjs9.JS9()
j.Load('chandra.fits', '{"scale":"log","colormap":"red","contrast":5.78,"bias":0.15}')
j.Load('spitzer.fits', '{"scale":"log","colormap":"blue","contrast":6.3,"bias":0.54}')

What's the license?

JS9 is distributed under the terms of The MIT License.

What's the release history?

DOI v3.1.0   (09/08/2020)

DOI v3.0.0   (01/06/2020)

DOI v2.5.0   (08/30/2019)

DOI v2.4.0   (07/15/2019)

DOI v2.3.0   (05/1/2019)

DOI v2.2.0   (10/9/2018)

DOI v2.1.0   (05/10/2018)

DOI v2.0.2   (12/15/2017)

DOI  v2.0.1    (09/29/2017)

DOI  v2.0.0   (09/27/2017)

DOI  v1.12.0   (07/25/2017)

DOI  v1.11.0   (1/9/2017)

DOI  v1.10.0  (10/11/2016)

DOI  v1.9.0   (6/8/2016)

Who's responsible?

Eric Mandel, Alexey Vikhlinin

Center for Astrophysics | Harvard & Smithsonian

You can’t perform that action at this time.