Direct comparison
GRCh38 vs hg38 vs b37: Naming Guide
GRCh38 and hg38 are the same assembly; b37 is the older one. The chr-prefix trap that breaks pipelines even when coordinates match.
Written and maintained by CASRAI Editorial Board
Last updated
Ask CASRAI · included with Regulatory Radar
Ask about GRCh38 vs hg38 vs b37: Naming Guide
Ask CASRAI answers research-administration questions and cites the passages behind every claim — and says so when the corpus does not cover something, instead of guessing. It comes with a Regulatory Radar subscription at $29 a month, alongside the daily digest of regulatory changes and the dashboard of what changed.
150 questions a day, on this site, over the API, or inside your own tools through the CASRAI MCP server.
Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.
How do GRCh38 (GRC), hg38 (UCSC), b37 / GRCh37 (prior assembly) compare side by side?
The table below compares GRCh38 (GRC), hg38 (UCSC), b37 / GRCh37 (prior assembly) across 10 procurement-relevant dimensions, from what it actually is through recommended default for new pipelines.
Side-by-side comparison
| Dimension | GRCh38 (GRC) | hg38 (UCSC) | b37 / GRCh37 (prior assembly) |
|---|---|---|---|
| What it actually is | The Genome Reference Consortium's official name for the current major human reference assembly, released December 2013. | UCSC’s name for that exact same GRC release — not a different assembly, just a different distribution and naming convention. | Shorthand for GRCh37, the assembly GRCh38 replaced. Not the same coordinates as GRCh38/hg38. |
| Same underlying coordinates as | hg38 (identical) | GRCh38 (identical) | hg19 — and coordinate-incompatible with GRCh38/hg38 |
| Chromosome naming convention | Commonly bare contig names in NCBI/Ensembl-style files: 1, 2, X, MT (no "chr" prefix). | UCSC-style files use "chr"-prefixed names: chr1, chr2, chrX, chrM. | GATK/1000 Genomes-style b37 distributions also drop the prefix: 1, X, MT — same convention as GRCh38-style files, different assembly. |
| Mitochondrial contig name | MT | chrM | MT |
| Released / maintained by | Genome Reference Consortium (GRC) — NCBI, the Wellcome Sanger Institute, and EMBL-EBI | UCSC Genome Browser group, mirroring the GRC's GRCh38 release under UCSC's own hg-numbered naming scheme | GRC (as GRCh37); the b37/human_g1k_v37 file packaging convention comes from the 1000 Genomes Project and was widely propagated through GATK's legacy resource bundles |
| First released | December 2013 | December 2013 (same release as GRCh38) | February 2009 |
| Where you’ll typically encounter this naming | NCBI, Ensembl, GATK/Broad resource bundles, most current population-genetics reference files | UCSC Genome Browser downloads, UCSC Table Browser, tooling and teaching pipelines built around UCSC tracks | Legacy 1000 Genomes Project files, older GATK bundles (human_g1k_v37), clinical pipelines that have not migrated off GRCh37 |
| What breaks if naming is mixed | A bare-name GRCh38 file will not join, intersect, or annotate cleanly against a chr-prefixed hg38 file by contig name — same coordinates, mismatched name strings, so name-matching tools fail or silently skip records. | Same mismatch in the other direction: a chr-prefixed hg38 file will not match GRCh38-style annotation resources by name. | Mixing b37 with hg19 hits the identical chr-prefix mismatch (both GRCh37-coordinate); mixing b37 with anything GRCh38/hg38-based additionally has the real coordinate incompatibility from the assembly change itself. |
| Correct fix for a naming mismatch | Rename contigs to add the "chr" prefix if needed (bcftools annotate --rename-chrs, samtools reheader, or a targeted sed/awk pass) — a string operation, never a liftover. | Rename contigs to strip the "chr" prefix if needed, same tools — again a rename, not a coordinate conversion. | Renaming fixes a b37-vs-hg19 naming mismatch; it does NOT fix b37-vs-GRCh38/hg38, which needs an actual liftover (see hg19 vs hg38). |
| Recommended default for new pipelines | Yes — current standard assembly; use bare-contig NCBI/Ensembl-style files unless a specific tool requires the UCSC convention. | Yes for tooling that specifically expects UCSC’s chr-prefixed convention — same assembly as GRCh38, just repackaged. | No — legacy assembly; see hg19 vs hg38 for full migration guidance. |
Common questions
Common questions about GRCh38 (GRC) vs hg38 (UCSC) vs b37 / GRCh37 (prior assembly)
Are GRCh38 and hg38 different genome assemblies?
+
No. hg38 is UCSC's name for the same assembly the Genome Reference Consortium calls GRCh38 — same December 2013 release, same underlying sequence and coordinates. The two names refer to identical genomic content; they differ only in naming convention and which organization distributes the files.
Is b37 the same as GRCh38?
+
No. b37 is shorthand for GRCh37, the assembly the Genome Reference Consortium released in February 2009 and that GRCh38 replaced in December 2013. b37 and GRCh38 (or hg38) are coordinate-incompatible — a position number in one does not point to the same base in the other. Mapping between GRCh37/b37 and GRCh38/hg38 is a genuine coordinate conversion (liftover), covered in depth in this site's hg19 vs hg38 comparison.
Why does a GRCh38 file sometimes read "chr1" and sometimes just "1"?
+
Because GRCh38 and hg38 name the same coordinates but get packaged under different chromosome-naming conventions. UCSC-style hg38 distributions prefix contig names with "chr" (chr1, chrX, chrM); NCBI/Ensembl-style GRCh38 distributions, and most GATK/Broad resource bundles built on GRCh38, typically omit the prefix (1, X, MT). Both describe the identical assembly — only the naming string differs.
Will a tool built for chr-prefixed files silently misbehave on non-prefixed files of the same assembly?
+
Yes, and this is the specific trap worth knowing: most alignment, variant-calling and annotation tools match reference sequences by name, not by coordinate content. Feeding a bare-"1" GRCh38 file into a pipeline configured for "chr1" hg38 references typically produces an outright contig-mismatch error, or in a loosely-configured tool, silently drops every record on the mismatched contigs — it does not quietly remap coordinates, because there's no coordinate conversion needed; only the label is wrong.
How do I fix a chr-prefix mismatch?
+
Rename the contigs — a string operation, not a liftover, since the underlying coordinates are already identical. Common approaches: bcftools annotate --rename-chrs with a mapping file, samtools reheader on a BAM’s @SQ lines, or a one-line sed/awk pass over a BED or VCF’s chromosome column. Never run a liftover chain file to fix this — that tool converts between genuinely different assemblies (GRCh37↔GRCh38), and running it on a same-assembly naming mismatch accomplishes nothing.
Which naming convention should a new pipeline standardize on?
+
Either is fine as long as it is used consistently and documented. Bare-contig GRCh38 is the more common convention in NCBI/Ensembl/GATK-centric pipelines; chr-prefixed hg38 is common wherever UCSC Genome Browser tracks or tools are in the mix. The failure mode is not picking the "wrong" one — it is mixing files from both conventions in the same pipeline without renaming.








