← All tools

Genomic Coordinate Converter

BED files count from 0 and exclude the end position; GFF, GTF, VCF, and SAM files count from 1 and include it. Copying a number from one format straight into the other is the single most common off-by-one bug in genomics tooling. Type in a position or range and see both conventions side by side, instantly, in your browser.

Why do BED and VCF/GFF use different coordinate systems?

BED is 0-based and half-open (the interval excludes its end position) because that makes interval arithmetic clean — length is just end minus start, and adjacent intervals never overlap or leave gaps. VCF, GFF/GTF, and SAM are 1-based and closed (the interval includes both endpoints) because that matches how people naturally count positions along a sequence starting from 1. Both are correct within their own spec; bugs happen when a value is copied from one format into the other without converting.

How do I convert a single SNP or variant position?

Check "single base" and enter the position once — a VCF POS of 100 refers to base 100 counting from 1, which is the BED interval chromStart=99, chromEnd=100 (0-based, end-exclusive, so it still covers exactly one base).

What does "half-open" actually mean?

A half-open interval [start, end) includes start but excludes end — so a BED interval [0, 10) covers the 10 bases at 0-based positions 0 through 9. A closed interval [start, end], like GFF/VCF/SAM use, includes both endpoints — the 1-based interval [1, 10] also covers 10 bases, positions 1 through 10.

Does this tool upload my data anywhere?

No. The conversion is pure arithmetic that runs in your browser as you type — nothing is sent to a server.

Need this in a script instead of a browser?

The same conversion logic is also a tiny dependency-free CLI/library: npx github:diwaspoudell/genomic-coordinate-converter — see github.com/diwaspoudell/genomic-coordinate-converter.