Article authored by Casper Manes.

Instead of looking for answers all over the Internet, old-school sysadmins like to rely on command-line tools. With err.exe, figuring out error codes has never been easier.

One of the absolutely most useful command-line tools I have ever seen, and which I use almost every day, is one that actually came out so long ago. If it were an operating system, it would be in extended support today; it will run on anything from Windows 2000 all the way up to Windows 10, and can be used to troubleshoot so much more than just Exchange, so it's a real shame it's not included by default in every O/S build Microsoft releases.

Fortunately, you can easily grab it from Microsoft whenever you need it, so it's never too far away, and it weighs in at a surprisingly slim 1.6MB when extracted, or 809KB to download. And yes, I am talking about the Microsoft Exchange Server Error Code Look-up tool, or err.exe for short, one of the best tools you can have when working with any Microsoft product.

What is err.exe?

The err tool is a little command line based tool that performs lookups for error codes against around 170 sources, including operating system and application headers. Despite its 2008 release date, it actually was last compiled in early 2003, which you would think would make this tool ancient and archaic and relatively useless.

Fortunately, that is NOT the case, as the error codes used by the devs at Microsoft have a rich legacy and lineage that extends through to today, so even though you may be using Windows 10, most of the numeric errors you encounter today in logs or the cmd prompt can still be checked for more information using this tool.

How do I get it?

You can download the err tool from https://www.microsoft.com/en-us/download/details.aspx?id=985. It's only 809KB to download, and is, for all intents and purposes, self-contained. The self-extracting executable does include the EULA and a very basic Word document (and it's so old it still uses a DOC instead of a DOCX format), but all you really need is the .exe file.

Where should I put it?

Copy the err.exe to anywhere that is in your %PATH%, %systemroot%\system32 or to your home directory, or anywhere else from where you'd be able to call it from the cmd prompt. I also keep a copy in a "cmdlinetools" directory in my Dropbox, which I install on every workstation I use, and then update my %PATH% to include so I can get to err.exe and a bunch of other great tools right at my fingertips. Just remember it's a cmdline tool, so don't go double-clicking it and expect to get anywhere.

How do I use it?

Open a command prompt (administrative level is not required) and simply type err followed by the particular error code you are curious about. Those codes can be in just about any format you could encounter, including:

  • decorated hex (0x54f)
  • implicit hex (54f)
  • ambiguous (1359)
  • exact string (=ERROR_INTERNAL_ERROR)
  • substring (:INTERNAL_ERROR)

Err will go check each of the header tables from 172 sources it is compiled with, and return all matches. If you want to narrow the results down, you can specify a particular table using "/(tablename)" but frankly, I have never done that. I can usually parse the responses quicker than I can go and search online which specific tablename I might want to use. Here's an example for one of my favorite errors:

Err shows me right away that this means "Access is denied" and, as it turns out, I've tried several times to get that as my vanity license plate, only to get an error 5 back from the DMV. Oh well!

You'll find the err tool to be much faster to use than your favorite search engine, and often, just getting the meaning of an error code is enough for you to know what you need to do next. So, don't waste another moment, download err from https://www.microsoft.com/en-us/download/details.aspx?id=985, drop it into your path, and the next time you get an ugly hex string error, look it up the easy way.

The content of this article is intended to provide a general guide to the subject matter. Specialist advice should be sought about your specific circumstances.