A lightweight, browser-based genome browser built on IGV.js that makes it easy to visualize and share BigWig genomics data with collaborators β and generate publication-ready multi-locus figures.
- Easy Session Sharing: Save and share browser sessions with config files β no path dependencies
- Proper BigWig Support: Native BigWig file parsing using IGV.js
- Built-in Gene Annotations: Automatic RefSeq gene tracks from UCSC/Ensembl
- Desktop IGV Appearance: Familiar interface matching the desktop IGV application
- Customizable Tracks: Change track names, colors, and heights on the fly
- Drag-to-Reorder Tracks: Rearrange track order via drag handle in the settings table, synced to the browser view
- Autoscale Groups: Create named groups and assign tracks via shift-click multi-select for shared Y-axis scaling
- BED Annotation Tracks: Load BED files (
.bed) alongside BigWig files as annotation tracks - Add Tracks Mid-Session: Upload additional BigWig or BED files into a running session without reloading
- Multi-Locus Figure View: Side-by-side comparison of multiple genomic regions across all tracks β export as SVG
- Zero Installation: Runs entirely in the browser β no backend required
- Open
genome-browser-share.htmlin your web browser - Drag and drop a folder containing:
config.json(session configuration)- One or more BigWig files (
.bw,.bigWig) and/or BED annotation files (.bed)
- The browser launches automatically with all your settings preserved
- Open
genome-browser-share.htmlin your web browser - Select a reference genome (hg38, hg19, mm10, mm39)
- Upload your BigWig files
- Click "Launch Browser"
The config.json file stores all your session settings:
{
"genome": "hg38",
"region": "chr17:7,661,779-7,687,550",
"autoscaleGroups": ["Group 1"],
"tracks": [
{
"name": "Sample_1_H4K20me1",
"file": "sample1.bigWig",
"color": "#FF0000",
"type": "wig",
"format": "bigwig",
"autoscaleGroup": "Group 1"
},
{
"name": "Sample_2_Control",
"file": "sample2.bigWig",
"color": "#00AA00",
"type": "wig",
"format": "bigwig",
"autoscaleGroup": null
}
]
}- genome: Reference genome (hg38, hg19, mm10, mm39, or
custom:<id>for custom genomes) - region: Genomic coordinates (e.g., "chr17:7,661,779-7,687,550")
- autoscaleGroups: Array of named autoscale group strings
- tracks: Array of track configurations (order determines display order)
- name: Display name for the track
- file: BigWig filename (no path, just filename)
- color: Hex color code for the track
- type: Track type (
"wig"for BigWig,"annotation"for BED) - format: File format (
"bigwig"or"bed") - autoscaleGroup: Name of the autoscale group, or
nullfor independent scaling
- Location Input: Type genomic coordinates (e.g.,
chr17:7,661,779-7,687,550) and click "Go" - Zoom In/Out: Zoom buttons or the zoom slider in IGV
- Reset: Return to the starting location
- Pan: Click and drag in the track view
- Keyboard Pan: Left/right arrow keys pan the view left or right
- Change Colors: Click the color picker next to any track in the "Track Settings" panel
- Rename Tracks: Click the track name to edit it inline
- Adjust Height: Use the "Track Height" dropdown to make tracks more compact or taller
- Reorder Tracks: Drag the handle (β°) on any track row to rearrange display order β both the settings table and the IGV browser view update to match
You can add more BigWig or BED files after the session is already running β no need to restart:
- Click "β Add Tracks" in the IGV browser toolbar to pick individual files, or
- Click "π Add Folder" to upload an entire folder
New tracks appear in the track settings sidebar immediately, are live-loaded into the IGV view, and are automatically included when you save the session config.
Tracks in the same autoscale group share a common Y-axis scale, making it easy to compare signal levels across samples.
- Select tracks: Click checkboxes to select individual tracks, or shift-click to select a range
- Assign a group: Use the toolbar dropdown to pick a group, then click "Set Group"
- Manage groups: Add, rename, or remove groups in the "Autoscale Groups" section below the track list
- Independent scaling: Set a track's group to "None (Independent)" for its own Y-axis range
- Save Session Config: Download a
config.jsonwith current settings - Export SVG: Save the current IGV view as an SVG image
The Multi-Locus Figure tab lets you visualise multiple genomic regions side-by-side in a clean, publication-ready layout β rendered entirely on canvas with configurable styling.
Click "+ Manage Loci" in the figure toolbar to open the locus manager:
- Add a locus manually: enter a label (e.g.
Rbfox3) and genomic coordinates (e.g.chr11:117,005,327-120,396,030), then click Add - Capture current view: click "π Current view" to fill the coordinate field with whatever the IGV browser is currently showing β great for quickly pinning a region you've navigated to
- Reorder or remove: drag loci up/down in the list or click the remove button
- Click Apply to update the figure
| Control | Description |
|---|---|
| Track height slider | Set the pixel height of each BigWig row |
| Y-scale dropdown | Per-cell, by row, by autoscale group, or global max |
| Gene model dropdown | Squished (IGV-style), Collapsed, Full transcripts, Bar only, Arrows only |
| Y-max checkbox | Show/hide the Y-axis maximum label on each cell |
| Labels checkbox | Show/hide the track name column on the left |
| Cell borders checkbox | Toggle borders around each cell |
| Figure Style | Customise fonts, colors, and gene annotation appearance |
| Export SVG | Download the entire figure as a vector SVG |
A gene annotation row appears beneath all tracks, drawn from the same GTF/GFF data used for the reference genome. In Squished mode, genes are packed into rows using a bump-chart layout so overlapping genes don't collide. All locus columns share the same row height so the figure stays properly aligned even when loci differ in gene density.
- Per cell (default): each cell autoscales independently
- By row: all loci for a given track share the same max
- By autoscale group: tracks in the same autoscale group share a max across all loci
- Global: one max across every track and locus
- Load your BigWig files
- Customise track names and colors
- Navigate to your region of interest
- Click "πΎ Save Session Config"
Create a folder with:
session_folder/
βββ config.json (downloaded from browser)
βββ sample1.bigWig (your data file)
βββ sample2.bigWig (your data file)
βββ sample3.bigWig (your data file)
- Zip the folder and send via email/cloud storage
- Share on a network drive
- Commit to a Git repository (if files aren't too large)
Recipients simply:
- Open
genome-browser-share.html - Drag and drop the entire folder
- Browser loads with your exact configuration!
Why this works: The config file references filenames only (not full paths), so it works on any computer as long as the BigWig files are in the same folder as the config.
- hg38 (GRCh38): Human genome, December 2013
- hg19 (GRCh37): Human genome, February 2009
- mm10 (GRCm38): Mouse genome, December 2011
- mm39 (GRCm39): Mouse genome, June 2020
Gene annotations are automatically loaded from UCSC/Ensembl for each genome.
In addition to these four presets, you can add your own custom genome references for any organism or assembly.
You can use any genome assembly by providing your own FASTA reference files. Custom genomes appear in the genome dropdown alongside the built-in presets.
Place each custom genome in its own subdirectory under references/:
references/
βββ manifest.js (auto-generated, do not edit manually)
βββ update_manifest.sh (script to regenerate manifest.js)
βββ sacCer3/
β βββ sacCer3.fa (FASTA reference - required)
β βββ sacCer3.fa.fai (FASTA index - recommended)
β βββ sacCer3.gtf (gene annotations - optional)
βββ dm6/
βββ dm6.fasta (FASTA reference - required)
βββ dm6.fasta.fai (FASTA index - recommended)
βββ dm6.gff3 (gene annotations - optional)
Each subdirectory needs:
- FASTA file (
.fa,.fasta,.fna) β required. The genome sequence. - FASTA index (
.fai) β recommended for large genomes. Generate withsamtools faidx your_genome.fa. - GTF/GFF annotation file (
.gtf,.gff,.gff3) β optional. Provides gene annotations in the browser and figure views.
After adding or removing reference directories, run:
./references/update_manifest.shThis scans the subdirectories under references/, detects the FASTA, index, and annotation files in each one, and updates references/manifest.js. The manifest is what populates the genome dropdown in the UI, so you must re-run this script whenever you change the contents of references/.
Additional notes:
- The manifest must be regenerated whenever you add or remove reference directories β changes are not picked up automatically
- Compressed files are supported:
.fa.gz,.fasta.gz,.gtf.gz,.gff.gz(with a corresponding.faior.gziindex) - If a subdirectory has no FASTA file, it is skipped with a warning and will not appear in the dropdown
Create New Session:
- Open
genome-browser-share.html - Select your custom genome from the dropdown
- Upload your BigWig or other track files
- Click "Launch Browser"
Load Existing Session:
- Drag and drop a folder containing:
config.json(with the custom genome name in the"genome"field)- Your track files (BigWig, BED, etc.)
- The reference files (FASTA, FAI, GTF/GFF) for the custom genome
- The browser detects the reference files and loads them automatically
Option A β Include reference files in the folder (works everywhere):
Put config.json, all track files, and the reference files (FASTA, FAI, GTF/GFF) together in one folder. The recipient drag-drops the entire folder and it works on both file:// and HTTP β no prior setup needed.
Option B β Manifest-based sharing (no reference files needed):
If the recipient already has the same genome registered in their references/ directory and has run ./references/update_manifest.sh, you only need to share config.json and the track files. They must serve the app via HTTP (python -m http.server 8000) rather than opening it as a file:// URL.
HTTP server (recommended for custom genomes):
python -m http.server 8000Then open http://localhost:8000/genome-browser-share.html. On HTTP, any genome registered in references/manifest.js loads automatically.
File protocol (opening the HTML file directly):
When opened as a file:// URL, the browser blocks access to other local files. Either include reference files in the drag-dropped folder (Option A above), or a file picker will appear automatically so you can select them manually.
- Keep BigWig files and config.json in the same folder
- Use descriptive filenames that make sense to others
- Consider file sizes β very large BigWigs may be slow to load
- Use clear, descriptive track names (e.g., "Sample1_H3K4me3_Rep1")
- Include relevant metadata in names (condition, replicate, etc.)
- Keep names concise for readability in the figure view
- Use "By autoscale group" Y-scale to compare samples fairly across genes
- The "Current view" button in Manage Loci makes it easy to capture a region after navigating to it in the IGV tab
- Export SVG produces a vector file suitable for direct import into Illustrator or Inkscape
- Smaller genomic regions render faster in the multi-locus view
- Fewer simultaneous tracks = better performance
- Consider using the compact track height for many-track figures
- Ensure files have
.bw,.bigwig, or.bigWigextension - Check that files aren't corrupted
- Try loading files one at a time to identify problematic files
- Verify the genomic region has coverage in your BigWig file
- Check that the correct genome assembly is selected
- Try navigating to a different region
- Verify
config.jsonis valid JSON (use a JSON validator) - Ensure all BigWig filenames in config match actual files
- Check that file/track names don't have special characters
- Make sure the BigWig files are still loaded in the IGV browser tab (they must remain open in the browser)
- Check that each locus coordinate is valid for the current genome
- If gene annotations are missing, verify the genome has a GTF/GFF registered in
references/manifest.js
- IGV.js v2.15.8 β the core visualization library
- Pure HTML/CSS/JavaScript β no build process required
- Browser-native File API for local file handling
- HTML5 Canvas for multi-locus figure rendering
- Modern web browser (Chrome, Firefox, Safari, Edge)
- JavaScript enabled
- File API support (all modern browsers)
- BigWig files are read directly in the browser using IGV.js
- Files are converted to blob URLs for IGV to access
- Gene annotations are fetched from public UCSC/Ensembl servers
- The multi-locus figure view reads BigWig data independently from IGV, using the same blob URLs
- All processing happens client-side β no data is uploaded
- All data stays local β nothing is uploaded to any server
- BigWig files are processed entirely in your browser
- Only gene annotations are fetched from public databases
- Safe to use with sensitive/unpublished data
MIT License β feel free to use and modify for your research.
Contributions are welcome! Some ideas for improvements:
- Additional genome assemblies
- BAM/CRAM file support
- Session state URL encoding
- Ability to hide/show tracks without removing them from the session
- Built on IGV.js by the Broad Institute
- Gene annotations from UCSC Genome Browser and Ensembl
- Inspired by the desktop Integrative Genomics Viewer (IGV)
For issues or questions:
- Check the Troubleshooting section above
- Review IGV.js documentation
- Open an issue on GitHub
Happy browsing! π§¬