EcFAT layers
The basic layers with EcFAT in your system.

The basic layers with EcFAT in your system.

EcFAT simple example

A simple example of how to use EcFAT.

The only thing you need to supply to EcFAT are three functions:
BlockDriver_ReadSector() and BlockDriver_WriteSector() reads and writes a block.
BlockDriver_GetVolumeInformation() is used by EcFAT to determine the block size and the number of blocks on the disk.

A simple example of how to use EcFAT.

EcFAT product box

Use the EcFAT file system on embedded systems to speed up development and increase quality when you store data in Flash memories, SD cards and USB sticks.

EcFAT is well-tested, fail-safe and reads/writes the industry standard FAT file system.

EcFAT includes:

  • ANSI C Source package with robust and well-tested code
  • All the features you will need
  • Extensive documentation
  • Personal technical support
  • Clear examples
  • Flexible licensing

Scroll down to read all features and to buy EcFAT. We have flexible licensing options to suit all needs.


Contact us for questions and licensing options


Robust and well-tested

For each change to the EcFAT source code and commit to our source repository a big batch of unit tests run automatically.

Currently 1260 tests are run with 71,000,000 checks that the code is functioning as intended. Tests are constantly added when we find bugs or add features.

Documentation online, as PDF, in header (.h) files and in source (.c) files

The documentation is available in all places where it might be useful.

Documentation is available online without login here and as a PDF file for printing.

Documentation is also available in the source before function declarations in the header files and before the function implementations in the source files.

Technical support via phone and e-mail

6 months of maintenance agreement is included with your purchase which gives you support and free upgrades during this time.

Once your maintenance time is up, you are free to renew it for 20% of the cost of a new license.

Platform-independent C source

EcFAT is delivered as platform independent C source so it is easy to integrate with the rest of your source.

Easy to use

The API is designed to be simple to use. Have a look at the documentation to get a sense of how it works.

Format file systems optimized for flash memories

EcFAT can format file systems that are optimized for flash memories. Format adjusts to the flash page size to minimize unnecessary page erases.

Documentation for ECF_Format

EcSD (SD driver) included

EcSD is included in the EcFAT package with examples of how to read and write SD cards.

Product page for EcSD

Documentation for EcSD

EcFAT Explorer for Windows

EcFAT Explorer lets you connect to your embedded system to read and write files.

It is very useful when you have a file system on a device that is hard to access (like a flash memory) and you need to debug the system.

EcFAT Boot included

EcFAT Boot is a smaller version of EcFAT intended to be used in bootloaders.

EcFAT Boot is designed to fit in a small bootloader. To reduce size it only supports short filenames and reading of files.

Samples included

Several samples are included to get you started.

Static memory design

All EmbCode products use a static memory design. This means that there is no need for a dynamic memory handler and that there never are any runtime errors from memory exhaustion.

Open several files simultaneously

EcFAT supports opening as many files as you like simultaneously.

No extra buffers are needed for each open file, you just need to store the file handle which is around 40 bytes per file.

FAT12, FAT16 and FAT32 support

Full support for FAT12/16/32.

EcFAT Lite supports FAT12 only and is intended to be used in smaller systems where you store data in a flash chip.

Journaling support for fail-safe systems

Journaling protects the file system data structures and prevents them from being corrupted. Even if a write is interrupted by something like a power loss.

Wear leveling support for flash memories

Wear leveling spreads the writes to a flash chip evenly over the entire area. This extends the life time of the chip and lets you use flash chips without built in wear leveling.

Bad block management

Some large flash chips are delivered with some blocks being faulty. This is to reduce the cost and yield of the chips.

EcFAT handles the bad blocks and replaces/remaps them when necessary.

TRIM support

EcFAT supports TRIM which notifies the blockdriver that a sector is no longer in use.

This lets the block driver prepare for big writes by pre-erasing sectors. It also allows the block driver to stop storing sectors that are no longer in use.

NAND/NOR Flash memory support

EcFAT uses wear-leveling, journaling, bad block management and TRIM to support NAND and NOR flash. Even if they are delivered with faulty blocks.

Mount several file systems

You may mount up to 26 file systems at the same time.

Long file name (VFAT) support

EcFAT supports long file names (also known as VFAT) but you can disable it to save space.

Built-in RAM cache

EcFAT has a built-in cache with a configurable size.

This vastly improves the speed of the file system but you can also minimize it to save RAM.

Partitioning support

EcFAT supports creating and using partitions. You can mount file systems from different partitions and you can initialize partition tables and create your own partitions.

You may even create several file systems on different partitions and use them simultaneously if you want to separate your data.

Multi-threading is fully supported so EcFAT will serialize the access to the block driver automatically for you.

Documentation for ECF_CreatePartition

Multi-thread support

EcFAT supports multiple threads. Example configurations are included for FreeRTOS.

Mount several file systems simultaneously

EcFAT allows you to mount several file systems simultaneously. This means that you can access an SD card while also having an internal flash file system.


EcFAT is available in two different version.

EcFAT Standard

Contains all features of EcFAT.

EcSD Lite is included.

EcFAT Lite

EcFAT Lite only supports FAT12 so will only support discs of limited sizes.

EcSD Lite is included.

License options

EcFAT/EcFAT Lite can be licensed in several different ways:

Developer license

For developer licenses you buy 1 license per developer. That developer is then free to use EcFAT in any number of projects in any volume. It is similar to buying say a compiler.

If the developer quits or changes assignment you may transfer the license.

One of the benefits of this is the developer is free to use EcFAT on other projects as well as part of his/hers personal toolkit.

Product license

The product license is for one product that your organization sells. You need to supply a name and a description for it. Any number of developers may work on the product and you may sell it in any volume.

Product line license

The product license is for one product line that your organization sells. You need to supply a name and a description for it. The general function of all the products in the product line must be the same. Any number of developers may work on the product and you may sell it in any volume.

Company license

For a company license, any number of developers may use EcFAT for any number of products in any volume.

Buying EcFAT

Below are prices for a 1-developer license. Contact us for questions and licensing options

Stock NoProductPrice
EFSDEcFAT Standard 3.0 (FAT12, FAT16 and FAT32 support)€1440
EFLDEcFAT Lite 3.0 (FAT12 support only)€480
Choose currency: SEK, NOK, EUR, GBP, USD