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 condaconda 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)
- 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 exampleX:1:2000000). - If your IDs are purely numeric, set Numeric IDs treated as so the correct prefix is added automatically.
- To run several lists at once, put a FASTA-style header line starting with
>before each list. - Choose the organism (search by Latin or common name).
- Choose the statistical domain scope (the background set), the significance threshold method and the data sources (see below).
- 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
organismargument ("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)
- g:Profiler documentation, biit.cs.ut.ee/gprofiler/page/docs, read 2026-11-07.
- g:Profiler R client page, biit.cs.ut.ee/gprofiler/page/r, read 2026-11-07.
- Raudvere U. et al. g:Profiler: a web server for functional enrichment analysis and conversions of gene lists (2019 update). Nucleic Acids Research, doi:10.1093/nar/gkz369.







