This document provides a tutorial on writing plugins for the ImageJ image analysis program. It covers getting started, the plugin concept and architecture in ImageJ, image representation and processing APIs, user interface tools like windows and dialogs, advanced topics like movie import/export and I/O plugins, and troubleshooting. The goal is to explain everything needed to develop custom plugins that extend the functionality of ImageJ. Example plugins are provided throughout to demonstrate key concepts.