genefix
HGNC snapshot 2026-10-30

Excel turned SEPT2 into 2-Sep. Get SEPTIN2 back.

Paste a gene list or drop a spreadsheet. genefix repairs symbols Excel turned into dates or numbers, updates symbols HGNC has renamed, resolves aliases when they point to one gene, and adds HGNC, Ensembl, NCBI Gene and UniProt ids. You get the same file back, plus a report of every change.

Nothing is uploaded. Your list is read and fixed inside this browser tab; only the public HGNC table is downloaded to you.

A · geneB · genefix
22-SepSEPTIN2date → SEPT2 → renamed
3MARCH1MARCHF1previous symbol
4C10orf2TWNKprevious symbol
51-Mar MARCHF1 or MTARC1?flagged, not guessed
6p21 4 genes?alias of 4 genes
01

Sample

HGNC 2026-10-30 · 1,402 kB, loads when you start
Options
03

Method

Each value is tried in this order; the first rule that fits decides.

  1. Approved symbol stays. Wrong case is fixed (tp53 → TP53).
  2. Previous symbol becomes the current one (C10orf2 → TWNK, FAM46C → TENT5C).
  3. Withdrawn symbols HGNC merged into one gene follow the merge.
  4. Alias is resolved only when it belongs to one gene (p53 → TP53). p21 belongs to four, so all four are listed and the cell is left alone.
  5. Ids — HGNC, Ensembl (with or without version), NCBI Gene, UniProt — stay in place and get the gene's other ids next to them.
  6. Excel dates and numbers are read back to the symbols that could have produced them, in any rendering: 2-Sep, Sep-02, 02.09.2019, 9/2/2019, 2019-09-02, serial 43710, 02. Sep., 2 sept., 02.сент., 2.00E+04. A cell is repaired only when exactly one current or previous HGNC symbol could have become it.

Why some cells stay flagged. 1-Mar is what Excel makes of both MARCH1 (now MARCHF1) and MARC1 (now MTARC1). No program can tell which one the author typed, so genefix lists both and leaves the cell for you.

m/d/yyyy dates are read both ways: 3/2/2019 could be MARCH2, MARC2 or FEB3 (SCN1A), so it is flagged. A first-of-month date with a year may be Excel's month-year reading (it stored SEP3 as 2003-09-01 in a published supplement), so 2003-09-01 is SEPT1 or SEP3.

Plain integers in a symbol column are read as Excel date serials; in a column that is mostly NCBI Gene ids, as ids. NA, #N/A, - are treated as missing values (NA is also an old symbol of XK). Confidence: high — one answer, nothing else fits; medium — one gene, but the value is also an alias elsewhere, or came from an alias or a serial; low — flagged.

04

Validation

tests/ in the package source
64
of 103,457 HGNC strings that real Excel (16.114, macOS) turned into dates or numbers
26 / 30
current or previous symbols repaired to the right gene (87%); the other 4 are 1-Mar / 2-Mar, flagged with the right gene among the candidates
0
wrong repairs, across 10 date renderings; 0 of 45,289 untouched approved symbols changed
191 / 193
random HGNC symbols whose Ensembl gene matches the Ensembl REST API (release 116); 7 more are not in Ensembl's symbol index yet
98 / 98
random previous symbols that resolve to the gene Ensembl lists for that name
332 / 332
shared test vectors pass in Python and JavaScript; 30,842 results identical between the two

Excel test: all 103,457 approved, previous and alias symbols were opened as a CSV in Microsoft Excel and saved again; the cells it changed were then rendered the ways other locales print them and fed back. In human gene lists from PLOS ONE supplements that Ziemann et al. flagged, genefix repaired 2013-09-07 → SEPTIN7, 2014-03-03 → MARCHF3, 3-Sep → SEPTIN3 and 14-Sep → SEPTIN14, and flagged 2013-09-15 (SEP15 is only an alias, of SELENOF).

05

Same logic as a library

Python — standard library only, the HGNC snapshot is inside the wheel (1,621 kB).

pip install https://genefix.alftech.space/dl/genefix-0.1.0-py3-none-any.whl

import genefix
for r in genefix.fix(["2-Sep", "MARCH1", "p53", "ENSG00000141510"]):
    print(r.input, r.status, r.symbol, r.ensembl)

genefix.fix_file("in.tsv", column="gene", out="out.tsv", report="report.tsv")
genefix.fix_dataframe(df, "gene")   # needs pandas
genefix.update()                    # only when you ask: newer snapshot?
genefix in.csv -c gene -o out.csv --report report.tsv
genefix --list 2-Sep 1-Mar p53

JavaScript — one file, ES module (genefix.mjs) or UMD (genefix.js), 39 kB; data loads separately.

import genefix from "https://genefix.alftech.space/genefix.mjs";
const fx = await genefix.load();   // fetches data/latest.json
fx.fix(["2-Sep", "1-Mar"]).forEach(r =>
  console.log(r.input, r.status, r.symbol, r.candidates));

Data files: hgnc-2026-10-30.json.gz (1,402 kB), hcop-mouse-2026-10-30.json.gz, meta.json (download date, row counts, checksums).