7

Early builds of Microsoft Windows operating systems have a known "build string" attached to them for identification purposes. Web sites that focus on Beta software testing usually have complete listings (more or less so) of these build strings.

Here are only a few examples of what these build strings can look like for Windows 10, in order of their release to Beta testers.

  • 6.4.9879.fbl_release.141103-1722
  • 10.0.9926.fbl_awesome1501.150119-1648
  • 10.0.10014.winmain_prs.150205-1859
  • 10.0.10061.fbl_impressive.150410-2039
  • 10.0.10163.winmain_prs.150630-1700
  • 10.0.10166.fbl_impressive.150703-1818
  • 10.0.10176.16384.th1.150705-1526
  • 10.0.10240.16384.th1.150709-1700

I understand that the first group of digits represents the major version number, the second group is the minor, and the third group is the build number. These three can be easily revealed by running the winver applet from the Run prompt. But what is the meaning of the gobbledygook that follows?

What is the meaning of fbl_release, fbl_awesome, winmain_prs, and th1?

That second set of digits with a dash looks like dates. Are those compile time dates?

I am currently running Windows 10, the official release version that I got through Windows Update, as part of the free upgrade offering. I upgraded to Windows 10 from Windows 8.1. The reason being that I want to compare mine to the last one in that list.

By running the systeminfo command in cmd, I get this reading:

OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.10240 N/A Build 10240
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free

Why does it say I have "N/A"? No strings attached?!

1
  • By comparing the "OS Version" field to other Windows versions, it looks like that "N/A" thing is a place holder for a Service Pack string. Since there are no such things for Windows 10, and probably won't ever be any because of Microsoft's new release model for Windows, that will just read "N/A" or Not Available for years to come. It's a bit of a waste of characters when "10.0.10240" says it all (well, almost all, or I would not have posted this question).
    – Samir
    Aug 11, 2015 at 22:07

4 Answers 4

5

What is a Windows build string?

It's a set of characters that uniquely identifies a Windows build.

What's a build?...

A build refers to building a solution. That is: compiling source code into object code and linking object code into executable machine code. It's the end-product to the analysis, design and programming effort. However, it may not be the final product, because it may be revised several times before that happens. When it does, it's known as the final release, gold release, or in case of Microsoft software: RTM (release to manufacturing).

Ultimately, a build is the solution to a problem that can be solved in software! It is therefore better known simply as software. In this case it's the Windows system software — the operating system that very likely runs on your computer right now and makes it useful. Today's kids call it all "apps", originally a short form of "applications" or "application software", but it has taken on other meanings now as well. Grups simply call it "programs". To reuse a Swedish proverb, "a beloved child has many names."

It's also the name of the annual Microsoft developer conference.

How can the build string be read in Windows?

The build string is stored internally as a string value in the Windows registry. There are two kinds of build strings to be aware of. One is just called a build string and includes only the build number, so it's only numeric. The other one is sometimes called a full build string, because it also includes the branch name and compile time, or rather build time-stamp.

The following key in Windows registry holds the full build string of the running system.

HKLM\Software\Microsoft\Windows NT\CurrentVersion

There are two variables of interest here:

BuildLab:   10240.th1.150729-1800
BuildLabEx: 10240.16412.amd64fre.th1.150729-1800

What is the meaning of the build string?

In general, a build string contains the following segments: major version, minor version, build number, branch name, build date, build time.

In general, the scheme looks something like this:

[major].[minor].[build].[branch].[date]-[time]

I will examine a few examples now.

  • 6.4.9879.fbl_release.141103-1722

Here, the major version is 6, minor version is 4, build number is 9879. The name of the branch is fbl_release. It was built on 3 November 2014, at 17:22 local time.

  • 10.0.10014.winmain_prs.150205-1859

Major version here is 10, minor version is 0, build number is 10014. This is one of the first Windows builds that got the major version number 10. Microsoft flipped the major version number from 6 to 10 only one build earlier (build 10009). This is what gave Windows 10 its name. The branch name is winmain_prs and this is considered to be the main branch. It was build on 5 February 2015, at 18:59 local time.

  • 10.0.10240.16384.th1.150709-1700

Here we have major version 10, minor version 0 and build number 10240. I'm not quite sure what 16384 represents. This number appears in build strings of both Windows 8.1, Windows 8, Windows 7, as well as Windows Vista when it's an RTM build or nearly RTM. I call it the "magic number". But I guess it's some kind of "micro build" or build subversion. This one was built on 9 July 2015, 20 days before the general availability of Windows 10. It was pushed to Windows Insider testers on 15 July, and it started rolling out on 29 July to those who reserved a free upgrade copy of Windows 10.

  • BuildLab: 10240.th1.150729-1800
  • BuildLabEx: 10240.16412.amd64fre.th1.150729-1800

This is the one I am currently using to type this answer. This is also an RTM build, because it's build 10240. But as you can see from the build date, this one is actually more so than the previous one that was pushed out on 15 July to testers. Look at the date! It says 29 July 2015. That's the release date of Windows 10! And look at the magic number! It's 16412! Compare that to 16384. So by this I know this is a later release.

