Sparse file is a file containing large blocks of zero data. If a file is marked as sparse, NTFS does not store the blocks marked as zeros, so sparse files are ideally suited for representing huge files with relatively small areas of non-zero data. Large zero areas (or just areas we don't care about) are marked as sparse zeros and don't require any disk space.
To illustrate the concept let's use FlexHEX to create a large (in fact the largest possible) file containing only sparse zeros. If we right-click it in the Explorer window and select Properties, we can see that the size of the file and the size of the disk space it uses are very different:
Note that no matter how little disk space the file uses, for any application it is just a regular 16 terabytes long file.
You can convert a stream to sparse or back to non-sparse with the Sparse command found in the program's Stream menu. To insert block of sparse zeros use the Insert Zero Block command in the Edit menu.
Please note that the actual sparse block layout may differ from what you created. FlexHEX lets you enter zero blocks of any size, but the file system will rearrange them on the cluster or buffer boundaries. As soon as you save the file, FlexHEX will read back the actual layout of the sparse blocks and update its edit window accordingly.
A file may contain both sparse and non-sparse streams. The system considers the file sparse if it contains at least one sparse stream (not necessarily the unnamed one).