Reference articles on history, science, culture and more
Encyclopedia

GUID Partition Table

Computer data storage partitioning standard

Image credit is listed at the end of this article.

The GUID Partition Table (GPT) is a standard for the layout of partition tables of a physical computer storage device, such as a hard disk drive or solid-state drive. It is part of the Unified Extensible Firmware Interface (UEFI) standard.

It has several advantages over master boot record (MBR) partition tables, such as support for more than four primary partitions and 64-bit rather than 32-bit logical block addresses (LBA) for blocks on a storage device. The larger LBA size supports larger disks.

Some BIOSes support GPT partition tables as well as MBR partition tables, in order to support larger disks than MBR partition tables can support.

GPT uses universally unique identifiers (UUIDs), which are also known as globally unique identifiers (GUIDs), to identify partitions and partition types.

All modern personal computer operating systems support GPT. Some, including macOS and Microsoft Windows on the x86 architecture, support booting from GPT partitions only on systems with EFI firmware, but FreeBSD and most Linux distributions can boot from GPT partitions on systems with either the BIOS or the EFI firmware interface.

01History

The Master Boot Record (MBR) partitioning scheme, widely used since the early 1980s, had limitations when it came to modern hardware. The available size for block addresses and related information is limited to 32 bits. For hard disks with 512byte sectors, the MBR partition table entries allow a maximum size of 2 TiB (232 × 512bytes) or 2.20 TB (2.20 × 1012 bytes).

In the late 1990s, Intel developed a new partition table format as part of what eventually became the Unified Extensible Firmware Interface (UEFI). The GUID Partition Table is specified in chapter 5 of the UEFI 2.11 specification. GPT uses 64 bits for logical block addresses, allowing a maximum disk size of 264 sectors. For disks with 512byte sectors, the maximum size is 8 ZiB (264 × 512bytes) or 9.44 ZB (9.44 × 1021 bytes). For disks with 4,096byte sectors the maximum size is 64 ZiB (264 × 4,096bytes) or 75.6 ZB (75.6 × 1021 bytes).

In 2010, hard-disk manufacturers introduced drives with 4,096byte sectors (Advanced Format). For compatibility with legacy hardware and software, those drives include an emulation technology (512e) that presents 512byte sectors to the entity accessing the hard drive, despite their underlying 4,096byte physical sectors. Performance could be degraded on write operations, when the drive is forced to perform two read-modify-write operations to satisfy a single misaligned 4,096byte write operation. Since April 2014, enterprise-class drives without emulation technology (4K native) have been available on the market.

Readiness of the support for 4 KB logical sectors within operating systems differs among their types, vendors and versions. For example, Microsoft Windows supports 4K native drives since Windows 8 and Windows Server 2012 (both released in 2012) in UEFI.

MBR vs. GPT partitioning and boot sequence visualized (systems using BIOS firmware). See GRUB2.
MBR vs. GPT partitioning and boot sequence visualized (systems using BIOS firmware). See GRUB2.

02Features

Like MBR, GPT uses logical block addressing (LBA) in place of the historical cylinder-head-sector (CHS) addressing. The protective MBR is stored at LBA 0, and the GPT header is in LBA 1. The GPT header has a pointer to the partition table (Partition Entry Array), which is typically at LBA 2. Each entry in the partition table has the same size, which is 128 or 256 or 512, etc., bytes; typically this size is 128 bytes. The UEFI specification stipulates that a minimum of 16,384 bytes, regardless of sector size, are allocated for the Partition Entry Array. Thus, on a disk with 512-byte sectors, at least 32 sectors are used for the Partition Entry Array, and the first usable block is at LBA 34 or higher, while on a 4,096-byte sector disk, at least 4 sectors are used for the Partition Entry Array, and the first usable block is at LBA 6 or higher. In addition to the primary GPT header and Partition Entry Array, stored at the beginning of the disk, there is a backup GPT header and Partition Entry Array, stored at the end of the disk. The backup GPT header must be at the last block on the disk (LBA -1) and the backup Partition Entry Array is placed between the end of the last partition and the last block.

03MBR variants

Protective MBR (LBA 0)

For limited backward compatibility, the space of the legacy Master Boot Record (MBR) is still reserved in the GPT specification, but it is now used in a way that prevents MBR-based disk utilities from misrecognizing and possibly overwriting GPT disks. This is referred to as a protective MBR.

A single partition of type EEh, encompassing the entire GPT drive (where "entire" actually means as much of the drive as can be represented in an MBR), is indicated and identifies it as GPT. Operating systems and tools which cannot read GPT disks will generally recognize the disk as containing one partition of unknown type and no empty space, and will typically refuse to modify the disk unless the user explicitly requests and confirms the deletion of this partition. This minimizes accidental erasures. Furthermore, GPT-aware OSes may check the protective MBR and if the enclosed partition type is not of type EEh or if there are multiple partitions defined on the target device, the OS may refuse to manipulate the partition table.

If the actual size of the disk exceeds the maximum partition size representable using the legacy 32-bit LBA entries in the MBR partition table, the recorded size of this partition is clipped at the maximum, thereby ignoring the rest of the disk. This amounts to a maximum reported size of 2 TiB, assuming a disk with 512 bytes per sector (see 512e). It would result in 16 TiB with 4 KiB sectors (4Kn), but since many older operating systems and tools are hard coded for a sector size of 512 bytes or are limited to 32-bit calculations, exceeding the 2 TiB limit could cause compatibility problems.

Hybrid MBR (LBA 0 + GPT)

In operating systems that support GPT-based boot through BIOS services rather than EFI, the first sector may also still be used to store the first stage of the bootloader code, but modified to recognize GPT partitions. The bootloader in the MBR must not assume a sector size of 512 bytes.

04Partition table header (LBA 1)

GPT header format
OffsetLengthContents
0 (0x00)8 bytesSignature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL on little-endian machines)
8 (0x08)4 bytesRevision number of header - 1.0 (00h 00h 01h 00h) for UEFI 2.10
12 (0x0C)4 bytesHeader size in little endian (in bytes, usually 5Ch 00h 00h 00h or 92 bytes)
16 (0x10)4 bytesCRC-32 of header (offset +0 to +0x5B) in little endian, with this field zeroed during calculation
20 (0x14)4 bytesReserved; must be zero
24 (0x18)8 bytesCurrent LBA (location of this header copy)
32 (0x20)8 bytesBackup LBA (location of the other header copy)
40 (0x28)8 bytesFirst usable LBA for partitions (primary partition table last LBA + 1)
48 (0x30)8 bytesLast usable LBA for partitions (secondary partition table first LBA − 1)
56 (0x38)16 bytesDisk GUID in little endian
72 (0x48)8 bytesStarting LBA of array of partition entries (usually 2 for compatibility)
80 (0x50)4 bytesNumber of partition entries in array
84 (0x54)4 bytesSize of a single partition entry (usually 80h or 128)
88 (0x58)4 bytesCRC-32 of partition entries array in little endian
92 (0x5C)*Reserved; must be zeroes for the rest of the block (420 bytes for a sector size of 512 bytes; but can be more with larger sector sizes)

The partition table header defines the usable blocks on the disk. It also defines the number and size of the partition entries that make up the partition table (offsets 80 and 84 in the table).

05Partition entries (LBA 2-33)

GUID partition entry format
OffsetLengthContents
0 (0x00)16 bytesPartition type GUID (little endian)
16 (0x10)16 bytesUnique partition GUID (little endian)
32 (0x20)8 bytesFirst LBA (little endian)
40 (0x28)8 bytesLast LBA (inclusive, usually odd)
48 (0x30)8 bytesAttribute flags (e.g. bit 60 denotes read-only)
56 (0x38)72 bytesPartition name (36 UTF-16LE code units)