The BuildLabEx value includes slightly more information than the examples before it. It includes the magic number or build subversion, and name of processor architecture. So in this case, it's AMD64, a.k.a. EM64T or Intel 64, that is: a 64-bit processor. The "fre" likely stands for "free", that is: production kernel, as opposed to "checked" development kernel.

So the expanded scheme looks something like this:

[major].[minor].[build].[subversion].[architecture].[branch].[date]-[time]

But what is the meaning of the branch names?...

  • winmain_prs
  • fbl_impressive
  • fbl_awesome
  • fbl_release
  • th1

The winmain_prs is the "Windows main" branch. This is the main, stable and ready for release branch that all past and future Windows versions are developed from (at least in case of Windows NT family). The "prs" might stand for partners, or production ready and stable. I am really just guessing! There is not much information about this on the web.

I am pretty sure that "fbl" stands for "future build". These are work in progress, unstable branches. They go under cute names like "impressive", "awesome" and "release" (the last one not so cute). I think that "impressive" and "awesome" are used to add new features, while "release" is used to debug and stabilize before it's reverse integrated to the main branch.

The "th1" branch is new. I'm not sure what it means. But I do know that it's only the RTM build that hangs on this branch. So it may be some sort of indication of the change in Windows release model. I'm referring to the shift towards Windows as a service.

Update: Build 10525 has recently been released on "th2" branch. The "th" is apparently a short for "threshold" which is the codename for Windows 10. The "th1" appears to be the general public release, while "th2" is the insider preview release branch.

Why are build strings useful?

They allow for exact identification of Windows builds, down to the branch and compile time. This makes tracking down small changes very easy, because each change to the code, however small, that gets compiled, linked, built and released also gets a new build string that identifies it. Build strings are mostly useful to Beta testers. Because small and frequent changes to the code are made during the testing phase of the development cycle.

Once the final released has been made, the full build strings becomes of little interest. Instead, the main thing of interest is the major, minor and build number. This helps identify the "version" of the running Windows system. This is what third-party Windows apps are using to identify the version of Windows they are being installed on or run on. This is different from the Windows marketing name, such as "Windows XP" or "Windows Vista".

3
  • 1
    I hope someone finds this useful. It took me quite some time to compile this. So I hope it's worth something to someone. I know it touches a bit on software development and versioning, but it's really just about running Beta versions of Windows and figuring out your build string. And what's a "super user" if he never runs Beta tests? If some Beta scener finds some errors in this, please post a comment. And please enlighten me on the meaning of "prs" and "th1".
    – Samir
    Aug 12, 2015 at 12:38
  • I have just spotted a new "th2" branch. The newly released preview build 10525 is part of that branch. The "th" is a short for "threshold" which we all know is the code name used for Windows 10. So there we go, one abbreviation demystified, and one more to go.
    – Samir
    Aug 22, 2015 at 20:07
  • fbl stands for "Feature Branch Level" not "Future Build" or "Feature Build Lab" Jun 5, 2019 at 14:58
3

The meaning of the

fbl_release

and similar shows from which branch that build was released. For example if you are Microsoft partner that develops apps (ISV) you were getting builds from the Impressive branch you show in your post. Other branches were used for OEM partners and the winmain is usually the main branch where everythign gets merged at some point before shipping RTM.

For more details on branching see MSDN

Some of the other names are future release builds, since I have NDA, I can't share the details.

You will not see the branch, detail info in product that is RTM - it is used for dev purposes only. If you would continue to get the beta builds, the information is on there

4
  • So which branch is RTM built from then? From "winmain"? What does "fbl" stand for? I can only assume that "prs" stands for partners. What's "th"? And can you confirm that the 6 digits that follow are the compile dates? What are the last 4 digits? Time of the day maybe?... if so, it looks like Microsoft often worked overtime, and sometimes late into the night! ;-) Nightly builds! Ha ha! Just to get that thing out to us.
    – Samir
    Aug 11, 2015 at 21:17
  • I'm sorry if I'm asking too much here. Please don't disclose something you're not supposed to. I really wouldn't want you to get arrested! ;-) Or to lose your contract.
    – Samir
    Aug 11, 2015 at 21:24
  • 1
    There is a key in Windows registry named BuildLab, and another named BuildLabEx. Is this what I think it is? Or is it stored as a non-string value? The first one here is 10240.th1.150729-1800. I guess that answers the question of date and time. It says 150729, that is 29 July 2015, when Windows 10 was set to release. The second one here is 10240.16412.amd64fre.th1.150729-1800. AMD64 is architecture, of course. What's "fre"? French? Mine is English though.
    – Samir
    Aug 11, 2015 at 21:37
  • 1
    What's 16412? Micro build? Build subversion? That ticker looks interesting. Mainly because it's higher than 16384 with which my PC had some major power management issues. So it seems a bit more evolved, and in fact I don't have those issues with 16412, now on final release.
    – Samir
    Aug 11, 2015 at 21:40
2
Get-ComputerInfo -Property 'WindowsBuildLabEx'

Output example

18362.1.amd64fre.19h1_release.190318-1202

The Get-ComputerInfo cmdlet was introduced in Windows PowerShell 5.1.

1

To avoid running regedit you can query it from the terminal:

PS C:\Users\Louis> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    BuildLabEx    REG_SZ    21343.1000.amd64fre.rs_prerelease.210320-1757

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .