Convert LimeSurvey to Qualtrics (LSS to QSF)
Upload your LimeSurvey .lss file, review the imported groups, questions, and answer options, and download a Qualtrics-importable .qsf file. The generated QSF mirrors native Qualtrics exports so it passes import validation; platform-specific logic is flagged for manual rebuild.
The LSS to QSF problem, honestly stated
This migration usually runs in the opposite direction of the cost story: a lab standardizes on an institutional Qualtrics license, an agency inherits a client's LimeSurvey instrument, or a longitudinal study needs its questionnaire inside the Qualtrics XM ecosystem for panel and workflow integrations. The survey definition exists — tested, translated, field-proven — but it lives in an XML format Qualtrics has never heard of.
LSS is not a simple document: it is a dump of LimeSurvey's database tables. Question text lives in question_l10ns rows on LimeSurvey 6 (or inline columns on older installs), multiple-choice options are not stored as answers at all but as subquestions, and arrays split across subquestions (rows) and answers (columns). A converter has to understand those table relationships, not just the XML syntax. This importer handles both the LimeSurvey 6 localization layout and the legacy per-language layout, and reads M-question options from subquestions exactly as LimeSurvey stores them.
On the output side, Qualtrics is unforgiving: imports pass strict schema validation, and files missing SurveyEntry fields or reusing question IDs are rejected with errors like ESDEF10. The QSF produced here replicates the structure of genuine Qualtrics exports — complete metadata, unique QIDs, consistent block and flow references, and the Trash block — because that is what reliably clears validation.
Question type mapping: LimeSurvey → Qualtrics
| LSS code | LimeSurvey question | Qualtrics result |
|---|---|---|
| L | List (radio) | Multiple choice, single answer (MC/SAVR) |
| ! | List (dropdown) | Multiple choice dropdown (MC/DL) |
| M | Multiple choice (options stored as subquestions) | Multiple choice, multi answer (MC/MAVR) |
| S | Short free text | Text entry, single line (TE/SL) |
| T / U | Long / huge free text | Text entry, essay (TE/ESTB) |
| F | Array | Matrix, Likert single answer |
| A / B / C / E / H | Array variants (5-point, 10-point, yes/no, columns) | Matrix with the implied scale as columns |
| Y | Yes/No | Multiple choice with Yes/No options |
| N / K | Numerical input (single / multiple) | Text entry / form-style numeric input |
| 5 | 5-point choice | Single-answer scale question |
| R | Ranking | Rank order (RO) |
| X | Text display | Descriptive text block (DB/TB) |
Dual-scale arrays (type 1) import with the first scale only, and any type code outside this table degrades to a long-text question — both cases are named in the import warnings.
Migration steps
1. Export the survey structure from LimeSurvey
In LimeSurvey open the survey and choose Display/Export → Survey structure (.lss). Both LimeSurvey 6 files and legacy single-language files are supported.
2. Upload the .lss file
Upload the .lss with Qualtrics QSF as the target format. The file is parsed deterministically — groups, questions, subquestions, answers, and every language present in the file.
3. Review groups, questions, and options
Check that multiple-choice options (from subquestions), array rows and columns, and answer codes look right. Relevance equations and dual-scale arrays appear as warnings.
4. Download the .qsf file
Confirm the schema and download a QSF built to mirror native Qualtrics exports: full SurveyEntry metadata, unique QIDs, block flow, and a Trash block.
5. Import into a blank Qualtrics project
In Qualtrics choose Create project → Survey → Import a QSF file. Validate the structure against the LimeSurvey original, then rebuild flagged relevance conditions as Qualtrics display logic.
The manual-rebuild boundary
LimeSurvey's ExpressionScript can reference any question, use functions, and gate whole groups (grelevance). Qualtrics has no equivalent expression language — conditions are built in the display-logic and branch-logic editors. Translating between them automatically would produce logic that looks right and behaves wrong, which is worse than no translation. So every relevance equation other than the trivial "1" is kept verbatim on its question and surfaced as a warning in the review screen; group-level relevance is flagged the same way.
Treat the warning list as your rebuild worksheet: each entry names the question and shows the original expression, which is usually a direct hint for the equivalent Qualtrics condition. Assessments, quotas, participant tokens, and custom themes stay behind in LimeSurvey — they have no representation in a QSF survey definition.
Migration checklist
Before: export the .lss structure file (not the .lsa archive — archives include responses and are not survey definitions).
During review: verify M-question options and array rows/columns; scan warnings for relevance equations.
After import: validate in a blank Qualtrics project, rebuild logic, re-add translations, and preview a full response.
Reverse direction? See Qualtrics to LimeSurvey.
Format details: What is an LSS file · QSF file format