After the primary header and before the backup header, the Partition Entry Array describes partitions, using a minimum size of 128 bytes for each entry block. The starting location of the array on disk, and the size of each entry, are given in the GPT header. The first 16 bytes of each entry designate the partition type's globally unique identifier (GUID). For example, the GUID for an EFI system partition is C12A7328-F81F-11D2-BA4B-00A0C93EC93B. The second 16 bytes are a GUID unique to the partition. Then follow the starting and ending 64 bit LBAs, partition attributes, and the 36 character (max.) Unicode partition name. As is the nature and purpose of GUIDs and as per RFC 4122, no central registry is needed to ensure the uniqueness of the GUID partition type designators.

The 64-bit partition table attributes are shared between 48-bit common attributes for all partition types, and 16-bit type-specific attributes:

Partition attributes
BitContent
0Platform required (required by the computer to function properly, OEM partition for example, disk partitioning utilities must preserve the partition as is)
1EFI firmware should ignore the content of the partition and not try to read from it
2Legacy BIOS bootable (equivalent to active flag (typically bit 7 set) at offset +0h in partition entries of the MBR partition table)
3-47Reserved for future use
48-63Defined and used by the individual partition type

Microsoft defines the type-specific attributes for basic data partition as:

Basic data partition attributes
BitContent
60Read-only
61Shadow copy (of another partition)
62Hidden
63No drive letter (i.e. do not automount)

Google defines the type-specific attributes for ChromeOS kernel as:

ChromeOS kernel partition attributes
BitContent
56Successful boot flag
55-52Tries remaining
51-48Priority (15: highest, 1: lowest, 0: not bootable)

06Operating-system support

UNIX and Unix-like systems

Details of GPT support on UNIX and Unix-like operating systems
OS family Version or edition Platform Read and write support Boot support Note
FreeBSD Since 7.0 IA-32, x86-64, ARM Yes Yes In a hybrid configuration, both GPT and MBR partition identifiers may be used.
Linux Most of the x86 Linux distributions
Fedora 8+ and Ubuntu 8.04+
IA-32, x86-64, ARM Yes Yes Tools such as gdisk, GNU Parted, util-linux v2.23+ fdisk, SYSLINUX, GRUB 0.96 + patches and GRUB 2 have been GPT-enabled. Limited to 256 partitions per disk.
macOS Since 10.4.0 (some features since 10.4.6) IA-32, x86-64, PowerPC, Apple silicon Yes Yes Only Intel and Apple silicon Macs can boot from GPT.
MidnightBSD Since 0.4-CURRENT IA-32, x86-64 Yes Yes In a hybrid configuration, both GPT and MBR partition identifiers may be used.
NetBSD Since 6.0 IA-32, x86-64, ARM Yes Yes
OpenBSD Since 5.9 IA-32, x86-64, ARM Yes Yes
Solaris Since Solaris 10 IA-32, x86-64, SPARC Yes Yes
HP-UX Since HP-UX 11.20 IA-64 Yes Yes

Windows: 32-bit versions

Windows 7 and earlier do not support UEFI on 32-bit platforms, and therefore do not allow booting from GPT partitions.

Details of GPT support on 32-bit editions of Microsoft Windows
OS version Release date Platform Read or write support Boot support Note
Windows 9x 1995-08-24 IA-32 No No
Windows XP 2001-10-25 IA-32 No No
Windows Server 2003 2003-04-24 IA-32 No No
Windows Server 2003 SP1 2005-03-30 IA-32 Yes No MBR takes precedence in hybrid configuration.
Windows Vista 2006-07-22 IA-32 Yes No MBR takes precedence in hybrid configuration.
Windows Server 2008 2008-02-27 IA-32 Yes No MBR takes precedence in hybrid configuration.
Windows 7 2009-10-22 IA-32 Yes No MBR takes precedence in hybrid configuration.
Windows 8 2012-08-01 IA-32 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows 8.1 2013-08-27 IA-32 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows 10 2015-07-29 IA-32, ARM32 Yes Requires UEFI MBR takes precedence in hybrid configuration.

