# win-guid

> Windows legacy GUID parser

Latest version **0.2.1** (published 2026-01-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install win-guid
pnpm add win-guid
yarn add win-guid
bun add win-guid
```

## Health

**Score 50/100 (C)** — status: stable.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.2.1 |
| Published | 2026-01-29 |
| First published | 2026-01-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Dependencies | 0 |
| Unpacked size | 10.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Borewit |
| Maintainers | borewit |
| Keywords | GUID, Windows, COM, CFBF, registry, UEFI, objectGUID, GPT, endianness, OLE, binary |

## Links

- npm: https://www.npmjs.com/package/win-guid
- Repository: https://github.com/Borewit/win-guid
- Homepage: https://github.com/Borewit/win-guid#readme
- Issues: https://github.com/Borewit/win-guid/issues
- npm.io page: https://npm.io/package/win-guid

## Alternatives

- [@progress/kendo-ooxml](https://npm.io/package/@progress/kendo-ooxml.md) — 152.1K weekly downloads
- [@progress/kendo-react-ripple](https://npm.io/package/@progress/kendo-react-ripple.md) — 8.0K weekly downloads
- [@progress/kendo-react-orgchart](https://npm.io/package/@progress/kendo-react-orgchart.md) — 4.3K weekly downloads
- [@praxisui/dynamic-fields](https://npm.io/package/@praxisui/dynamic-fields.md) — 2.4K weekly downloads
- [@mesalvo/react-ui](https://npm.io/package/@mesalvo/react-ui.md) — 1.7K weekly downloads

## Recent versions

- 0.2.1 (latest) — 2026-01-29
- 0.2.0 — 2026-01-17
- 0.1.3 — 2026-01-13

## README

[![NPM version](https://img.shields.io/npm/v/win-guid.svg)](https://npmjs.org/package/win-guid)
[![Node.js CI](https://github.com/Borewit/win-guid/actions/workflows/nodejs-ci.yml/badge.svg)](https://github.com/Borewit/win-guid/actions/workflows/nodejs-ci.yml)
[![npm downloads](http://img.shields.io/npm/dm/win-guid.svg)](https://npmcharts.com/compare/win-guid?start=365)

# win-guid

A module for encoding and decoding **Windows legacy GUIDs** using the **Windows GUID byte layout**,
a mixed-endianness format used by several long-standing Microsoft and firmware standards, including:

- [Component Object Model (COM)](https://en.wikipedia.org/wiki/Component_Object_Model)
- [Object Linking and Embedding (OLE)](https://en.wikipedia.org/wiki/Object_Linking_and_Embedding)
- [Compound File Binary Format (CFBF, Structured Storage)](https://en.wikipedia.org/wiki/Compound_File_Binary_Format)
- [GUID Partition Table (GPT)](https://en.wikipedia.org/wiki/GUID_Partition_Table)
- [Unified Extensible Firmware Interface (UEFI)](https://en.wikipedia.org/wiki/UEFI)
- [Windows Registry](https://en.wikipedia.org/wiki/Windows_Registry) binary GUID values
- [Active Directory](https://en.wikipedia.org/wiki/Active_Directory) objectGUID values

This is commonly needed when working with Microsoft file and storage formats, such as `.asf`, `.doc`, `.xls`, `.ppt`,
and other binary formats based on OLE/COM Structured Storage (CFBF),
where GUIDs are stored in Windows byte order rather than [RFC 9562](https://www.rfc-editor.org/rfc/rfc9562.html)-style UUID order.

## Windows legacy GUID byte layout vs RFC 9562 UUID byte layout

The table below shows how GUID `00112233-4455-6677-8899-AABBCCDDEEFF` is serialized as an [RFC 9562](https://www.rfc-editor.org/rfc/rfc9562.html) UUID versus a Windows GUID:

| UUID / GUID type        | Serialized byte layout (hexadecimal)              |
|-------------------------|---------------------------------------------------|
| RFC 9562 UUID layout    | `00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF` |
| Windows GUID layout     | `33 22 11 00 55 44 77 66 88 99 AA BB CC DD EE FF` |

Windows legacy GUID layout reorders only the first three fields (32-bit, 16-bit, 16-bit). The remaining 8 bytes are stored as-is.

For [RFC 9562](https://www.rfc-editor.org/rfc/rfc9562.html) compliant UUIDs (network byte order), use [uuid](https://github.com/uuidjs/uuid) instead.

## Installation

```bash
npm install win-guid
```

## Usage

### Parse a GUID string

Parses a canonical GUID string:
```js
import { parseWindowsGuid } from "win-guid";

const bytes = parseWindowsGuid("00020906-0000-0000-C000-000000000046");
```
into a 16-byte Uint8Array using Windows GUID byte order.
- Input is validated strictly
- Case-insensitive
- Throws an error on invalid input

### Use the Guid helper class

Creates a GUID from a canonical GUID string.
```js
import { Guid } from "win-guid";

const guid = Guid.fromString("00020906-0000-0000-C000-000000000046");
```

## API

`parseWindowsGuid(guid: string): Uint8Array`

Parses a canonical GUID string:
```js
const bytes = parseWindowsGuid("00020906-0000-0000-C000-000000000046");
```

into a 16-byte `Uint8Array` using Windows GUID byte order.

- Input is validated strictly
- Case-insensitive
- Throws Error on invalid input

`class Guid`

Creates a GUID from a canonical GUID string.

```js
const guid = Guid.fromString("00020906-0000-0000-C000-000000000046");
```

`guid.toString(): string`

Converts the GUID back into the canonical string form.

- Always uppercase
- Round-trips cleanly with fromString

```js
guid.toString();
```
Outputs something like:
```
00020906-0000-0000-C000-000000000046`
```

`guid.bytes: Uint8Array`

Provides access to the raw 16-byte GUID in Windows legacy GUID byte order.

```js
const bytes = guid.bytes;
```

## Licence

This project is licensed under the [MIT License](LICENSE.txt). Feel free to use, modify, and distribute as needed.

---
_Source: https://npm.io/package/win-guid · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
