Direct comparison
GTF vs GFF3: Annotation Format Compared
GTF vs GFF3 compared: attribute syntax, gene/transcript hierarchy, which tools expect which format, and why conversion is not always lossless.
Written and maintained by CASRAI Editorial Board
Last updated
Ask CASRAI · free to try
Ask about GTF vs GFF3: Annotation Format Compared
Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.
An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.
Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.
Works on this site and inside Claude, Cursor and the AI tools you already use.
Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.
How do GTF (GFF2-derived), GFF3 compare side by side?
The table below compares GTF (GFF2-derived), GFF3 across 10 procurement-relevant dimensions, from full name / lineage through conversion tools.
Side-by-side comparison
| Dimension | GTF (GFF2-derived) | GFF3 |
|---|---|---|
| Full name / lineage | Gene Transfer Format (GTF2.2) — an extension of GFF2 | Generic Feature Format version 3 — a ground-up redesign published by the Sequence Ontology project |
| Column 9 attribute syntax | key “value”; pairs, space-separated, each ending in a semicolon (gene_id “ENSG00000139618”; transcript_id “ENST00000380152”;) | key=value pairs separated by semicolons, e.g. ID=gene:ENSG00000139618;Name=BRCA2 |
| Required attributes | gene_id and transcript_id must be the first two attributes on every line | ID is required on any feature with children or that spans multiple lines; Parent is required on every child feature |
| How hierarchy is represented | Implicit — lines are grouped by sharing the same transcript_id/gene_id; no field explicitly declares exon-of-transcript or transcript-of-gene | Explicit — every child carries Parent=<ID of its parent>, forming a directed graph (gene → mRNA → exon/CDS) |
| Multi-parent features (shared exons) | Each exon line is tied to one transcript_id; an exon shared across transcripts must be repeated once per transcript | Parent accepts a comma-separated list, so one exon line can declare membership in several transcripts at once |
| Reading frame / phase (CDS) | Column 8 is called “frame” — 0, 1, 2, or “.” | Column 8 is called “phase” — required on every CDS feature, same 0/1/2 values with a spec-defined meaning |
| Feature-type vocabulary | Informal, fixed set (exon, CDS, 5UTR, 3UTR, start_codon, stop_codon, etc.) | Controlled, versioned Sequence Ontology (SO) terms |
| Typical primary source | UCSC downloads/Table Browser, Ensembl GTF track, Cufflinks/StringTie output | NCBI RefSeq/GenBank annotation releases, Ensembl GFF3 track, most genome browsers' native ingest |
| Common aligners/counters | STAR --sjdbGTFfile, featureCounts, htseq-count and Cufflinks/StringTie all default to GTF-style gene_id/transcript_id | The same tools generally accept GFF3 too, but need to be told which attribute (e.g. Parent) carries the gene/transcript ID — check the flag rather than assuming the default works |
| Conversion tools | gffread, AGAT and UCSC's genePred utilities convert GTF → GFF3 | gffread and AGAT convert GFF3 → GTF, but multi-parent exons, non-coding subtypes and custom attributes are not guaranteed to round-trip losslessly |
Common questions
Common questions about GTF (GFF2-derived) vs GFF3
Is GFF3 better than GTF?
+
For representing complex, multi-isoform gene models, GFF3's explicit ID/Parent hierarchy removes an ambiguity GTF only resolves implicitly through shared gene_id/transcript_id values. GTF remains the practical default for many RNA-seq quantification pipelines simply because more established tools were built around it first.
Can I just rename a .gtf file to .gff3?
+
No. Renaming the extension does not change the attribute syntax in column 9 — the file still contains key “value”; pairs, which a parser expecting GFF3's key=value syntax will fail to read correctly.
Which format does Ensembl provide?
+
Both. Ensembl publishes GTF and GFF3 downloads generated from the same underlying annotation release, so choosing one is a question of tool compatibility, not data completeness.
Does converting between GTF and GFF3 lose information?
+
It can. Converters like gffread and AGAT handle the standard gene/transcript/exon/CDS case well, but multi-parent exons, non-coding RNA subtypes, and custom attributes outside the standard set are the places a round-trip conversion most often drops or flattens data — verify a converted file against its source rather than assuming a clean conversion.








