How to Open a GFF3 File (and Why It Has No Sequence)
6 min read · Updated October 30, 2026
GFF3 is what Ensembl, NCBI's datasets downloads, Prokka, AUGUSTUS and almost every gene finder emit, and it is the format most plasmid editors refuse to open. The usual reason people are stuck with one is simple and is a property of the format rather than of their file: a GFF3 generally contains no sequence at all.
Here is what is in it, what the columns mean, and what has to be supplied before it can become a map.
Nine tab-separated columns, and a header
Every feature line has nine tab-separated fields: the sequence id, the source that produced the annotation, the feature type, start, end, score, strand, phase and a bag of attributes. Coordinates are 1-based and inclusive at both ends, which is the same convention GenBank uses and the opposite of BED's.
Lines beginning with ## are directives. ##gff-version 3 is required and is how you tell GFF3 from its predecessors; ##sequence-region names a sequence and its extent, which is a claim about length rather than the sequence itself.
A dot in a numeric column means absent, not zero. A score of . is no score; a phase of . is not phase 0. Reading one as the other quietly turns a missing value into a measurement.
The attributes column carries the names, and it is escaped
The ninth column is semicolon-separated key=value pairs, and the keys with defined meanings are capitalised: ID, Name, Parent, Alias, Target. Everything else is free. Parent is what makes GFF3 hierarchical — an exon names the mRNA it belongs to, which names the gene.
Values are percent-encoded, because the delimiters have to be representable: %2C is a comma, %3B a semicolon, %3D an equals sign, %26 an ampersand. A parser that does not decode them shows a gene called araC%2C partial instead of araC, partial, and one that splits on a raw semicolon inside an encoded note loses the rest of the attributes.
In a short worked file with a gene, a CDS and a terminator, the decoded output gives the gene the label sfGFP, partial and the CDS a product of green fluorescent protein; partial — both of which were written with escapes in the file.
Phase is not frame
On a CDS line, phase says how many bases to remove from the start of that feature to reach the first base of a codon: 0, 1 or 2. It describes where the codons begin within this piece, which matters because a CDS split across exons has pieces that do not each start in frame.
It is not the reading frame of the sequence, and it is not optional on a CDS. A CDS line carrying a phase of . is malformed, and a tool that reads it as 0 will translate two-thirds of such files wrongly.
Why the file has no sequence, and what to do about it
GFF3 is an annotation format. Its first column is a name that refers to a sequence in a separate FASTA file, joined on that name — which is why genome annotation downloads come as a pair, and why a GFF3 on its own cannot be opened as a map.
The format does allow an embedded sequence: a ##FASTA directive at the end of the file, with the records after it. Prokka writes one; most other producers do not.
So reading a GFF3 gives you a feature table and nothing to draw it on. Supply the matching FASTA and the two together make a GenBank record — in the worked example, a 119 bp record carrying the gene, CDS and terminator — which every sequence viewer can open. The join is on the sequence id, so a FASTA whose header does not match the first column annotates nothing.
GFF3, GFF2 and GTF are not interchangeable
GTF (sometimes called GFF2.5) uses the same nine columns and a different ninth: attributes are space-separated with quoted values and terminated by semicolons, gene_id "X"; transcript_id "Y";, with no ID or Parent and therefore no explicit hierarchy. GFF2 is older still and has no consistent attribute convention at all.
A GTF read as GFF3 usually parses — the first eight columns are identical — and loses every name and relationship, which looks like a file full of unnamed features rather than like an error.
Frequently asked questions
Why is there no DNA in my GFF3 file?
Because GFF3 annotates a separate FASTA rather than containing one. The first column names the sequence the coordinates refer to, and the two files are joined on that name. Some producers append an optional ##FASTA section at the end; most do not, so you usually need the matching FASTA to do anything visual with the annotations.
Can I convert GFF3 to GenBank?
Yes, given the sequence. With the FASTA that the GFF3 annotates, the features become a GenBank feature table and the result opens in any sequence viewer. Without it there is nothing to attach the coordinates to, so the conversion cannot produce a record.
Will a GTF file work anywhere GFF3 does?
Not reliably. The first eight columns are the same, so a GTF usually parses without complaining, but its attributes use a different syntax and carry no ID or Parent. The result is features with no names and no hierarchy — a silent loss rather than an error.
Are GFF3 coordinates 0-based or 1-based?
1-based and inclusive of both endpoints, the same as GenBank. BED is 0-based and half-open, so a feature converted between the two without adjusting shifts by one base at the start — which is the single commonest coordinate bug in genome annotation work.
Related references
Related tools
Read a GFF3 annotation file as a feature table, and turn it plus its FASTA into a GenBank record with an annotated map.
Paste a GenBank record and see an annotated circular or linear map with a feature table.
Convert between FASTA, GenBank and tab-separated formats, and extract CDS or protein sequences.
Render a circular or linear map with restriction sites.
Type or paste a sequence and edit it directly — every feature remaps live as you insert, delete, or replace bases, with undo/redo and GenBank import/export.