01 - General

Offline Surveys is very easy to use. You just create your surveys at LimeSurvey and Offline Surveys then converts them into a special structure so they can be used offline.

After having collected responses using your Android device(s) you can easily sync all data from your local device with the main Limesurvey server with just one click

Offline Surveys is optimized for phones and tablets and will work wit any device running Android OS 21 or later (launched in 2014).
We are also planning to make Offline Surveys available for older Android OS releases.

Offline Surveys is compatible with LimeSurvey ver:2.0 (released in 2012) or more

02 - Features

Offline Surveys supports nearly all Limesurvey question types. There are only two exceptions:

  1. The File Upload question is not supported yet because the LimeSurvey API only supports syncing survey responses, uploading files using the API is not doable yet.
  2. The map question type based on the multi short text question is not supported because it requires loading map data from an external source which does not work for a tool that is intended to be used offline.

Offline Surveys supports all  LimeSurvey question types and nearly all LimeSurvey features but to port a LimeSurvey survey to OfflineSurveys, certain requirements have to be met. The app will guide you step by step on how to adjust required settings at LimeSurvey.

Yes, it does. All LimeSurvey Expression Manager Features which work properly in LimeSurvey’s “All in One” mode will work fine wen using the survey at Offline Surveys.

When running a survey offline there are some minor technical limitations. We have created an overview of current Limitations and Workarounds for you.

03 - HowTos

We have documented this process for you in detail at the How to add new survey page.

Offline Surveys will guide you through this process step by step and will tell you how to adjust your survey at LimeSurvey acordingly.

If you prefer to adjust these settings before setting up your survey please check the required survey settings.

There are some known errors when adding a new survey. For all of these issues we have added an error description at the linked website and there we also explain how to fix these.

The feature to sync responses can automatically upload new responses to the server once Internet connection is available. The required settings are documented at How to sync responses.

Besides all LimeSurvey question types Offline Surveys also supports various Android multimedia questions (check the screenshots available here). These can be used to enrich your surveys if you run them using Offline Surveys.

We have created some examples and detailed instructions for you to easily add these questions to your LimeSurvey surveys.

When using multiple devices to collect data using Offline Surveys and later syncing all data on a central server, you will not know which interviewer entered a certain data set. To collect this information you can simply add a mandatory short text question at the very beginning of your survey so the interviewer always has to enter his/her details.

If you do not want to show that additional question at the main online survey (which was cached at Offline Surveys) you can set the question to hidden after the survey was cached. Just edit the question at LimeSurvey and at the advanced survey settings set “Always hide this question” to Yes.

If you want to create a new LimeSurvey user to use with the Offline Surveys app you have to make sure that the new user is assigned to your survey(s) and has sufficient rights to:

  1. Read survey settings
  2. Add responses

At the Limesurvey admin interface at least these rights have to be set:

LimeSurvey user rights

You can now share any Limesurvey survey you have cached at your Android device. Just click the share icon:


This Generates a QR code that you can send to different participants…

This QR code will include

  • Settings for Adding Survey (Survey URL, LimeSurvey  username + password, bypass SSL)
  • Sync settings (FTP host, port, username, password…etc.)

Later, you can add a survey by scanning QR code using camera, or scanning QR code from a saved image

OfflineSurveys supports having a “Previous” button since version 1.20 (released 2016-08-28). It is a little hidden though. Some background information:

When caching the survey, the all-in-one mode is required, but at that survey mode there actually is no “Previous” button (that wouldn’t make sense). For that reason, we can’t make use of the common previous button (it simply doesn’t exist when caching).

So to go back to a previous page when running a survey with OfflineSurveys, simply press the device back button down left at the very bottom. It should then show you the app’s “Previous” button feature.

Here are some facts about OfflineSurveys

  • A survey on OfflineSurveys can exist forever, even if the original survey on LimeSurvey was removed, or deactivated or expired, as long as the survey was not refreshed on OfflineSurveys (using “refresh survey” option)
  • When you refresh a survey on OfflineSurveys there are the potential outcome
    1. The survey on LimeSurvey is inactive/deleted/expired/unreachable: you get a caching error on OfflineSurveys and can’t use this survey anymore
    2. No changes to the original LimeSurvey survey: nothing happens
    3. you added/removed a question/subquesion to the original LimeSurvey survey: OfflineSurveys will acknowledge the change and will ask for permission to delete the existing responses so it can construct a new responses table that is fit for the changes
    4. minor design/text/color changes: will be reflected on OfflineSurveys without the need to delete/reconstruct responses table

Our Recommendation for changing the survey is:

  1. Instruct your surveyors not to press “refresh survey” option for the following xx days (the time you need to make necessary changes)
  2. deactivate your survey on Limesurvey and do all the necessary changes you would like
  3. have your new survey tested on a new device, make sure that it works well on OfflineSurveys
  4. Instruct your surveyors to first export/email all the data that’s there on the local device, then press “refresh survey” option, the changes should reflect on OfflineSurveys

OfflineSurveys supports multilingual surveys (since 2017/version 1.32)

While LimeSurvey fully supports multilingual surveys and switching between different languages, there are some technical limitations for running such surveys offline e.g. switching the language at survey runtime means loading the new language texts from the server which is not possible when running a survey offline.

For running a survey with multiple languages you have to add each survey language variation as a stand-alone survey at the OfflineSurveys app. For example survey …/limesurvey/index.php/867775 comes with languages AR, EN and DE and thus needs to be added 3 times:

  • …/limesurvey/index.php/867775?lang=ar
  • …/limesurvey/index.php/867775?lang=en
  • …/limesurvey/index.php/867775?lang=de

When later syncing the data of the different language versions with the main Limesurvey system, all the response details will be added to the same survey at Limesurvey (the one with survey ID 867775). So even if you run different language versions of a survey at OfflineSurveys, the data will later be merged at Limesurvey automatically.

Sometimes there are several changes to a survey which was already activated and cached at OfflineSurveys. Now if  there are several users doing data collection using that survey, not everyone may have refreshed the local survey version so there can be people collecting data based on an older survey version.

If you want to know which survey version was used you can do the following:

  1. Add a question of type equation.
  2. At the question text list the version number.
  3. At the question help text use the editor’s source code feature to add the following code at the help text:
  4. Now the question should not be visible anymore but the version detail will still be stored at the response details.

You can download this sample survey for testing (simply right-click and select “Save as…“).

04 - Pricing and licenses

The FREE version of Offline Surveys offers nearly the same features like the customized PRO version. The only limitation of the FREE version is a max number of responses that can be synced and surveys that can be locked (max = 10). But there is no limit at OfflineSurveys regarding:

  • the number of surveys you can use
  • the number of questions at your surveys
  • the number of Android multimedia questions you can use
  • the number of responses you can collect
  • features for exporting and emailing responses

We are only charging for features required by enterprises (AutoSync and Kiosk Mode)

You can easily turn any FREE version of OfflineSurveys into a PRO version by entering a license key (visit our online shop for purchasing a key) or you can add a new license key to renew your license (Attention: Adding a new key overrides the old one).

Note that our keys are valid for unlimited devices. You have to enter the key only once and all other devices loading surveys from the same domain will automatically receive the same key which unlocks the PRO version at that device.

Please follow these steps:

  1. Add your survey to OfflineSurveys.
  2. Click the key icon top right.
  3. You will be asked for an activation code. Just copy and paste the key you were provided into that field.
  4. A list of all custom domains currently used at your OfflineSurveys app will show. Select one of them and all surveys from the selected domain will automatically be marked as PRO on all devices which are loading surveys from the same domain.
    This means that you only have to enter the key once at one single device.

The current license status and license expiry date are shown at the main dashboard, below the survey title:

You can get a new license at our online license shop.
Instructions on how to enter a new license key can be found at our FAQ: https://www.offlinesurveys.com/ufaqs/enter-purchased-license-key-pro-version

05 - Advanced Topics

When doing surveys on location one often uses questions asking for the interviewer name or the current location. Usually you have to enter these details manually for every new data set every time. Not a lot of fun…
With OfflineSurveys you can save time by pre-filling these details from the previous response. The pre-filling feature is available since version 1.25 and currently supports all Limesurvey question types besides:

  • Date
  • Sliders
  • File upload
  • Array checkboxes

Adding the feature to your survey for using it at the OfflineSurveys app is simple, it just takes 2 steps:

  1. LimeSurvey: Make sure your question has class “prefill” added. At newer LimeSurvey versions there is a setting at the Display section to add your own CSS class:

    For LimeSurvey versions older than v2.50 add this code to the question or question help text using the source code mode of the LimeSurvey editor (don’t forget to enclose  JS code in script tag as in picture below):

    $(document).ready(function() { var questionObj = $(“#question” + {QID}); questionObj.addClass(“prefill”); })


  2. OfflineSurveys: Activite the “Auto fill survey” feature under Manage Survey > Preferences of your survey:

Sometimes you want to run the same survey online (using a web browser) and offline (using OfflineSurveys). The advantage is that all responses will be saved at one single survey and you do not need to merge data from different surveys later. So question is “How can we use the best matching question types which can be different online and offline?” For example a barcode question available at OfflineSurveys only should become a numeric question at the online survey? Another example is the Android camera question. You can’t use that question type when running the survey with your PC’s browser so that question types has to be turned into a file upload question.

The solution to these problems is a JavaScript function called Android.getVersionCode()

  • At OfflineSurveys the version code will be returned
  • Whe using the web browser an exception will be thrown (because this method only exists at OfflineSurveys)

Since this may sound a little technical, we have created a demo survey OfflineSurveys or Web browser.lss That sample surveydemonstrated how to detect whether a survey is run online or offline Using OfflineSurveys. It uses the following 3 questions:

  1. switch: is a hidden Short-Text Question that uses the JS function:Android.getVersionCode() to set the answer text value to either offlinesurveys or web. You need to add this question to your survey only once, preferably as the first question and you can then use it for conditionally showing follow up questions using expressions like {switch.value} (this will output either offlinesurveys or web as a simple text string) or {if(switch.value==’web’,’You are using a browser’,’You are running this survey at OfflineSurveys’)} (this will output either text A or B) or even use it within JavaScrip, example: 
    if (LEMval(‘switch.value’)  == ‘offlinesurveys’) { doOfflineLogic(); } else { doWebLogic(); }
    This will call either function doOfflineLogic() or doWebLogic() which you can use for further actions.
  2. equation: is an equation question that changes its text using equations only. It simply outputs a text like: I am running on {switch.value} 
  3. camera: is a more complex example. It is a file upload question that uses both the Limesurvey Expression Manager syntax and JavaScript to switch between the file upload option for web browsers and the special Android multimedia question for using the device’s camera with OfflineSurveys.


  1. You can use on event “render” that OfflineSurveys fire when showing a question or a Group
  2. You can instruct OfflineSurveys to close survey and consider it as Complete by calling saveResults(true)
  3. Make sure no questions are mandatory, otherwise there will be an error saving the survey
  4. This question cannot be hidden (Always Show this question -> Off)

Your code should look similar to this… also available for download as sample LimeSurvey Question