Intro to Forms in ODK

Forms used in the ODK ecosystem are XML documents following the ODK XForms specification, a subset of the W3C XForms specification. (Example XForms are available for reference.)

Most ODK tools use the ODK Javarosa library to render forms. Form transfer between ODK components is governed by the OpenRosa API.

Because of the complexity of the XForms format, we do not recommend coding XForms directly in XML. The recommended process is:

  1. Begin with one of the JavaRosa-compliant build tools.
  2. Edit the XML only if necessary.
  3. Use ODK Form Validate to check that the edited XForm is well-formed and fully compliant.

JavaRosa-compliant build tools

Most ODK users design their forms in Excel, following the XLSForm specification. To convert XLSForms to XForms, you can use:


If you are comfortable with using the command-line, Pyxform is the most efficient XLSForm converter.

Non-XLSForm Javarosa builders

For simple forms, ODK Build is an online drag-and-drop form designer.