GenBank Feature Extractor
Extract annotated features from GenBank records as FASTA sequences

Paste one or more GenBank records. Each must begin with a "LOCUS" line, contain a FEATURES section, and end with "//". Input limit: 1,000,000,000 characters.

💡 Quick Summary

GenBank Feature Extractor reads the feature table (FEATURES section) of one or more GenBank records and returns each annotated feature — CDS, mRNA, gene, exon, and more — as a separate FASTA entry. A feature-type breakdown panel shows exactly what was found. Two output modes: Separated (isolated feature sequence) or Uppercased in context (full sequence with the feature capitalised).

📋 How to Use
  1. Paste the contents of one or more GenBank files into the input area. Each record must begin with a LOCUS line, contain a FEATURES section, and end with "//".
  2. Choose an Output mode: Separated returns only the nucleotides within the feature coordinates — ideal for downstream analysis. Uppercased in context returns the full genomic sequence in lowercase with the feature region in uppercase — useful for visually locating the feature.
  3. Click Extract Features. Each annotated feature is output as a FASTA entry; records are separated by a "=== title ===" header line.
  4. The Feature Types Found panel shows every distinct feature key (CDS, mRNA, source, etc.) with its count across all records.
  5. Use the Copy button to copy all extracted sequences to your clipboard.
  6. Click Load Example to try with a real GenBank record — the Caenorhabditis remanei fem-2 gene with multi-exon join CDS coordinates.
  7. Click Clear to reset.
🧮 Formulas & Logic
Separated mode
feature_seq = dna[ start − 1 : stop ] (1-based GenBank coordinates converted to 0-based substring)
Uppercased in context
output = lowercase_left_context + UPPERCASE_FEATURE + lowercase_right_context
Complement strand
feature_seq = reverse( IUPAC_complement( extracted_range ) )
join() coordinates
join(x1..y1, x2..y2, …) — each range extracted and concatenated in order; complement features iterate ranges in reverse before complementing
📊 Result Interpretation
Records Processed

Number of GenBank records (LOCUS … //) successfully found and parsed.

Features Extracted

Total number of feature table entries converted to FASTA sequences. Features with unsupported position formats are excluded and listed in the Warnings panel.

Feature Types

Count of distinct feature keys (e.g. CDS, mRNA, gene) across all processed records.

🔬 Applications
  • Extracting CDS sequences from GenBank records for codon-usage analysis or translation
  • Reconstructing spliced mRNA from multi-exon join() coordinates
  • Deriving the exact nucleotide sequence for a single annotated feature before BLAST or primer design
  • Visually inspecting where a feature sits within its genomic context using Uppercased in context mode
  • Processing multiple GenBank records in a single pass to collect all features of a given type
⚠️ Common Mistakes & Warnings
Complex position types are skipped

Positions using one-of(), order(), bond(), or other advanced GenBank location descriptors cannot be represented as a simple sequence. They are skipped with a warning. Simple positions (e.g. 1..100) and join() coordinates are fully supported.

Partial-position markers are stripped

The "" markers (indicating a partial or fuzzy position boundary) are removed before extraction. The resulting sequence may be shorter than the feature annotation implies.

Only the first DEFINITION line is used as the record title

Multi-line DEFINITION fields are truncated to the text up to the ACCESSION keyword. If the definition continues across many lines the full text may not appear in the output header.

DNA only — protein-sequence GenBank records are not supported

The ORIGIN block is treated as a DNA sequence. GenBank records where ORIGIN contains amino acids will produce incorrect output.

❓ Frequently Asked Questions

What is the difference between Separated and Uppercased in context?
"Separated" extracts only the nucleotides within the feature coordinates — the FASTA output contains just the feature sequence, ready for downstream tools like BLAST or primer design. "Uppercased in context" outputs the full genomic sequence in lowercase with the feature region in uppercase letters, making it easy to see where the feature sits relative to surrounding sequence.
How are join() coordinates handled?
A join position such as join(265..402,673..781) is split on commas and each range is extracted separately, then the fragments are concatenated. This correctly reconstructs spliced sequences like mature mRNA or multi-exon CDS entries. For complement join features the ranges are also iterated in reverse before the combined sequence is reverse-complemented.
What does complement() mean in the feature table?
A feature annotated as complement(start..stop) is encoded on the opposite (antisense) DNA strand. The tool extracts the specified range, takes the IUPAC nucleotide complement (A↔T, G↔C, with full degenerate-base support), then reverses the result — producing the correct sequence for complement-strand features.
Can I paste multiple GenBank records at once?
Yes. Paste any number of complete records (each starting with "LOCUS" and ending with "//"). Each record is processed independently and all features are output together, separated by a "=== record title ===" header line.
Where do I get GenBank-format files?
GenBank flat files are available from NCBI at www.ncbi.nlm.nih.gov. Search for an accession number and use "Send to → File → Format: GenBank (full)" to download.
Why are some features missing from the output?
Features using unsupported position descriptors (one-of, order, bond) cannot be represented as a plain sequence and are skipped. A warning message is shown in the Processing Warnings panel for each skipped feature.