Skip to main content
v2026.11,858 entries · CC-BY 4.0
LAC HealthMedical & Research SuppliesReagents, PPE & instruments — chain-of-custody documented.Fast, traceable sourcing built for regulated research environments, from bench consumables to instrumentation.Shop lac.us CodeCASRAIlac.us

g:Profiler: Functional Enrichment Analysis Tool Explained

How to use g:Profiler for gene list enrichment: web steps, gprofiler2 code, background and g:SCS correction settings, and how to read results.

Written and maintained by CASRAI Editorial Board

Last updated

g:Profiler is a free web server from the University of Tartu (BIIT group) that takes a list of genes, proteins or genomic regions and reports which Gene Ontology terms, pathways and other annotations are over-represented in it. Researchers use it after a differential-expression, ChIP-seq or proteomics experiment to ask what the hits have in common. This page puts the web workflow, the R client and the reading of the output in one place. Details were read from the official documentation on 2026-11-07.

What it is used for in research

g:Profiler is a collection of tools under one address. The main one, g:GOSt, performs functional enrichment analysis (over-representation analysis) on a gene list. g:Convert translates identifiers between namespaces, and g:Orth maps genes to orthologs in another organism. In the R package gprofiler2 these are the functions gost(), gconvert() and gorth().

Web tool Task R function (gprofiler2)
g:GOSt Functional enrichment of a gene list gost(), plotted with gostplot()
g:Convert Identifier conversion gconvert()
g:Orth Orthology mapping between organisms gorth()

The annotation sources it searches include Gene Ontology (molecular function, biological process, cellular component; electronic IEA annotations can be excluded), Reactome, KEGG, WikiPathways, TRANSFAC, miRTarBase, CORUM (human, mouse, rat), Human Protein Atlas and Human Phenotype Ontology, and you can upload your own gene sets as a GMT file. It supports more than 400 species from Ensembl and Ensembl Genomes, with Homo sapiens as the default.

Install or access (official source only)

  • Web: biit.cs.ut.ee/gprofiler. No installation. The documentation lists the current data release (e114_eg62_p19_9dc92ac8, database updated 20/03/2026 when read); the database is updated about quarterly following Ensembl, and a beta site carries the newest developments.
  • R: install.packages("gprofiler2"), or with conda conda install -c conda-forge r-gprofiler2.
  • Python and other clients: the package name on PyPI is gprofiler-official; the API documentation is on the g:Profiler site under APIs.

Step-by-step task: run an enrichment analysis

In the web interface (g:GOSt)

  1. Paste your gene list into the query box. Identifiers are separated by whitespace (space, tab or newline) and are case-insensitive. You can mix protein, transcript and microarray IDs, SNP IDs, term IDs and chromosomal regions written as chromosome:start:end (for example X:1:2000000).
  2. If your IDs are purely numeric, set Numeric IDs treated as so the correct prefix is added automatically.
  3. To run several lists at once, put a FASTA-style header line starting with > before each list.
  4. Choose the organism (search by Latin or common name).
  5. Choose the statistical domain scope (the background set), the significance threshold method and the data sources (see below).
  6. Run the query and read the plot and the results table.

In R (gprofiler2)

The official R page gives this pattern, which mixes a region, a SNP, a term ID, an Ensembl gene ID and a gene symbol in one query:

library(gprofiler2)
gostres <- gost(query = c("X:1000:1000000", "rs17396340", "GO:0005005", "ENSG00000156103", "NLRP1"),
                organism = "hsapiens")
gostplot(gostres, capped = FALSE, interactive = FALSE)

gost() returns a named list: result is a data.frame of enrichment results and meta holds the query metadata. The same page documents these two functions with the argument names below:

gconvert(query = c("NLRP1"), organism = "hsapiens", target = "ENSG", mthreshold = Inf, filter_na = TRUE)
gorth(query = c("NLRP1"), source_organism = "mmusculus", target_organism = "hsapiens", numeric_ns = "ENTREZGENE_ACC")

Targets for gconvert() include UniProt, RefSeq, Entrez and HGNC namespaces, and microarray platforms are supported.

Choosing the background and the correction method

These two settings change which terms come out as significant, and the documentation describes them as follows.

Statistical domain scope (background)

Options are Only annotated genes (the default), All known genes, Custom, Custom over annotated genes and Custom over all known genes. If your experiment could only detect a subset of genes (for example genes on a targeted panel or expressed in the tissue), a custom background that reflects that subset is the setting designed for it.

Significance threshold (multiple-testing correction)

  • g:SCS (default): a method that accounts for the hierarchical structure of GO, with an experiment-wide α of 0.05; it is precomputed for lists up to 1000 genes.
  • Bonferroni: the more conservative option. See Bonferroni correction and multiple comparisons for the general trade-off.
  • Benjamini-Hochberg FDR: available, but the documentation notes it is less suitable for GO because the terms are hierarchical and overlapping.

An optional user threshold (default p = 0.05) is also offered; per the documentation it does not change the significance colouring.

Output and how to read it

The web result is an interactive Manhattan-style plot. Each circle is a term; the vertical axis is the negative log10 of the adjusted p-value, so higher means stronger evidence, and the circle size reflects the term size (the number of genes annotated to it). Hover over a circle for details and click it to pin the term to the results table below; a Detailed results view gives the full listing. In R, gostplot() draws the same kind of plot from gostres, and gostres$result is the table to filter or export.

Troubleshooting

  • Identifiers not recognised or ambiguous: purely numeric IDs need a namespace prefix; check the Numeric IDs treated as setting, or convert first with g:Convert / gconvert().
  • Wrong organism: the default is Homo sapiens; set the organism explicitly in both the web form and the organism argument ("hsapiens", "mmusculus").
  • Results differ from an older analysis: annotation databases are updated about quarterly, so results can change between releases. Record the version string and cite it.
  • Very long gene lists: g:SCS is precomputed only up to 1000 genes, per the documentation.

Free alternatives

Tool What it is CASRAI guide
Enrichr Web-based gene set enrichment analysis tool Enrichr explained
clusterProfiler R package for GO and KEGG enrichment analysis clusterProfiler guide
STRING Protein interaction database with functional enrichment STRING database guide

FAQ

How do I cite g:Profiler?

The g:Profiler site has a “Cite g:Profiler” page listing the publications to cite, including Raudvere et al., Nucleic Acids Research (2019), with earlier papers from 2016, 2011 and 2007. Also report the data version used.

What is gprofiler2?

gprofiler2 is the official R package for g:Profiler. It wraps g:GOSt, g:Convert and g:Orth as gost(), gconvert() and gorth().

Is there a Python version?

Yes: the PyPI package gprofiler-official, with the API documented on the g:Profiler site.

Can I use my own annotations?

Yes, by uploading a custom GMT file in the web interface.

Sources (official docs)

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about g:Profiler: Functional Enrichment Analysis Tool Explained

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.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →