UniProt vs. Ensembl ID Mapping: Which to Use

By Dr. Zubair Khalid, DVM, MS, PhD ·

UniProt vs. Ensembl ID Mapping: Which to Use

UniProt maps protein identifiers to other protein databases using stable protein accessions and sequence-based cross-references, while Ensembl maps gene, transcript, and protein identifiers within its own genome-annotation system using versioned IDs tied to specific genome assemblies. The rule of thumb is simple: if your data are proteins, peptides, or functional annotations, start with UniProt. If your data are genes, transcripts, variants, or genomic coordinates, start with Ensembl.

Most projects eventually need both. A typical RNA-seq workflow counts reads against Ensembl gene IDs, then converts those IDs to UniProt accessions to fetch pathway annotations. A typical proteomics workflow searches spectra against a UniProt protein sequence database, then converts UniProt accessions to Ensembl or gene symbols for reporting. The question of uniprot or ensembl id mapping is therefore rarely "which one" but "which one first, and how do I get across."

This article explains what each system actually does, gives a side-by-side comparison table, shows how to use each mapper with real commands, works through scenarios that force a choice, and lists the mistakes that quietly corrupt published gene lists. If you are looking for a uniprot database tutorial in compressed form, the section on how to use UniProt covers the practical mechanics.

What UniProt Actually Is

UniProt, maintained by a consortium that includes EMBL-EBI and partner institutions, is a protein knowledgebase built around four components. Understanding the difference between these components is the difference between a clean mapping and a duplicated mess.

UniProtKB. The knowledgebase itself, split into two sections. Swiss-Prot contains reviewed entries, manually curated by biologists, each with a stable accession such as P04637 for human TP53. TrEMBL contains unreviewed entries, annotated by automated pipelines, usually derived from coding sequences in the nucleotide databases. Swiss-Prot is smaller, curated, and the safer target for mapping. TrEMBL is larger and includes proteome entries for species without curated coverage.

UniParc. The sequence archive. Every distinct protein sequence that UniProt has ever stored gets a UniParc identifier (a UPI such as UPI0000000001). UniParc entries never merge, never delete, and never rename. When two database entries refer to the same sequence, UniParc links them. This design is what makes sequence-based identifier mapping possible at scale. The PICR service, built on UniParc, offers cross-references between proteins in more than 70 source databases based on 100 percent sequence identity, with filters for source database, taxonomic identifier, and whether the identifier is still active in its source [1].

UniRef. Clustered sequence sets (UniRef100, UniRef90, UniRef50) used mostly for fast sequence searching, not identifier mapping in the ordinary sense.

Proteomes. Per-species proteome sets with taxonomic identifiers, which let you restrict any search or mapping to one organism.

Two UniProt identifier types matter for mapping and they behave differently:

  • The accession (for example P04637) is stable. Once assigned, it stays with that protein entry, even if the entry is renamed, moved between sections, or merged into another entry with a redirect.
  • The entry name or mnemonic (for example TP53_HUMAN) is human-readable but not guaranteed stable. It can change when nomenclature or section membership changes. Never key a pipeline to entry names.

Entries also carry a version number (P04637 followed by a dot and an integer) that increments when the sequence or annotation changes. In addition, UniProt represents isoforms with suffixes such as P04637-1 and P04637-2, which matters when you need to map to a specific protein product rather than the canonical sequence.

What Ensembl Actually Is

Ensembl, produced by EMBL-EBI, is a genome annotation system. It maintains annotated gene models on specific genome assemblies and assigns a hierarchical set of identifiers:

  • Gene IDs begin with ENSG for human (for example ENSG00000141510 for TP53), with a species prefix such as ENSMUSG for mouse.
  • Transcript IDs begin with ENST (or ENSMUST), one per splice isoform.
  • Protein IDs begin with ENSP (or ENSMUSP), one per protein-coding transcript.
  • Version suffixes. Identifiers can carry a dot-suffixed version, such as ENSG00000141510.19. The version increments when the annotation changes. A bare ID without the suffix means "any version."

Ensembl IDs are stable in the sense that the database tries not to reuse or retire them casually, but they are release-dependent. Ensembl issues numbered releases on a regular cadence, and each release can add genes, merge models, change transcript structures, and bump versions. An ID that resolved in release 105 may be merged or retired by release 110. This is the fundamental stability difference between the two systems and it drives most practical decisions in uniprot vs. ensembl id mapping.

Ensembl provides its own mapping machinery:

  • BioMart, a web and programmatic query interface over the annotation database, including cross-references to UniProt, NCBI RefSeq, HGNC, and other sources.
  • The Ensembl REST API, which resolves identifiers, retrieves sequences, and performs coordinate conversion between assemblies.
  • VEP (Variant Effect Predictor), which maps variants to transcripts and proteins.
  • Ensembl Genomes, which extends the same identifier scheme to plants, fungi, bacteria, protists, and non-vertebrate metazoa.
  • GTF/GFF3 annotation files, the files most RNA-seq aligners and quantifiers actually consume.

Because Ensembl ties identifiers to genome coordinates, it can also do something UniProt cannot: map by position. If two IDs have overlapping coordinates on the same assembly, they refer to the same locus regardless of what any cross-reference table says. Coordinate anchoring is the fallback when identifier-based mapping breaks.

Side-by-Side Comparison

This table is the core of the article. Read the "what it names" row first, because most mapping problems start there.

CriterionUniProtEnsembl
What it namesProteins (and their isoforms)Genes, transcripts, proteins on a genome
Primary identifierStable accession (P04637)Release-dependent ID with version (ENSG00000141510.19)
ScopeProtein-centric, cross-references to 70+ external databasesGenome-centric, one internal hierarchy with external cross-references
Mapping mechanismCross-reference tables per entry, sequence identity through UniParc, dedicated ID mapping toolBioMart queries, REST endpoints, coordinate overlap on a fixed assembly
Stability of IDsAccessions stable across releases, entry names can changeIDs persist across releases but versions bump and some IDs retire or merge
Release cadencePeriodic curated releases, old accessions keep resolvingNumbered releases, annotation and versions change each cycle
Isoform handlingExplicit canonical sequence plus listed isoforms (P04637-1, -2)One transcript ID per isoform, many transcripts per gene
Best forProteomics, functional annotation, pathway analysis, sequence-based matchingRNA-seq, variant calling, coordinates, custom genomes and non-model species
Species coverageBroad, strongest for well-studied eukaryotes, all proteomes indexedBroad, including plants, fungi, and bacteria through Ensembl Genomes
WeaknessLess useful for genomic coordinates or transcript-level workIDs churn across releases, one gene can yield many transcript and protein IDs

The difference between UniProt and Ensembl ID mapping comes down to the object being named. UniProt answers "which database entries describe this exact protein sequence." Ensembl answers "which gene model lives at this position on this genome build."

How to Use UniProt for ID Mapping

If you have a list of protein identifiers, gene names, or sequences and need them in another vocabulary, the UniProt ID mapping tool is the standard first stop. Here is how to use UniProt for a typical gene-name-to-accession conversion.

The web ID mapping tool

  1. Open the ID mapping tool on the UniProt website.
  2. Paste your identifiers, one per line. UniProt accepts accessions, entry names, gene names, RefSeq accessions, Ensembl IDs, NCBI GeneIDs, PDB IDs, and more, each as a distinct "from" option.
  3. Select the source type (for example "Gene Name") and the target type (for example "UniProtKB reviewed Swiss-Prot").
  4. Submit, then filter the results by taxonomic identifier, usually 9606 for human or 10090 for mouse. This filter matters more than beginners expect, because gene names such as "actin" resolve in hundreds of species.
  5. Download the mapping as a tab-separated file.

The REST API for reproducible pipelines

For anything you will rerun, use the REST interface instead of the website. A single-entry lookup that returns the accession, entry name, gene names, and protein name for a human gene symbol looks like this:

curl "https://rest.uniprot.org/uniprotkb/search?query=gene:TP53+AND+organism_id:9606&fields=accession,id,gene_names,protein_name&format=tsv"

For bulk mapping of hundreds or thousands of identifiers, the documented ID mapping workflow posts a job with your identifier list and source and target databases, then polls a job status endpoint until the mapped results are ready to download. This asynchronous pattern exists because large jobs take minutes, not seconds. Wrap it in a script, log the UniProt release version at the time of the run, and your mapping becomes reproducible.

What to watch in the output

The ID mapping tool can return multiple targets per input. A gene symbol may map to one reviewed Swiss-Prot entry, several TrEMBL entries, or both. Three filters keep the output clean:

  • Restrict the target to reviewed entries when your downstream analysis expects one row per protein.
  • Restrict by organism whenever the input is not already organism-qualified.
  • Prefer accessions over entry names in your saved output, for the stability reason given above.

Every UniProt entry also carries its own cross-reference table, listing corresponding Ensembl protein and transcript IDs, RefSeq accessions, PDB structures, and dozens of other sources. These cross-references are exactly the relationships the ID mapping tool exploits, and they are built on the sequence-identity architecture of UniParc, where cross-references between more than 70 source databases rest on 100 percent sequence identity [1]. That design has a practical consequence: sequence-based mapping is unambiguous when the sequences match exactly, and it is why sequence submission (FASTA) is one of the accepted input types for UniProt-based mapping [1].

How to Use Ensembl for ID Mapping

If your identifiers are Ensembl IDs, or your analysis is anchored to a genome assembly, Ensembl's own tools are usually the right starting point.

BioMart and biomaRt

The BioMart web interface lets you choose a dataset (for example human genes), select filters (for example a list of HGNC symbols), and select attributes (for example Ensembl gene ID, UniProt/Swiss-Prot accession, gene biotype). The R package biomaRt runs the same queries in code, which is the standard way to build mapping tables inside an RNA-seq pipeline:

library(biomaRt)
ensembl <- useEnsembl("genes", dataset = "hsapiens_gene_ensembl")
map <- getBM(
  attributes = c("ensembl_gene_id", "external_gene_name",
                 "uniprotswissprot", "uniprotembl"),
  filters    = "hgnc_symbol",
  values     = c("TP53", "BRCA1"),
  mart       = ensembl
)

Two attributes matter here. uniprotswissprot returns reviewed UniProt accessions only. uniprotembl returns TrEMBL accessions, which can be several per gene and will multiply your rows. Choose deliberately, and record which one you used.

Pinning to a release

Four-step procedure for querying BioMart with the Ensembl release that matches the GTF used for counting.

BioMart queries hit the current Ensembl release by default. If your count matrix was generated with a GTF file from release 105, querying today's release produces a table built against a different annotation. Use the version parameter of useEnsembl to pin the mart to the release that matches your GTF, or pull the matching annotation from an archived BioMart instance. In Bioconductor, versioned annotation packages such as the EnsDb series encode a specific Ensembl release in the package name, which makes the pin explicit and auditable.

Coordinate-based mapping

When identifiers are stale, missing, or ambiguous, map through coordinates. Every Ensembl ID has a location on a named assembly (for human, GRCh38 for current releases, GRCh37 through a dedicated archive). If you know the assembly and the coordinates of a feature, Ensembl's REST endpoints and region search tools return the overlapping genes and transcripts. The same logic underlies cross-assembly conversion, where a position on GRCh37 is projected onto GRCh38. Coordinate mapping requires care: the assemblies differ, and liftOver-style conversion can move or split regions, but it does not depend on cross-reference tables staying current.

Variant and transcript mapping

For variant data, VEP maps chromosomal positions to transcripts and their protein consequences using the current Ensembl annotation, and it can output both Ensembl protein IDs and UniProt accessions among its fields. For clinical cytogenetic work, Ensembl resources also underpin community databases: DECIPHER, the database of chromosomal imbalance and phenotype in humans built on Ensembl resources, is used to extract candidate genes from pathogenic copy-number regions [2]. That pattern, querying by genomic region first and resolving to gene identifiers second, is Ensembl's natural home territory.

The Criteria That Decide Real Choices

Having seen each system on its own terms, compare them on the axes that actually decide which mapper to open.

What object are you naming

This is the primary split, and it settles the uniprot or ensembl id mapping question for most analyses. UniProt names proteins, including curated isoforms, and links each entry to orthologs, structures, domains, pathways, and external databases. Ensembl names genes and transcripts on a genome. A gene, its transcripts, and its protein products are related but not identical sets. TP53 has one canonical UniProt entry, multiple annotated isoforms, and multiple Ensembl transcripts, several of them protein-coding. Mapping gene-level data to protein-level annotations requires decisions about isoforms that neither system makes for you.

Identifier stability

Comparison of UniProt accessions, entry names, Ensembl versioned IDs, and coordinates as keys for long-lived records.

UniProt accessions are designed to be permanent. Entries merge or split, but accessions resolve through redirects, and the PICR architecture explicitly tracks whether an identifier is still active in its source database as a filterable property [1]. Ensembl IDs also persist across releases in the normal case, but version suffixes increment and occasional IDs retire when gene models are reworked. If you are building a database, a publication supplement, or any artifact meant to still make sense in five years, UniProt accessions and coordinates (assembly plus position) are the two most durable anchors you can record. Ensembl IDs should be recorded with their version and release number.

Which downstream tools consume the IDs

Let the next tool in your pipeline decide the key. Salmon, featureCounts, and DESeq2 consume Ensembl gene IDs plus an Ensembl GTF, so your count matrix will be keyed on Ensembl IDs whether you like it or not. Perseus, MaxQuant output tables, and most proteomics downstream tools consume UniProt accessions, because the search database was a UniProt proteome FASTA. Fighting this by remapping early multiplies rounding and ambiguity errors. Map once, at the boundary between the two worlds, and keep the mapping table as a versioned artifact.

Breadth of cross-referencing

UniProt's cross-reference tables and UniParc's identity-based links reach dozens of external databases [1], so UniProt is the better hub when you need to fan out from one identifier vocabulary to many (accessions to PDB, KEGG, Reactome, RefSeq, and Ensembl in one pass). Ensembl is the better hub when you need to fan out within a genome context: gene to transcripts to exons to coordinates to variants. PICR itself was built precisely because earlier solutions were limited to specific species or a small number of databases, and it addresses the general problem of resolving unstable identifiers that refer to identical proteins across sources [1].

Species and genome coverage

For non-model organisms with genome assemblies, Ensembl Genomes and Ensembl's own browsers provide gene models and identifiers that UniProt often cannot match with curated entries, because UniProt coverage concentrates on proteomes with either curated or computationally predicted entries. If your species has an Ensembl gene set but only a few UniProt entries, Ensembl-based mapping plus TrEMBL targets may be the only workable path. Conversely, if your organism's proteome is well covered in Swiss-Prot, protein-level work is easier in UniProt.

Annotation richness versus annotation precision

UniProt entries carry curated function, subcellular location, tissue expression, domain architecture, PTMs, and literature. Ensembl entries carry structure: exon coordinates, biotypes, transcript support levels, and regulatory features. When a paper needs to say "which genes are expressed in brain" at the candidate-prioritization stage, UniProt tissue annotations are a legitimate source, as demonstrated in a workflow that combined DAVID functional annotation with UniProt-derived tissue expression patterns to filter brain-expressed candidate genes from copy-number critical regions [2]. When a paper needs to say "these two genes lie within 1 megabase on chr17," that statement comes from Ensembl coordinates, not from any protein database.

Worked Scenarios

Scenario 1: Proteomics mass spectrometry results

You ran a label-free proteomics experiment. MaxQuant or your search engine reports protein groups keyed to UniProt accessions because the search FASTA was a UniProt human proteome. You now want gene symbols and Ensembl gene IDs for reporting and for integration with an RNA-seq dataset.

Use UniProt first. The accessions are already UniProt, and the ID mapping tool or the REST interface converts them to gene names and Ensembl cross-references in one pass. Expect many-to-many expansion: one UniProt entry can cross-reference multiple Ensembl protein IDs when isoforms differ. Decide your rule before mapping, for example "collapse to one Ensembl gene ID per UniProt accession, keeping the transcript with the longest match." If your input is raw peptide sequences rather than accessions, sequence-based mapping through UniParc-class infrastructure is the appropriate method, since the underlying mapping operates on 100 percent sequence identity [1].

