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.