Developing a New Format Reader/Writer with the FME Plug-in SDK

Liz Sanderson
Liz Sanderson
  • Updated

Introduction

If you want to develop a new format reader or writer for use within FME, a custom transformer should be your first choice, as it uses the FME interface and existing functionality. See the Creating a New Format Reader/Writer in FME article for more details on the available options.  If your transformer requirements go beyond existing functionality, you can utilize the FME Plug-in SDK to create a transformer with either Python, C++, or Java.

Step-by-step Instructions

1. Install the FME Plug-in SDK

Install the FME Plug-in SDK on Windows. The SDK includes a comprehensive set of developer resources, all located in the pluginbuilder folder of your FME installation directory (e.g., C:\apps\fme\pluginbuilder).

On macOS or Linux systems, the SDK is automatically installed with FME. The resource paths are:

  • macOS: /Library/FME/<version>/pluginbuilder/samples/doc
  • Linux: /opt/<FME install folder and version>/pluginbuilder/samples/doc

2. Become Familiar with FME

Becoming familiar with FME is the most important prerequisite for successful plug-in development. You can find more information about training courses and free on-demand training on our website.

3. Decide on Which Language for the Plug-in

Decide whether you want to implement your plug-in in Python, C++, or Java. Safe Software uses C++ for the majority of its plug-in development and recommends using C++ to its partners.

4. Review Worksheets 

Fill out the Format Plug-in Development Worksheets, located in <FME>\pluginbuilder\samples\doc. This is a great starting point to help guide you through the implementation process.

5. Follow the Getting Started Guide

Follow the Getting Started Guide, which is located in <FME>\pluginbuilder\samples\doc. If you do not see the pluginbuilder directory, you will need to reinstall FME with the SDK option enabled

Use the rename_format.py script to generate a skeleton for your new format reader/writer. This is located in <FME>\pluginbuilder\samples\cpp\code\FMEReaderWriter\myformat. Note: This tool is currently only available for C++ projects.

You can also use other resources available to you through the SDK. These are located in the pluginbuilder folder's subdirectories and are available for C++, Java, and Python. They include:

  • API Documentation
  • Sample factory plug-in (.fmx), which also demonstrates how to access keywords
  • TFS Reference Plug-ins. These are based on the Text Feature Store format and are distributed both as source code and as compiled binaries, so they can be used for testing right out of the box. They demonstrate how to handle rich geometry models, fixed or variable attribute schemas, settings dialog input, and coordinate system handling.

6. Manually Configure Plug-in on FME Flow 

The FME Plug-in SDK offers developers maximum flexibility for running plug-ins with all of FME. If you would like to test your format against FME Flow and are using a distributed architecture, the license must be manually configured; i.e., the FME Flow Administrator must license the plug-in on each engine.

Was this article helpful?

We're sorry to hear that.

Please tell us why.

As of January 14th, 2026, comments on knowledge base articles have been closed. To make sure questions don’t get missed and to enable more community support, we’ve moved discussions to the FME Community. If you have a question or a comment about this article, please create a new post or create a support ticket.