Scenario 2: RNA-seq differential expression to pathway annotation

Your DESeq2 results table is keyed on Ensembl gene IDs from the GTF you downloaded. You want gene ontology terms, KEGG pathways, and UniProt functional annotations for the significant hits.

Use Ensembl first to stay consistent with your counts. Query BioMart or biomaRt pinned to your GTF's release, requesting ensembl_gene_id, external_gene_name, and the UniProt attribute of your choice. Then hand the resulting UniProt accessions to downstream annotation. This two-step, Ensembl-to-UniProt path is the standard bridge in transcriptomics, and it works because the cross-reference tables between the two databases are maintained on both sides. The direction matters: going gene-symbol-to-anything directly is riskier, because symbols are neither stable nor unique.

Scenario 3: Candidate genes from copy-number regions

A clinical genomics project identifies pathogenic copy-number variants, defines critical regions, and needs a ranked list of plausible disease genes. This is a case where the two systems divide the labor cleanly, and it mirrors a published workflow. One team mapped cytogenomic imbalance regions by subtracting benign variants recorded in the Database of Genomic Variants and intersecting patient breakpoints with pathogenic cases from DECIPHER, which is built on Ensembl resources [2]. The resulting candidate genes were then annotated for function with DAVID and for tissue expression pattern with UniProt, followed by network analysis [2]. The regional step was inherently Ensembl territory, coordinates on a genome. The functional-filtering step was inherently UniProt territory, curated protein-level biology. Neither system alone would have produced the candidate list.

Scenario 4: Resolving a messy legacy identifier list

A collaborator sends a spreadsheet with a mixture of gene symbols, old RefSeq accessions, and truncated protein IDs from a 2009 paper. Several symbols have since been renamed or reassigned to different genes.

Start with UniProt's ID mapping tool, mapping everything you can to UniProt accessions with an organism filter, then use the accessions' cross-references to reach Ensembl. For identifiers that fail, check whether they are inactive in their source database, a status that sequence-identity-based services can report and filter on [1]. For the residue that still fails, fall back to literature: the original paper's supplementary tables, then map by sequence if the protein sequences are recoverable. This scenario is the strongest argument for recording accessions, not symbols, in your own outputs.

Common Mistakes and Limitations

These are the errors that survive into published supplementary tables most often.

Assuming the mapping is one-to-one. One Ensembl gene has many transcripts, several potentially protein-coding. One UniProt entry describes one protein sequence but may cross-reference multiple Ensembl protein IDs. Any pipeline that silently takes the first row of a mapping table is making an unstated isoform choice. Decide and document your collapsing rule.

Mapping without an organism filter. Gene names and many accession types are not globally unique across species. An unfiltered mapping of human gene symbols can silently return mouse, rat, and zebrafish entries. Always filter by taxonomic identifier, and store that filter in your code, not just your memory.

Ignoring reviewed versus unreviewed status. Mapping to all of UniProtKB when you needed Swiss-Prot turns one clean row into five ambiguous ones. Conversely, mapping only to Swiss-Prot can drop proteins for less-studied organisms that exist only in TrEMBL. Choose the section deliberately per analysis.

Mixing Ensembl releases. Counting reads with a release 105 GTF and annotating with a release 110 mapping table produces gene lists with a small but real fraction of mismatches: genes whose models changed, IDs that versioned up, IDs that retired. Pin every Ensembl-derived resource to one release per project and record the number.

Keying on unstable identifier types. UniProt entry names (TP53_HUMAN) change. Gene symbols change and collide. Ensembl bare IDs without versions are ambiguous across releases. Accessions, versioned Ensembl IDs, and coordinates are the durable keys.

Ignoring merge and demotion events. UniProt entries occasionally merge, and unreviewed entries occasionally get demoted out of existence when the underlying prediction is withdrawn. Well-built pipelines log unmapped inputs and count them. If your unmapped rate is nonzero, it needs a named decision, not a silent drop.

Forgetting that coordinates and IDs can disagree. A cross-reference table says A maps to B. Coordinates say A and B sit on different chromosomes or assemblies. Cross-reference tables can lag or reflect a different genome build. When the stakes are high, spot-check mappings by sequence identity or coordinate overlap.

Confusing canonical sequences with isoforms. If your proteomics search used a canonical-only FASTA, peptides unique to a non-canonical isoform were never searchable. No amount of downstream remapping fixes that. The isoform decision belongs at database construction, before the search.

Treating the mapping as an afterthought. Mapping is part of the analysis, with its own version, date, and parameters. An unversioned CSV named "conversion.xlsx" sent over email is not reproducible, and reviewers increasingly ask.

The general limitation worth stating once: identifier mapping decisions affect individual results and should be validated against the specifics of each dataset, with the organism, assembly, and database releases documented for every run.

A Decision Workflow

Apply this sequence in order. Stop at the first rule that applies.

  1. Are the data protein-level (peptides, protein abundances, protein sequences)? Start with UniProt and map outward.
  2. Are the data genome-level (counts against a GTF, variants, coordinates, regions)? Start with Ensembl and map outward, pinned to your annotation release.
  3. Do you need both vocabularies in one table? Build one bridge table, from the system that matches your raw data, and store it with the release versions of both databases.
  4. Are your inputs legacy or ambiguous identifiers? Map through UniProt accessions first, filtering by organism and activity status, and fall back to sequence-based mapping where identifiers fail [1].
  5. Are your inputs sequences rather than identifiers? Use sequence-based mapping against UniParc-class resources, which resolves cross-database identity at 100 percent sequence match [1].
  6. Are your inputs regions or positions? Use Ensembl coordinate tools, then resolve to gene and protein IDs second [2].
  7. Record in your methods: identifier types, organism and taxonomy ID, database releases and versions, mapping tool and date, and the count of unmapped inputs.

Frequently Asked Questions

Which system should I use for a proteomics dataset?

Use UniProt. Proteomics search engines query protein sequence databases, and UniProt proteomes are the standard source for those FASTA files, so your results arrive keyed to UniProt accessions already. Map from UniProt to gene symbols or Ensembl IDs only at the reporting stage.

Can I convert UniProt accessions to Ensembl gene IDs automatically?

Yes, two ways. The UniProt ID mapping tool and per-entry cross-reference tables convert UniProt accessions to Ensembl IDs directly, and BioMart can return UniProt attributes for Ensembl IDs in the other direction. Expect many-to-many relationships and resolve them with an explicit collapsing rule.

Why do some Ensembl IDs fail to resolve after a new release?

Ensembl updates annotation on a release cycle, and gene models can be merged, versioned up, or occasionally retired between releases. Record the version suffix and release number with your IDs, and remap old IDs through the archive or by coordinates when they stop resolving.

When should I use UniProt instead of Ensembl?

Use UniProt when the object of analysis is a protein sequence or a curated protein attribute, including proteomics, domain and pathway annotation, and sequence-based matching across databases. Use Ensembl when the object is a gene model, a transcript, a genomic coordinate, or a variant.

Is the mapping by sequence identity or by curated correspondence?

UniProt cross-references and UniParc-based services rest on exact sequence identity, which makes protein-level mapping precise at the sequence level [1]. Ensembl cross-references combine curated correspondences with gene-model relationships on the genome. Both can be many-to-many at the gene level.

Do most projects really need both systems?

Yes, in practice. Genomics outputs are keyed on Ensembl identifiers and proteomics outputs on UniProt accessions, so any transcriptomics-to-proteomics integration crosses between them at least once. Published workflows combine them in a single pipeline, using Ensembl resources for region-level queries and UniProt for functional and tissue-level annotation [2].

Sources

  1. The Protein Identifier Cross-Referencing (PICR) service: reconciling protein identifiers across multiple source databases.
  2. Cytogenomic mapping and bioinformatic mining reveal interacting brain expressed genes for intellectual disability.