I have goggled and is at a conclusion that windows 7 cannot format a drive >32GB with FAT32..I searched a lot but got results stating this limitation but none explained me the reason for this.I also came to know that linux can format it with a capacity upto 2TB(max cap FAT32 can have).My question is why windows not using the full capacity of 2TB?
-
1Seeing as there is no apparent technical limitation in FAT32, the limitation is probably just a semi-arbitrary limitation imposed by the Windows code. – Alexander O'Mara Nov 01 '15 at 08:01
-
But there would be some reason implying this restriction?Why not Linux does so then? – Omkar Nov 01 '15 at 08:06
1 Answers
This is an artificial limitation. For example, Microsoft documentation mentions that FAT32 does support a maximum capacity of 2TB for drives.
Quoting from their docs:
FAT32 provides the following enhancements over previous implementations of the FAT file system:
FAT32 supports drives up to 2 terabytes in size.
NOTE: Microsoft Windows 2000 only supports FAT32 partitions up to a size of 32 GB.
The same is true with the maximum amount of RAM memory a given version of Windows 7 will support. Reproducing the info from the Microsoft documentation, these are the artificial limitations they set:
+------------------------+-------------+--------------+
| Version |Limit on X86 | Limit on X64 |
+------------------------+-------------+--------------+
| Windows 7 Ultimate | 4 GB | 192 GB |
| Windows 7 Enterprise | 4 GB | 192 GB |
| Windows 7 Professional | 4 GB | 192 GB |
| Windows 7 Home Premium | 4 GB | 16 GB |
| Windows 7 Home Basic | 4 GB | 8 GB |
| Windows 7 Starter | 2 GB | N/A |
+------------------------+-------------+--------------+
With the exception of memory sizes for 32-bit architectures[1], there's AFAIK no real technical reason behind any of these artificial limitations. This is the result of high level business executives "creating value" for customers, if you buy into their lip service...
This is why GNU/Linux can and will format a drive to its maximum capacity without any complaints, as you found, because it won't ask you for more money and additional licenses just to do what any computer ought to be able to do out of the box w/o excuse.
Footnotes
[1] The 32-bit architectures do have a technical limitation in that they can only address up to 2^32 - 1
addresses, which is roughly 4GB. The memory limitations for the 64-bit architecture (and the 2GB for the x86) are the ones I'm calling "artificial".

- 5,915
- 1
- 25
- 53
-
The "Path too long" error is another example of these artificial limitations. – Alexander O'Mara Nov 01 '15 at 08:17
-
@AlexanderO'Mara: I think I had heard about that error, but have never encountered it myself. Then again, I'm a GNU/Linux person ^-^ – code_dredd Nov 01 '15 at 08:19
-
Yeah, can't say I've seen the error myself in many years, *nix all the way! Basically, there is an artificial limit to the number of characters in a path imposed in some portions of the Windows OS that leads to that error when paths exceed it. – Alexander O'Mara Nov 01 '15 at 08:23
-
Good explanation and also thanks for giving another example of path too long,mostly i have faced the second error while uncompressing rar files with very long path names. – Omkar Nov 01 '15 at 09:33
-
Remember that as the partition size goes up so does the FAT cluster size. Each file (or directory table) uses one or more clusters. On a 2TB volume your cluster size would be 8KB and your 1KB file would be stored as 1KB of data and 7KB of padding. Combined with the low maximum file size (one byte under 4GB without hacks) and lack of any corruption prevention mechanisms you're really better off using something a little more modern for any serious data storage. The 32GB limit may very well be to limit how much data you'll loose when the filesystem inevitably becomes corrupted. – davidg Nov 03 '15 at 02:18
-
A significant portion of this answer is incorrect. The only "artificial" limits Microsoft sets, as far as I'm aware, are those for the x64 editions and for Windows 7 Starter x86. The 4GB limit on the 32-bit editions is a "real" limitation: the maximum value for a 32-bit unsigned integer is 4,294,967,295 bytes, or just over 4GB, making it the largest addressable memory for a 32-bit CPU. See here: https://en.wikipedia.org/wiki/4,294,967,295#In-computing. Please edit the answer to reflect this. – Hashim Aziz Mar 09 '18 at 02:05
-
@Hashim I think you're misunderstanding. The table data with the limits for the 32-bit arch is simply part of the quoted info from the MS documentation. I'm not saying that the memory limits in the x86 version is an "artificial limitation" or implying it. Can you clarify what, exactly, I said that got you to understand it this way? – code_dredd Mar 09 '18 at 02:12
-
Your answer literally states: "Reproducing the info from the Microsoft documentation, these are the artificial limitations they set...", and: "AFAIK, there's no real technical reason behind any of these artificial limitations". You then suggest that the motive for the afore-mentioned limitations is Microsoft's greed. All of the above is demonstrably false; not all of the limitations in that table you reproduced are artificial, and all but one of the limitations for 32-bit Windows OSes are indeed technical limitations, making the answer as it stands significantly wrong. – Hashim Aziz Mar 09 '18 at 02:48
-
@Hashim I've edited the post to clarify that when I'm talking about artificial limitations, it specifically refers to the 64-bit architectures on memory. I thought the context was fairly clear, but apparently it was not like that for everyone, so I've made it more explicit. And BTW, the 2GB memory limit in the x86 *is* artificial. I think your interpretation of my original post was not as generous as it could've been, given the context. – code_dredd Mar 12 '18 at 00:06
-
I'm aware of the 2GB memory limit, I mentioned it in my comment and thought it was pretty clear I was talking about "the 4GB limit on the 32-bit editions" - my exact words from said comment. – Hashim Aziz Mar 12 '18 at 23:22
-
I'm confused as to how you could think my interpretation was not generous when I simply verbatim quoted back the parts of your answer that made the artificial claim after your initial comment to me first denied that claim - all I did was correct what you were saying by quoting your words to you you exactly as you said them. In any case, the edited answer is now accurate, I appreciate your cooperation and I've upvoted the answer. – Hashim Aziz Mar 12 '18 at 23:27
-
@Hashim I simply mentioned that, given the context, it was fairly straightforward to understand that what I was referring to w.r.t artificial limitations was on the x64 arch, not x86. Clearly, that was not explicit enough and the post was improved with your feedback. That said, I think you're being too defensive here and need to relax. No one here's attacking you for anything. Again, you need to be more generous in your interpretation of other people's comments, including these ones here where you're reacting defensively. In any case, I think we've clarified the issue and we're good to go. – code_dredd Mar 13 '18 at 10:00