Abstract: A firmware provides a setup browser that generates a setup menu. An internal forms representation of setup data for rendering the setup menu is converted to markup language (ML) setup data. The ML setup data is provided to an application that provides a GUI for defining a modified setup UI for the firmware. The application provides a graphical, drag-and-drop, WYSIWYG, UI through which a user can edit existing forms and controls, create new forms and controls, and specify default values and other properties. When a user modifies the setup menu using the application, customized ML setup data is generated that defines the modified setup UI. The customized ML setup data is used to create setup data that is stored in a firmware device for use by the setup browser with the internal format representation of setup data to render the modified setup UI.