SRP vs XLSForm

XLSForm works.
SRP is better.

XLSForm got ODK surveys out of XML and into spreadsheets. SRP takes the next step — out of spreadsheets and into plain text that any researcher can read, write, and version control. Your ODK workflow stays exactly the same.

✓ Exports to XForm ✓ ODK compatible ✓ KoboToolbox compatible Free to use No account required

The difference

See it for yourself.

The same survey, authored two ways. One is a spreadsheet. One is a text file. Ask yourself which one you'd rather hand to a colleague, review in a pull request, or read six months from now.

XLSForm (survey sheet)
typenamelabelrequiredrelevant
select_one yesnoown_phoneDo you own a smartphone?yes
select_one os_listphone_osWhich operating system?yes${own_phone} = 'yes'
integerhours_dailyHours per day on phone?yes${own_phone} = 'yes'
textcommentsAny other comments?

list_namenamelabel
yesnoyesYes
yesnonoNo
os_listandroidAndroid
os_listiosiOS
os_listotherOther
SRP
SingleSelect "own_phone" do
  text "Do you own a smartphone?"
  required

  option "Yes" do
    segment "phone_owner"
  end
  option "No"
end

SingleSelect "phone_os" do
  text "Which operating system?"
  show_only_if "phone_owner"
  required

  option "Android"
  option "iOS"
  option "Other"
end

Number "hours_daily" do
  text "Hours per day on phone?"
  show_only_if "phone_owner"
  required
end

OpenEnded "comments" do
  text "Any other comments?"
end

XLSForm splits your survey across two sheets — questions and choices live apart. In SRP, everything is in one place, in the order it happens.

XLSForm — skip logic with XPath
typenamelabelrelevant
select_one age_grpage_groupAge group?
select_one edueducationEducation level?${age_group} != 'under18'
select_one employemploymentEmployment status?${age_group} != 'under18' and ${education} != 'none'

XPath expressions must be written by hand. Errors are silent — the form just doesn't behave as expected.
SRP — segments and show_only_if
SingleSelect "age_group" do
  text "Age group?"

  option "Under 18"
  option "18–34" do
    segment "adult"
  end
  option "35+" do
    segment "adult"
  end
end

SingleSelect "education" do
  text "Education level?"
  show_only_if "adult"

  option "Primary"
  option "Secondary" do
    segment "has_edu"
  end
  option "Tertiary" do
    segment "has_edu"
  end
end

SingleSelect "employment" do
  text "Employment status?"
  show_only_if "adult", "has_edu"
end

SRP conditional logic reads like English. XPath expressions in XLSForm are powerful but error-prone — a typo produces no warning, just wrong behavior in the field.

Feature comparison

Head to head.

Feature XLSForm SRP
Human-readable syntax
Version control friendly (Git, diff)
Works in any text editor Requires spreadsheet app
Conditional logic readability XPath expressions Plain English
Real-time validation Limited
Questions and choices co-located Split across sheets
Exports to XForm / ODK
Works with ODK Collect
Works with KoboToolbox
AI-assisted generation Coming soon
Free to use

Zero switching cost

Keep everything you already have.

SRP is a better way to author surveys — not a new collection platform. Your existing ODK infrastructure, devices, and servers stay exactly as they are. You just write surveys differently.

→ ODK Collect

SRP exports to valid XForm XML. Load it into ODK Collect exactly as you do today.

→ KoboToolbox

Upload the exported XForm to KoboToolbox. No changes to your deployment workflow.

→ Any XForm platform

The XForm export is standard-compliant. If it accepts XLSForm today, it accepts SRP-generated XForm.

The logic of your survey lives next to the questions it governs — not three sheets away in a column called 'relevant'.

— From the SRP design principles

Fair questions

We know what you're thinking.

"My whole team knows XLSForm. Switching has a cost."

SRP is intentionally readable. If a researcher can read an XLSForm, they can read SRP — usually faster. And with AI-assisted generation on the way, describing a survey in plain language and getting SRP back will be faster than opening a spreadsheet.

"I have hundreds of existing XLSForms."

You don't need to migrate anything. Use SRP for new surveys. Your existing XLSForms keep working exactly as they do today. When a survey needs a major revision, that's a natural time to rewrite it in SRP.

"XLSForm is a widely supported open standard. Is SRP stable?"

A fair concern. SRP is actively developed and the language specification is stable. SRP files are plain text — if you ever needed to move away, your survey logic is readable and portable. You're never locked into a binary format.

"Does SRP support complex logic like geopoint or entities?"

SRP covers the question types and logic patterns used in the vast majority of field surveys. Features like geopoint and ODK Entities are XForm-specific capabilities with no direct SRP equivalent yet — the export guide documents exactly what is and isn't supported.

Try it in 30 seconds.

Open the Playground, write a few questions in SRP, and export to XForm. No account. No charge. Just a better way to write surveys.

Open the Playground Read the Docs