XLSForm is a form standard created to help simplify the authoring of forms in Excel. XLSForms are simple to get started with but allow for the authoring of complex forms. Forms designed with Excel can be converted to XForms that can be used with ODK tools.

To design your form, refer to the XLSForm form design documentation. Once the form has been designed, use XLSForm Online, XLSForm Offline, or if you are comfortable on the command line, pyxform.

XLSForm Online

We recommend starting with XLSForm Online converter because it is always up-to-date and allows you to preview what the form will look like.

Use XLSForm Online.

XLSForm Offline

XLSForm Offline converter is a great option for users who do not have a reliable connection or may need to design forms offline.

Download XLSForm Offline.


There is a validation option in the XLSForm Offline that requires Java. To enable this option, download and install Java and ensure Java is in your PATH. See How do I set or change the PATH for more.


Your anti-virus may report that XLSForm Offline has a virus. This is a false positive that is triggered because virus writers sometimes use the same components we use. You can confirm the safety of XLSForm Offline by using the free and unbiased VirusTotal. You may also use XLSForm Online as an alternative.

On macOS 10.7 or later, you may get a dialog on startup warning you that the XLSForm Offline is from an unidentified developer. Control-click or right click the icon of the app to bypass this dialog. See About Gatekeeper for more.


pyxform is a Python library used as a library in XLSForm Online and XLSForm Offline.

For those who want to convert forms at the command line, pyxform can be installed directly from the command line using pip:

$ pip install pyxform

The xls2xform command can then be used:

$ xls2xform path_to_XLSForm output_path


Use pyxform together with adb to quickly convert an XLSForm and load it to a device's Collect directory. Once you have both tools installed, convert and push in a single line:

$ xls2xform form-name.xlsx form-name.xml && adb push form-name.xml <collect-directory>/forms/form-name.xml