JBrowse 2 features

One of the biggest features of JBrowse 2 is the ability to have multiple views on the same screen, or to compose multiple views together (e.g. a synteny view combines multiple single linear genome views)

Example showing multiple views on the same screen, an alignments track on top and a long read vs reference comparison with the "synteny" view

For more screenshots see the gallery

New view types

JBrowse 2 supports creating new "view types" that can be shown alongside other views in the app. Importantly, plugins can also add new views, allowing for extensibility by third party devs. By default, JBrowse 2 includes these view types

  • Circos view - Used to show whole genome overview of chromosomal translocations. The VCF breakend <BND> and <TRA> type features can be rendered as arcs across the view

  • Breakpoint split view - Our breakpoint split view shows the connection between long split alignments or paired end reads across multiple chromosomes using stacked linear genome views

  • Dotplot view - Zoomable comparison of whole genome alignments or synteny datasets

  • Linear synteny view - Another option for exploration of syntenic alignments using stacked linear genome views

  • Spreadsheet-like view - Open formats like BED, VCF, CSV, TSV, or even bespoke formats like STAR-fusion in the spreadsheet view

Feature comparison of JBrowse 2 vs JBrowse 1

FeatureJBrowse 2JBrowse 1
Status updates during track loading (e.g. Downloading BAM index...)✔️
Sort, color, and filter by BAM/CRAM tags and other advanced options✔️
Uses webworkers for parsing and rendering tracks✔️
Supports interactive editing of configuration in the app✔️
Can "flip" or reverse complement the linear view✔️
Hi-C data rendering✔️
Can display multiple chromosomes in a single view✔️
Sort read pileup in alignments tracks✔️
Show soft clipping in alignments tracks✔️
Built-in spreadsheet-like view for datasets✔️
Can connect to UCSC track hubs✔️ 1
Can load plugins at run-time instead of build time✔️ 2
Non-admin users can open tracks and share them with others✔️ 3
Re-usable NPM package✔️
Name searching e.g. ability to type a gene name/ID to search for it✔️
URL query params API e.g. specifying ?loc=chr1:1-100 in URL bar✔️

1 Requires that the trackhub host support CORS for the jbrowse-web, jbrowse-desktop does not require this however

2 This means using plugins does not require a rebuild of the app. Our config_demo.json exemplifies loading several plugins

3 These are so-called "session tracks" and can be shared via our URL sharing mechanism. Users can currently open tracks only from URLs and not local files on their computer as of writing.

Data format support

Here is a short list of current data format support

  • htsget protocol for BAM files
  • VCF (tabixed)
  • GFF3 (tabixed)
  • BED (tabixed)
  • BigBed
  • BigWig
  • JBrowse 1 NCList (backcompat)
  • plain text VCF, BED, CSV, TSV, BEDPE, STAR-fusion output (spreadsheet formats)
  • PAF (synteny/dotplot)
  • Indexed FASTA/BGZip indexed FASTA
  • 2bit
  • .hic (Hi-C contact matrix visualization)


JBrowse 1 has some notion of being embeddable but it is not ideal and it doesn't have very optimal routes for being packaged and re-used on NPM

With JBrowse 2 we have some new concepts for embeddability. For example, we can install just the linear-genome-view and use it as a react component.

The @jbrowse/react-linear-genome-view is specialized for certain use cases and is not hooked up to session sharing, URL params, or anything but instead is a simple React component

See here for more details https://www.npmjs.com/package/@jbrowse/react-linear-genome-view

Note that the entire jbrowse-web app that contains multiple views can't currently be installed via NPM though