Windows: 64-bit versions

Limited to 128 partitions per disk.

Details of GPT support on 64-bit editions of Microsoft Windows
OS version Release date Platform Read and write support Boot support Note
Windows XP 64-Bit Edition for Itanium systems, Version 2002 2001-10-25 IA-64 Yes Yes MBR takes precedence in hybrid configuration.
Windows XP 64-Bit Edition, Version 2003 2003-03-28 IA-64 Yes Yes MBR takes precedence in hybrid configuration.
Windows XP Professional x64 Edition
Windows Server 2003
2005-04-25 x64 Yes No MBR takes precedence in hybrid configuration.
Windows Server 2003 2005-04-25 IA-64 Yes Yes MBR takes precedence in hybrid configuration.
Windows Vista 2006-07-22 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2008 2008-02-27 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2008 2008-02-27 IA-64 Yes Yes MBR takes precedence in hybrid configuration.
Windows 7 2009-10-22 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2008 R2 2009-10-22 IA-64 Yes Yes MBR takes precedence in hybrid configuration.
Windows 8
Windows Server 2012
2012-08-01 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows 8.1 2013-08-27 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows 10 2015-07-29 x64, ARM64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2016 2016-10-12 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2019 2018-10-02 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows Server 2022 2021-08-18 x64 Yes Requires UEFI MBR takes precedence in hybrid configuration.
Windows 11 2021-10-05 x64, ARM64 Yes Yes UEFI is a system requirement for Windows 11.
Windows Server 2025 2024-11-01 x64 Yes Yes UEFI is a system requirement for Windows Server 2025.

07Partition type GUIDs

"Partition type GUID" means that each partition type is strictly identified by a GUID number unique to that type, and therefore partitions of the same type will all have the same "partition type GUID". Each partition also has a "partition unique GUID" as a separate entry, which as the name implies is a unique id for each partition.

08Example

Here is an example of GUID Partition Table for a 512 GB NVM Express solid state drive as used with multi-booting configuration, containing an EFI system partition, a Microsoft Reserved Partition, three Microsoft Basic Data Partitions (one is Windows standard partition and two are hidden Windows Recovery Environment partitions), and three Linux partitions (including a swap partition):

label: gpt label-id: 96BB56B7-AE3C-4E94-986E-10E7F3CCA80B device: /dev/nvme0n1 unit: sectors first-lba: 34 last-lba: 1000215182 sector-size: 512 /dev/nvme0n1p1 : start= 2048, size= 532480, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=7885D52E-0F50-4E28-B058-8DCE7B7FF921, name="EFI system partition" /dev/nvme0n1p2 : start= 534528, size= 32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=5C34D099-E77A-4B46-9662-430D33E55AFF, name="Microsoft reserved partition" /dev/nvme0n1p3 : start= 567296, size= 419196928, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=109218B1-3097-4635-BE5F-044E28C2BCB0, name="Basic data partition" /dev/nvme0n1p4 : start= 419764224, size= 1669120, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=527B26E5-2768-444E-AB1F-ECB28201F3C8, attrs="RequiredPartition GUID:63" /dev/nvme0n1p5 : start= 421435392, size= 329410560, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=5C52E480-AEE7-437B-A136-53F8C946D5ED, name="Linux Stuff" /dev/nvme0n1p6 : start= 750845952, size= 243933184, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=023F3B88-D3D9-4E39-9F50-77F242410789, name="Linux Root" /dev/nvme0n1p7 : start= 994779136, size= 4194304, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=18F44D65-B28D-4871-AF02-DDBD96771460, name="Swap" /dev/nvme0n1p8 : start= 998973440, size= 1228800, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=D4A41B1A-2F28-4AE5-AC67-A2D98FB91E22, name="Basic data partition", attrs="RequiredPartition GUID:63"
Watch videos about GUID Partition TableExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article GUID Partition Table, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.