• Brain Mesh Library
  • Rendering JNIfTI in WebGL
  • Brain Parcellation
  • NeuroJSON Platform

NeuroJSON logo NeuroJSON

Scalable neuroimaging data exchange platform

NeuroJSON aims to develop a JSON-based neuroimaging data exchange format that is readable, searchable, shareable, can be readily validated and served in the web and cloud. This project is funded by the NIH U24-NS124027 grant.

Browse Specs
Data Structure Level
JData Specification
BJData Specification
Data File Level
JNIfTI Specification
JSNIRF Specification
JMesh Specification
Dataset Level


  • List of Format Specifications

    Click on each specification on the left to read more.
  • JData: A general-purpose data annotation and interchange format

    JData is a general-purpose data interchange format aimed for portability, readability and simplicity. It utilizes the JavaScript Object Notation (JSON) [RFC4627] and Universal Binary JSON (UBJSON) specifications to store complex hierarchical data in both text and binary formats. In this specification, we define a list of JSON-compatible constructs to store a wide range of data structures, including scalars, arrays, structures, tables, hashes, linked lists, trees and graphs, and support optional data grouping and metadata for each data element. The generated data files are compatible with JSON/UBJSON specifications and can be readily processed by most existing parsers.

    URL: https://github.com/NeuroJSON/jdata

    Version: 1.0 Draft 3

  • Binary JData: A portable interchange format for complex binary data

    The Binary JData (BJData) Specification defines an efficient serialization protocol for unambiguously storing complex and strongly-typed binary data found in numerous application domains. The BJData specification is the binary counterpart to the JSON format, both of which are used to serialize complex data structures supported by the JData specification (http://openjdata.org). The BJData spec is derived and extended from the Universal Binary JSON (UBJSON, http://ubjson.org) specification (Draft 12). It adds supports for N-dimensional packed arrays and extended binary data types.

    URL: https://github.com/NeuroJSON/bjdata

    Version: 0.5 Draft 1

  • JNIfTI: An extensible file format for storage and interchange of neuroimaging data

    JNIfTI is a highly extensible file format developed for the storage, interchange and processing of neuroimaging data. Built upon the JData specification, a JNIfTI file has both a text-based interface using the JavaScript Object Notation (JSON) [RFC4627] format and a binary interface using the Universal Binary JSON (UBJSON) serialization format. This further allows JNIfTI to store not only neuroimaging data formatted in the NIfTI-1, NIfTI-2, and Analyze7.5 specifications, but also non-array-based and complex data structures, such as neuroimaging metadata, using simple syntax. To enhance accessibility, JNIfTI files can be directly parsed by most existing JSON and UBJSON parsers.

    URL: https://github.com/NeuroJSON/jnifti

    Version: 1.0 Draft 1

  • JSNIRF: A lightweight and portable fNIRS data storage format

    JSNIRF is a portable format for storage, interchange and processing data generated from functional near-infrared spectroscopy, or fNIRS - an emerging functional neuroimaging technique. Built upon the JData and SNIRF specifications, a JSNIRF file has both a text-based interface using the JSON format and a binary interface using the Universal Binary JSON (UBJSON) serialization format. It contains a compatibility layer to provide a 1-to-1 mapping to the existing HDF5 based SNIRF files. A JSNIRF file can be directly parsed by most existing JSON and UBJSON parsers.

    URL: https://github.com/NeuroJSON/jsnirf

    Version: 0.4

  • JMesh - A versatile data format for unstructured meshes and geometries

    JMesh is a portable and extensible file format for the storage and interchange of unstructured geometric data, including discretized geometries such as triangular and tetrahedral meshes, parametric geometries such as NURBS curves and surfaces, and constructive geometries such as constructive solid geometry (CGS) of shape primitives and meshes.

    URL: https://github.com/NeuroJSON/jmesh

    Version: 1.0 Draft 1


    To be announced

Browse Software
/Demo/: MCX Cloud


  • List of NeuroJSON parsers/writers

    Click on each library/utility on the left to read more.
  • python-jdata

    Using the lightweight Python-JData module, a complex Python data structure can be encoded as a dict object that is easily serialized as a JSON/binary JSON file and share such data between programs of different languages. The PyJData module is easy to use. You can use the encode()/decode() functions to encode Python data into JData annotation format, or decode JData structures into native Python data. One can further save the JData annotated data into JSON or binary JSON (UBJSON) files using the jdata.save function, or loading JData-formatted data to Python using jdata.load

    URL: https://github.com/NeuroJSON/pyjdata

    Version: 0.3.6

  • python-bjdata - a lightweight binary JSON format for Python

    This package was modified based on the py-ubjson package developed by Iotic Labs Ltd. Project URL: https://github.com/Iotic-Labs/py-ubjson

    The major changes were focused on supporting the Binary JData Specification Draft 1 - an extended Universal Binary JSON (UBJSON) Specification Draft-12 by adding the below new features:

    • BJData adds 4 new numeric data types: uint16 [u], uint32 [m], uint64 [M] and float16 [h]
    • BJData supports an optimized ND array container
    • BJData does not convert NaN/Inf/-Inf to null

  • JSONLab - a portable JSON/UBJSON/MsgPack reader/parser for MATLAB/Octave

    JSONLab is one of the most popular JSON parsers for MATLAB, winning Popular Files 2018 and Editor's Pick.

    JSONLab is not only a JSON/UBJSON/MsgPack parser, but also a reference library for NeuroJSON/JData specifications.

  • JSData - JData encoder/decoder for JavaScript

    JSData is an ultra-portable JavaScript module that can encode and decode NeuroJSON/JData data structure constructs in Node.js apps or web pages. It uses numjs as the backend when decoding N-D array JData constructs.

    The NIH-funded MCX Cloud web-based Monte Carlo simulation utilizes JSData for decoding 3-D volumes written in the [*URL: https://github.com/NeuroJSON/jnifti JNIfTI format] by MCX and perform in-browser 3-D rendering using Three.js

About us

About us

Return Home

Powered by Habitat